OSDN Git Service

基準データのラップタイム編集ロジックを搭載。(データの更新はまだ)
authorMRSa <mrsa@myad.jp>
Sat, 31 Mar 2018 01:18:29 +0000 (10:18 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 31 Mar 2018 01:18:29 +0000 (10:18 +0900)
12 files changed:
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailHolder.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailRecord.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IDetailEditor.java [new file with mode: 0644]
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailAdapter.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/ITimeEntryDatabase.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/TimeEntryDatabase.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/utilities/CreateModelData.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/utilities/CreateModelDataDialog.java
wear/src/main/res/values-ja/strings.xml
wear/src/main/res/values-round/strings.xml
wear/src/main/res/values/strings.xml

index 6e64daa..3fd27fe 100644 (file)
@@ -28,6 +28,11 @@ class DetailHolder  extends RecyclerView.ViewHolder
         itemView.setOnClickListener(listener);
     }
 
+    void setOnLongClickListener(View.OnLongClickListener listener)
+    {
+        itemView.setOnLongClickListener(listener);
+    }
+
     void setLapCount(String message)
     {
         lapView.setText(message);
index b12d83b..05474da 100644 (file)
@@ -3,6 +3,9 @@ package net.osdn.gokigen.joggingtimer.recorddetail;
 import android.util.Log;
 import android.view.View;
 
+import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabase;
+import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
+
 /**
  *
  *
@@ -10,51 +13,61 @@ import android.view.View;
 public class DetailRecord implements View.OnClickListener, View.OnLongClickListener
 {
     private final String TAG = toString();
+    private final long indexId;
     private final long dataId;
     private final int recordType;
-    private String lapCount;
-    private String title;
-    private String detail;
+    private final int lapCount;
+    private final IDetailEditor editorLauncher;
+    private long lapTime;
+    private long overallTime;
+    private long differenceTime;
 
     /**
      *
      */
-    DetailRecord(long dataId, int recordType, String lapCount, String title, String detail)
+    DetailRecord(long indexId, long dataId, int recordType, int lapCount, long lapTime, long overallTime, long differenceTime, IDetailEditor editorLauncher)
     {
+        this.indexId = indexId;
         this.dataId = dataId;
         this.recordType = recordType;
         this.lapCount = lapCount;
-        this.title = title;
-        this.detail = detail;
+        this.lapTime = lapTime;
+        this.overallTime = overallTime;
+        this.differenceTime = differenceTime;
+        this.editorLauncher = editorLauncher;
     }
 
     String getLapCount()
     {
-        return (lapCount);
+        return ("" + lapCount);
     }
 
     String getTitle()
     {
-        return (title);
+        return (TimeStringConvert.getTimeString(lapTime).toString());
     }
 
     String getDetail()
     {
-        return (detail);
+        return (TimeStringConvert.getTimeString(overallTime).toString() + " (" + TimeStringConvert.getDiffTimeString(differenceTime).toString() +") ");
     }
 
     @Override
     public void onClick(View v)
     {
-        Log.v(TAG, "Clicked : [" + dataId + "] (" + lapCount + ") " + title + " " + detail);
-
+        Log.v(TAG, "Clicked : [" + dataId + "] (" + lapCount + ") " + getTitle() + " " + getDetail());
     }
 
     @Override
     public boolean onLongClick(View v)
     {
-        Log.v(TAG, "LONG Clicked : [" + dataId + "] (" + lapCount + ") " + title + " " + detail + " TYPE : " + recordType);
+        Log.v(TAG, "LONG Clicked : [" + dataId + "] (" + lapCount + ") " + getTitle() + " " + getDetail() + " TYPE : " + recordType);
 
+        if (recordType == ITimeEntryDatabase.EDITABLE_RECORD_TYPE)
+        {
+            // Edit Laptime Record...
+            editorLauncher.editDetailData(indexId, dataId, lapCount, lapTime);
+        }
         return (false);
     }
 }
diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IDetailEditor.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IDetailEditor.java
new file mode 100644 (file)
index 0000000..1e4ec18
--- /dev/null
@@ -0,0 +1,7 @@
+package net.osdn.gokigen.joggingtimer.recorddetail;
+
+public interface IDetailEditor
+{
+    void editDetailData(long indexId, long dataId, int count, long defaultMillis);
+
+}
index 4bc8efb..046ced0 100644 (file)
@@ -97,6 +97,7 @@ public class RecordDetailAdapter  extends RecyclerView.Adapter<DetailHolder>  im
             holder.setMainText(list.get(position).getTitle());
             holder.setSubText(list.get(position).getDetail());
             holder.setOnClickListener(list.get(position));
+            holder.setOnLongClickListener(list.get(position));
         }
         catch (Exception e)
         {
index 48df96d..26844a7 100644 (file)
@@ -4,6 +4,7 @@ import android.database.Cursor;
 import android.support.wearable.activity.WearableActivity;
 import android.util.Log;
 
+import net.osdn.gokigen.joggingtimer.R;
 import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabase;
 import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabaseCallback;
 import net.osdn.gokigen.joggingtimer.storage.TimeEntryDatabaseFactory;
@@ -18,7 +19,7 @@ import static android.provider.BaseColumns._ID;
  *
  *
  */
-public class RecordDetailSetup  implements ITimeEntryDatabaseCallback
+public class RecordDetailSetup  implements ITimeEntryDatabaseCallback, IDetailEditor
 {
     private final String TAG = toString();
     private final WearableActivity activity;
@@ -76,6 +77,7 @@ public class RecordDetailSetup  implements ITimeEntryDatabaseCallback
             callback.databaseSetupFinished(false);
             return;
         }
+        final IDetailEditor editor = this;
         Thread thread = new Thread(new Runnable() {
             @Override
             public void run()
@@ -92,6 +94,7 @@ public class RecordDetailSetup  implements ITimeEntryDatabaseCallback
                     while (cursor.moveToNext())
                     {
                         long dataId = cursor.getLong(cursor.getColumnIndex(_ID));
+                        long indexId = cursor.getLong(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_INDEX_ID));
                         long entryTime = cursor.getLong(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_TIME_ENTRY));
                         int recordType = cursor.getInt(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_RECORD_TYPE));
 
@@ -107,10 +110,7 @@ public class RecordDetailSetup  implements ITimeEntryDatabaseCallback
                             long lapTime = entryTime - previousLapTime;
                             long overallTime = entryTime - startTime;
                             long differenceTime = (lapTime) - (previousLapTime - morePreviousTime);
-                            String lapCount = " " + index;
-                            String lapTimeString = TimeStringConvert.getTimeString(lapTime).toString();
-                            String overallTimeString = TimeStringConvert.getTimeString(overallTime).toString() + " (" + TimeStringConvert.getDiffTimeString(differenceTime).toString() +") ";
-                            operation.addRecord(new DetailRecord(dataId, recordType, lapCount, lapTimeString, overallTimeString));
+                            operation.addRecord(new DetailRecord(indexId, dataId, recordType, index, lapTime, overallTime, differenceTime,  editor));
                             morePreviousTime = previousLapTime;
                             previousLapTime = entryTime;
                         }
@@ -218,6 +218,20 @@ public class RecordDetailSetup  implements ITimeEntryDatabaseCallback
         return (new CreateModelData(database));
     }
 
+    @Override
+    public void editDetailData(final long indexId, final long dataId, final int count, final long defaultMillis)
+    {
+        activity.runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                CreateModelDataDialog dialog2 = new CreateModelDataDialog(activity);
+                dialog2.show(false, activity.getString(R.string.information_modify_time), getCreateModelDataCallback(), defaultMillis);
+            }
+        });
+    }
+
     /**
      *
      */
