1 package net.osdn.gokigen.joggingtimer.recorddetail;
3 import android.app.FragmentManager;
4 import android.os.Bundle;
5 import android.support.v7.widget.DividerItemDecoration;
6 import android.support.wear.widget.WearableLinearLayoutManager;
7 import android.support.wear.widget.WearableRecyclerView;
8 import android.support.wear.widget.drawer.WearableActionDrawerView;
9 import android.support.wear.widget.drawer.WearableNavigationDrawerView;
10 import android.support.wearable.activity.WearableActivity;
11 import android.util.Log;
12 import android.view.MenuItem;
13 import android.widget.Toast;
15 import net.osdn.gokigen.joggingtimer.R;
16 import net.osdn.gokigen.joggingtimer.utilities.CreateModelData;
17 import net.osdn.gokigen.joggingtimer.utilities.DataEditDialog;
24 public class DetailActivity extends WearableActivity implements RecordDetailSetup.IDatabaseReadyNotify, MenuItem.OnMenuItemClickListener, DataEditDialog.Callback, CreateModelData.IEditedModelDataCallback, DetailSelectionMenuAdapter.ISelectedMenu
26 private final String TAG = toString();
27 public static final String INTENT_EXTRA_DATA_ID = "Detail.dataId";
29 private RecordDetailAdapter detailAdapter = null;
30 private RecordDetailSetup setupper = null;
32 private WearableActionDrawerView actionDrawerView = null;
38 protected void onCreate(Bundle savedInstanceState)
40 super.onCreate(savedInstanceState);
41 Log.v(TAG, "onCreate()");
43 setContentView(R.layout.activity_detail);
50 WearableNavigationDrawerView naviView = findViewById(R.id.top_navigation_drawer);
51 DetailSelectionMenuAdapter menuAdapter = new DetailSelectionMenuAdapter(this, this);
52 naviView.setAdapter(menuAdapter);
53 naviView.addOnItemSelectedListener(menuAdapter);
55 WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
56 detailAdapter = new RecordDetailAdapter();
57 WearableLinearLayoutManager layoutManager = new WearableLinearLayoutManager(this);
59 view.setCircularScrollingGestureEnabled(getResources().getConfiguration().isScreenRound());
61 DividerItemDecoration dividerDecoration = new DividerItemDecoration(view.getContext(), layoutManager.getOrientation());
63 view.addItemDecoration(dividerDecoration);
64 view.setLayoutManager(layoutManager);
65 view.setAdapter(detailAdapter);
73 // Bottom Action Drawer
74 actionDrawerView = findViewById(R.id.bottom_action_drawer);
75 actionDrawerView.getController().peekDrawer();
76 actionDrawerView.setOnMenuItemClickListener(this);
84 protected void onSaveInstanceState(Bundle outState)
86 super.onSaveInstanceState(outState);
93 protected void onRestoreInstanceState(Bundle savedInstanceState)
95 super.onRestoreInstanceState(savedInstanceState);
102 protected void onResume()
105 Log.v(TAG, "onResume() ");
112 protected void onPause()
115 Log.v(TAG, "onPause()");
123 public void onStart()
128 long indexId = getIntent().getLongExtra(INTENT_EXTRA_DATA_ID, -1);
129 Log.v(TAG, "onResume() " + indexId);
131 setupper = new RecordDetailSetup(this, indexId, this, detailAdapter, this);
148 Log.v(TAG, "onStop()");
152 if (setupper != null)
154 setupper.closeDatabase();
170 public void onEnterAmbient(Bundle ambientDetails)
172 super.onEnterAmbient(ambientDetails);
173 Log.v(TAG, "onEnterAmbient()");
181 public void onExitAmbient()
183 super.onExitAmbient();
184 Log.v(TAG, "onExitAmbient()");
192 public void onUpdateAmbient()
194 super.onUpdateAmbient();
195 Log.v(TAG, "onUpdateAmbient()");
203 public void databaseSetupFinished(boolean result)
205 Log.v(TAG, "databaseSetupFinished() : " + result);
213 public void updatedIndexData(final boolean isIconOnly)
215 Log.v(TAG, "selectedReferenceData() : " + isIconOnly);
216 runOnUiThread(new Runnable() {
224 title = getString(R.string.action_set_reference);
228 title = getString(R.string.action_edited_data);
230 Toast toast = Toast.makeText(getApplicationContext(), title, Toast.LENGTH_SHORT);
246 public boolean onMenuItemClick(MenuItem item)
248 Log.v(TAG, "onMenuItemClick(): " + item);
250 final int itemId = item.getItemId();
253 actionDrawerView.getController().closeDrawer();
259 return (itemSelected(itemId));
262 private boolean itemSelected(int itemId)
265 String toastMessage = "";
268 case R.id.menu_edit_title:
271 int iconId = R.drawable.ic_android_black_24dp;
272 RecordDetailSetup.EditIndexData data = setupper.getEditIndexData();
275 iconId = data.getIcon();
276 title = data.getTitle();
278 DataEditDialog dialog = DataEditDialog.newInstance(iconId, title, this);
279 FragmentManager manager = getFragmentManager();
280 String tag = "dialog";
283 dialog.show(manager, tag);
288 case R.id.menu_set_reference:
290 setupper.setReferenceData();
294 case R.id.menu_share_data:
296 setupper.shareTheData(detailAdapter);
306 if (toastMessage.length() > 0)
308 Toast toast = Toast.makeText(getApplicationContext(), toastMessage, Toast.LENGTH_SHORT);
325 public void dataEdited(int iconId, String title)
327 Log.v(TAG, "iconId : " + iconId + " title : '"+ title +"'");
329 setupper.setEditIndexData(title, iconId);
330 WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
331 view.postInvalidate();
342 private void updateScreen()
346 WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
347 view.postInvalidate();
359 public void cancelled()
368 public void editedModelData(long indexId, long detailId, int lapCount, long prevTime, long newTime)
370 Log.v(TAG, "editedModelData() " + indexId + " " + detailId + " " + lapCount + " (" + prevTime + " -> " + newTime + ")");
371 if (detailAdapter == null)
376 long diffTime = newTime - prevTime;
377 int count = detailAdapter.getItemCount();
381 long modTime = diffTime * (-1) / (count - 1);
382 for (int index = 1; index <= count; index++)
384 DetailRecord record = detailAdapter.getRecord(index - 1);
385 if (lapCount == index)
387 totalTime = record.addModifiedTime(diffTime, totalTime);
391 totalTime = record.addModifiedTime(modTime, totalTime);
393 detailAdapter.notifyItemChanged(index - 1);
397 Thread thread = new Thread(new Runnable()
402 if (setupper != null)
404 setupper.updateDatabaseRecord(detailAdapter);
415 detailAdapter.notifyDataSetChanged();
419 public void selectedMenu(int itemId)
421 itemSelected(itemId);