OSDN Git Service

ラップタイムリストをスクロールできるようにする。
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / stopwatch / WearableActivityController.java
index 7c74bb6..a986bad 100644 (file)
@@ -1,14 +1,11 @@
 package net.osdn.gokigen.joggingtimer.stopwatch;
 
 import android.Manifest;
+import android.annotation.SuppressLint;
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.os.Vibrator;
-import android.preference.PreferenceManager;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
-import android.support.wearable.activity.WearableActivity;
 import android.util.Log;
 import android.widget.ImageButton;
 import android.widget.ListView;
@@ -28,6 +25,14 @@ import java.util.ArrayList;
 
 import static android.content.Context.VIBRATOR_SERVICE;
 
+import static net.osdn.gokigen.joggingtimer.utilities.SelectReferenceViewModeDialog.PREF_KEY_DISPLAY_LAPGRAPHIC;
+import static net.osdn.gokigen.joggingtimer.utilities.SelectReferenceViewModeDialog.PREF_KEY_REFERENCE_TIME_SELECTION;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.preference.PreferenceManager;
+
 /**
  *
  *
@@ -38,7 +43,6 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     private final String TAG = toString();
     private final String PREF_KEY_TIMER_STARTED = "TMR_START";
     private final String PREF_KEY_TIMER_INDEXID = "TMR_INDEX";
-    private final String PREF_KEY_DISPLAY_LAPGRAPHIC = "DISP_LAPGRPH";
 
     private SharedPreferences preferences = null;
     private final ButtonClickListener clickListener = new ButtonClickListener();
@@ -58,7 +62,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     }
 
     @Override
-    public void setup(WearableActivity activity, IClickCallback callback, IDatabaseReloadCallback dbCallback)
+    public void setup(AppCompatActivity activity, IClickCallback callback, IDatabaseReloadCallback dbCallback)
     {
         this.preferences = PreferenceManager.getDefaultSharedPreferences(activity);
         this.dbCallback = dbCallback;
@@ -73,7 +77,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
      *
      *
      */