index eb84a7a..664378d 100644 (file)
@@ -8,6 +8,9 @@ import android.database.Cursor;
  */
 public interface ITimeEntryDatabase
 {
+    static final long DEFAULT_RECORD_TYPE = 0;
+    static final long EDITABLE_RECORD_TYPE = 1;
+
     void prepare();
     void close();
 
index 645c295..2259a6c 100644 (file)
@@ -26,8 +26,7 @@ class TimeEntryDatabase implements ITimeEntryDatabase
     private static final int REFERENCE_ICON_ID = 2;
     private static final int MODEL_DATA_ICON_ID = 4;
     private static final int DEFAULT_ICON_ID = 0;
-    private static final long DEFAULT_RECORD_TYPE = 0;
-    private static final long EDITABLE_RECORD_TYPE = 1;
+
     private SQLiteDatabase db = null;
     //private SQLiteDatabase writeDb = null;
     //private SQLiteDatabase readDb = null;
index bde24fb..d573641 100644 (file)
@@ -27,7 +27,14 @@ public class CreateModelData implements CreateModelDataDialog.Callback
                 {
                     try
                     {
-                        database.createTimeEntryModelData(lap, hour, minute, second, "");
+                        if (lap > 0)
+                        {
+                            database.createTimeEntryModelData(lap, hour, minute, second, "");
+                        }
+                        else
+                        {
+                            Log.v(TAG, "MODIFIED TO : " + hour + ":" + minute + ":" + second);
+                        }
                     }
                     catch (Exception e)
                     {
index a6f864a..c22f009 100644 (file)
@@ -51,6 +51,7 @@ public class CreateModelDataDialog
         final NumberPicker hour = alertView.findViewById(R.id.number_picker_hours);
         final NumberPicker minute = alertView.findViewById(R.id.number_picker_minutes);
         final NumberPicker second = alertView.findViewById(R.id.number_picker_seconds);
+
         try
         {
             if (title != null)
@@ -71,12 +72,16 @@ public class CreateModelDataDialog
                 lapStartText.setVisibility(View.GONE);
                 lapEndText.setVisibility(View.GONE);
             }
+
             hour.setMinValue(0);
             hour.setMaxValue(72);
             minute.setMinValue(0);
             minute.setMaxValue(59);
             second.setMinValue(0);
             second.setMaxValue(59);
+            second.setValue((int) (defaultValue / 1000) % 60);
+            minute.setValue((int) ((defaultValue / (1000 * 60)) % 60));
+            hour.setValue((int) ((defaultValue / (1000 * 60 * 60)) % 24));
         }
         catch (Exception e)
         {
@@ -93,8 +98,8 @@ public class CreateModelDataDialog
                         try
                         {
                             Log.v(TAG, "ENTRY [" + lap.getValue() + "] " + hour.getValue() + ":" + minute.getValue() + ":" + second.getValue());
-                            callback.dataCreated(lap.getValue(), hour.getValue(), minute.getValue(), second.getValue());
-                            //callback.dataCreateCancelled();
+                            int lapCount = (lap.getVisibility() == View.GONE) ? -1 : lap.getValue();
+                            callback.dataCreated(lapCount, hour.getValue(), minute.getValue(), second.getValue());
                         }
                         catch (Exception e)
                         {
index 25fb53f..34f7b3f 100644 (file)
@@ -23,4 +23,5 @@
     <string name="time_picker_minute_separator">:</string>
     <string name="time_picker_second_separator"> </string>
     <string name="information_time_picker">LAPと総時間を入力</string>
+    <string name="information_modify_time">目標ラップタイムを設定</string>
 </resources>
\ No newline at end of file
index a918b5a..b5b1ef9 100644 (file)
@@ -21,4 +21,5 @@
     <string name="time_picker_minute_separator">:</string>
     <string name="time_picker_second_separator"> </string>
     <string name="information_time_picker">Set LAP and total Time</string>
+    <string name="information_modify_time">Set Target LAP Time</string>
 </resources>
index ef5f515..8fec8f0 100644 (file)
@@ -23,4 +23,5 @@
     <string name="time_picker_minute_separator">:</string>
     <string name="time_picker_second_separator"> </string>
     <string name="information_time_picker">Set LAP and total Time</string>
+    <string name="information_modify_time">Set Target LAP Time</string>
 </resources>