From a5d97e196484423dbace08fa2ab60a882687eacb Mon Sep 17 00:00:00 2001 From: MRSa Date: Sat, 7 Apr 2018 00:27:49 +0900 Subject: [PATCH] =?utf8?q?=E7=B7=A8=E9=9B=86=E3=81=97=E3=81=9F=E3=83=87?= =?utf8?q?=E3=83=BC=E3=82=BF=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E3=83=99?= =?utf8?q?=E3=83=BC=E3=82=B9=E4=BF=9D=E5=AD=98=E3=82=92=E8=BF=BD=E5=8A=A0?= =?utf8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../joggingtimer/recorddetail/DetailActivity.java | 68 +++++++++++++++++++++- .../joggingtimer/recorddetail/DetailRecord.java | 17 ++++++ .../recorddetail/IRecordOperation.java | 2 + .../recorddetail/RecordDetailAdapter.java | 14 +++++ .../recorddetail/RecordDetailSetup.java | 26 +++++++++ .../joggingtimer/storage/ITimeEntryDatabase.java | 2 +- .../joggingtimer/storage/TimeEntryDatabase.java | 22 +++++++ 7 files changed, 148 insertions(+), 3 deletions(-) diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailActivity.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailActivity.java index d338eae..35555ab 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailActivity.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailActivity.java @@ -281,6 +281,10 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu return (ret); } + + /** + * + */ @Override public void dataEdited(int iconId, String title) { @@ -296,8 +300,10 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu } } - @Override - public void cancelled() + /** + * + */ + private void updateScreen() { try { @@ -310,9 +316,67 @@ public class DetailActivity extends WearableActivity implements RecordDetailSetu } } + /** + * + */ + @Override + public void cancelled() + { + updateScreen(); + } + + /** + * + */ @Override public void editedModelData(long indexId, long detailId, int lapCount, long prevTime, long newTime) { Log.v(TAG, "editedModelData() " + indexId + " " + detailId + " " + lapCount + " (" + prevTime + " -> " + newTime + ")"); + if (detailAdapter == null) + { + return; + } + + long diffTime = newTime - prevTime; + int count = detailAdapter.getItemCount(); + if (count > 1) + { + long totalTime = 0; + long modTime = diffTime * (-1) / (count - 1); + for (int index = 1; index <= count; index++) + { + DetailRecord record = detailAdapter.getRecord(index - 1); + if (lapCount == index) + { + totalTime = record.addModifiedTime(diffTime, totalTime); + } + else + { + totalTime = record.addModifiedTime(modTime, totalTime); + } + + detailAdapter.notifyItemChanged(index - 1); + } + try + { + Thread thread = new Thread(new Runnable() + { + @Override + public void run() + { + if (setupper != null) + { + setupper.updateDatabaseRecord(detailAdapter); + } + } + }); + thread.start(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + detailAdapter.notifyDataSetChanged(); } } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailRecord.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailRecord.java index 05474da..cc11e68 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailRecord.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/DetailRecord.java @@ -52,6 +52,23 @@ public class DetailRecord implements View.OnClickListener, View.OnLongClickListe return (TimeStringConvert.getTimeString(overallTime).toString() + " (" + TimeStringConvert.getDiffTimeString(differenceTime).toString() +") "); } + long getDataId() + { + return (dataId); + } + + long getTotalTime() + { + return (overallTime); + } + + long addModifiedTime(long modifiedTime, long overallTime) + { + lapTime = lapTime + modifiedTime; + this.overallTime = overallTime + lapTime; + return (this.overallTime); + } + @Override public void onClick(View v) { diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IRecordOperation.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IRecordOperation.java index 33a0274..41f6756 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IRecordOperation.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/IRecordOperation.java @@ -8,6 +8,8 @@ public interface IRecordOperation { void addRecord(DetailRecord record); void clearRecord(); + DetailRecord getRecord(int position); void dataSetChangeFinished(); + } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailAdapter.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailAdapter.java index 046ced0..d0d95b7 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailAdapter.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailAdapter.java @@ -63,6 +63,20 @@ public class RecordDetailAdapter extends RecyclerView.Adapter im } } + @Override + public DetailRecord getRecord(int position) + { + try + { + return (list.get(position)); + } + catch (Exception e) + { + e.printStackTrace(); + } + return (null); + } + /** * * diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java index ba35bd6..f75754d 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/recorddetail/RecordDetailSetup.java @@ -1,6 +1,7 @@ package net.osdn.gokigen.joggingtimer.recorddetail; import android.database.Cursor; +import android.support.annotation.NonNull; import android.support.wearable.activity.WearableActivity; import android.util.Log; @@ -239,6 +240,31 @@ public class RecordDetailSetup implements ITimeEntryDatabaseCallback, IDetailEd /** * */ + public void updateDatabaseRecord(@NonNull RecordDetailAdapter adapter) + { + try + { + int count = adapter.getItemCount(); + if (count > 1) + { + for (int index = 0; index < count; index++) + { + DetailRecord record = adapter.getRecord(index); + long id = record.getDataId(); + long time = record.getTotalTime(); + database.updateTimeEntryData(id, time); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * + */ interface IDatabaseReadyNotify { void databaseSetupFinished(boolean result); diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/ITimeEntryDatabase.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/ITimeEntryDatabase.java index 83a4efd..2105ee2 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/ITimeEntryDatabase.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/ITimeEntryDatabase.java @@ -28,5 +28,5 @@ public interface ITimeEntryDatabase void finishTimeData(long indexId, long startTime, long endTime); void createTimeEntryModelData(int lap, long totalTime, String memo); - + int updateTimeEntryData(long detailId, long totalTime); } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/TimeEntryDatabase.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/TimeEntryDatabase.java index 8d4fd1d..1ddb3dc 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/TimeEntryDatabase.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/storage/TimeEntryDatabase.java @@ -292,6 +292,28 @@ class TimeEntryDatabase implements ITimeEntryDatabase callback.modelDataEntryFinished(ITimeEntryDatabaseCallback.OperationType.FINISHED, false, -1, title); } + /** + * + * + */ + @Override + public int updateTimeEntryData(long detailId, long totalTime) + { + int rows = 0; + Log.v(TAG, "updateTimeEntryData (" + detailId + ") : " + totalTime); + try + { + ContentValues timeValue = new ContentValues(); + timeValue.put(TimeEntryData.EntryData.COLUMN_NAME_TIME_ENTRY, totalTime); + rows = db.update(TimeEntryData.EntryData.TABLE_NAME, timeValue, _ID + " = " + detailId, null); + } + catch (Exception e) + { + e.printStackTrace(); + } + return (rows); + } + /* public boolean prepareToRead() { -- 2.11.0