-    private void setupPermissions(WearableActivity activity)
+    private void setupPermissions(AppCompatActivity activity)
     {
         if ((ContextCompat.checkSelfPermission(activity, Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED) ||
                 (ContextCompat.checkSelfPermission(activity, Manifest.permission.WAKE_LOCK) != PackageManager.PERMISSION_GRANTED)) {
@@ -90,12 +94,12 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
      *
      *
      */
-    private void setupHardwares(WearableActivity activity)
+    private void setupHardwares(AppCompatActivity activity)
     {
         // バイブレータをつかまえる
         vibrator = (Vibrator) activity.getSystemService(VIBRATOR_SERVICE);
 
-        //// パワーマネージャをつかまえる
+        // パワーマネージャをつかまえる
         //powerManager = (PowerManager) activity.getSystemService(POWER_SERVICE);
     }
 
@@ -103,7 +107,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
      *
      *
      */
-    private void setupScreen(WearableActivity activity)
+    private void setupScreen(AppCompatActivity activity)
     {
         TextView mTextView = activity.findViewById(R.id.text);
         if (mTextView != null)
@@ -122,25 +126,22 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
      * データベースのセットアップ
      */
     @Override
-    public void setupDatabase(final WearableActivity activity, final boolean isInitialize)
+    public void setupDatabase(final AppCompatActivity activity, final boolean isInitialize)
     {
         database = new TimeEntryDatabaseFactory(activity, this).getEntryDatabase();
-        Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run() {
-                try
-                {
-                    if (isInitialize)
-                    {
-                        // 既存のデータベースを消去する場合、、、
-                        TimeEntryDatabaseFactory.deleteDatabase(activity);
-                    }
-                    database.prepare();
-                }
-                catch (Exception e)
+        Thread thread = new Thread(() -> {
+            try
+            {
+                if (isInitialize)
                 {
-                    e.printStackTrace();
+                    // 既存のデータベースを消去する場合、、、
+                    TimeEntryDatabaseFactory.deleteDatabase(activity);
                 }
+                database.prepare();
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
             }
         });
         thread.start();
@@ -149,7 +150,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     /**
      * リスナのセットアップ
      */
-    private void setupListeners(WearableActivity activity, IClickCallback callback)
+    private void setupListeners(AppCompatActivity activity, IClickCallback callback)
     {
         try
         {
@@ -177,11 +178,13 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
             ListView lap = activity.findViewById(R.id.laptime_list_area);
             //lap.setOnClickListener(clickListener);
             lap.setOnLongClickListener(clickListener);
+            //lap.setOnTouchListener(clickListener);
 
             LapTimeGraphView graphView = activity.findViewById(R.id.graph_area);
             graphView.setOnTouchListener(clickListener);
             graphView.setOnClickListener(clickListener);
             graphView.setOnLongClickListener(clickListener);
+
         }
         catch (Exception e)
         {
@@ -196,22 +199,19 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     private void closeDatabase()
     {
         Log.v(TAG, "closeDatabase()");
-        Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run() {
-                // DBのクローズ実行
-                if (isReadyDatabase)
+        Thread thread = new Thread(() -> {
+            // DBのクローズ実行
+            if (isReadyDatabase)
+            {
+                isReadyDatabase = false;
+                try
+                {
+                    Log.v(TAG, "closeDatabase() EXECUTE...");
+                    database.close();
+                }
+                catch (Exception e)
                 {
-                    isReadyDatabase = false;
-                    try
-                    {
-                        Log.v(TAG, "closeDatabase() EXECUTE...");
-                        database.close();
-                    }
-                    catch (Exception e)
-                    {
-                        e.printStackTrace();
-                    }
+                    e.printStackTrace();
                 }
             }
         });
@@ -223,7 +223,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
      *
      */
     @Override
-    public void exitApplication(WearableActivity activity)
+    public void exitApplication(AppCompatActivity activity)
     {
         Log.v(TAG, "exitApplication()");
         closeDatabase();
@@ -239,12 +239,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
                 return;
             }
 
-            Thread thread = new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    vibrator.vibrate(duration);
-                }
-            });
+            Thread thread = new Thread(() -> vibrator.vibrate(duration));
             thread.start();
         }
         catch (Exception e)
@@ -302,7 +297,6 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
         }
     }
 
-
     @Override
     public void addTimeStamp(long count, long lapTime, long diffTime)
     {
@@ -333,6 +327,35 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     }
 
     @Override
+    public int getReferenceTimerSelection()
+    {
+        try
+        {
+            return (preferences.getInt(PREF_KEY_REFERENCE_TIME_SELECTION, 0));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (0);
+    }
+
+    @Override
+    public void setReferenceTimerSelection(int id)
+    {
+        try
+        {
+            SharedPreferences.Editor editor = preferences.edit();
+            editor.putInt(PREF_KEY_REFERENCE_TIME_SELECTION, id);
+            editor.apply();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
     public void setupReferenceData()
     {
         try
@@ -353,6 +376,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
         }
     }
 
+    @SuppressLint("Range")
     @Override
     public void prepareFinished(boolean isReady)
     {
@@ -391,13 +415,15 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
         }
     }
 
+    @SuppressLint("Range")
     private void loadReferenceData()
     {
         // load reference data
         try
         {
+            int id = getReferenceTimerSelection();
             ArrayList<Long> refList = null;
-            Cursor cursor = database.getAllReferenceDetailData();
+            Cursor cursor = database.getAllReferenceDetailData(id);
             if (cursor != null)
             {
                 refList = new ArrayList<>();
@@ -406,7 +432,7 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
                     refList.add(cursor.getLong(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_TIME_ENTRY)));
                 }
             }
-            dbCallback.referenceDataIsReloaded(refList);
+            dbCallback.referenceDataIsReloaded(id, refList);
         }
         catch (Exception e)
         {
@@ -451,27 +477,22 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
         }
     }
 
-
     @Override
     public void createIndex(final String title, final long startTime)
     {
         final String memo = "";
         final int icon = 0;
         Log.v(TAG, "createIndex() " + title + " " + startTime);
-        Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run()
+        Thread thread = new Thread(() -> {
+            if (isReadyDatabase)
             {
-                if (isReadyDatabase)
+                try
                 {
-                    try
-                    {
-                        database.createIndexData(title, memo, icon, startTime);
-                    }
-                    catch (Exception e)
-                    {
-                        e.printStackTrace();
-                    }
+                    database.createIndexData(title, memo, icon, startTime);
+                }
+                catch (Exception e)
+                {
+                    e.printStackTrace();
                 }
             }
         });
@@ -482,20 +503,16 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     public void appendTimeData(final long elapsedTime)
     {
         Log.v(TAG, "appendTimeData() " + " " + elapsedTime);
-        Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run()
+        Thread thread = new Thread(() -> {
+            if (isReadyDatabase)
             {
-                if (isReadyDatabase)
+                try
                 {
-                    try
-                    {
-                        database.appendTimeData(recordingIndexId, elapsedTime);
-                    }
-                    catch (Exception e)
-                    {
-                        e.printStackTrace();
-                    }
+                    database.appendTimeData(recordingIndexId, elapsedTime);
+                }
+                catch (Exception e)
+                {
+                    e.printStackTrace();
                 }
             }
         });
@@ -506,20 +523,16 @@ class WearableActivityController implements IWearableActivityControl, ITimeEntry
     public void finishTimeData(final long startTime, final long endTime)
     {
         Log.v(TAG, "finishTimeData() " + startTime + " " + endTime);
-        Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run()
+        Thread thread = new Thread(() -> {
+            if (isReadyDatabase)
             {
-                if (isReadyDatabase)
+                try
                 {
-                    try
-                    {
-                        database.finishTimeData(recordingIndexId, startTime, endTime);
-                    }
-                    catch (Exception e)
-                    {
-                        e.printStackTrace();
-                    }
+                    database.finishTimeData(recordingIndexId, startTime, endTime);
+                }
+                catch (Exception e)
+                {
+                    e.printStackTrace();
                 }
             }
         });