1 package net.osdn.gokigen.joggingtimer.recordlist;
3 import android.app.FragmentManager;
4 import android.content.Intent;
5 import android.os.Bundle;
6 import android.support.annotation.NonNull;
7 import android.support.v7.widget.DividerItemDecoration;
8 import android.support.wear.widget.WearableLinearLayoutManager;
9 import android.support.wear.widget.drawer.WearableNavigationDrawerView;
10 import android.support.wearable.activity.WearableActivity;
11 import android.support.wear.widget.WearableRecyclerView;
12 import android.util.Log;
13 import android.widget.Toast;
15 import net.osdn.gokigen.joggingtimer.R;
16 import net.osdn.gokigen.joggingtimer.recorddetail.DetailActivity;
17 import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabase;
18 import net.osdn.gokigen.joggingtimer.utilities.ConfirmationDialog;
19 import net.osdn.gokigen.joggingtimer.utilities.CreateModelData;
20 import net.osdn.gokigen.joggingtimer.utilities.CreateModelDataDialog;
26 public class ListActivity extends WearableActivity implements IDetailLauncher, RecordSummarySetup.IDatabaseReadyNotify, CreateModelData.ICreatedModelDataCallback, ListSelectionMenuAdapter.ISelectedMenu
28 private final String TAG = toString();
29 private RecordSummaryAdapter summaryAdapter = null;
30 private RecordSummarySetup setupper = null;
36 protected void onCreate(Bundle savedInstanceState)
38 super.onCreate(savedInstanceState);
39 Log.v(TAG, "onCreate()");
41 setContentView(R.layout.activity_list);
48 WearableNavigationDrawerView naviView = findViewById(R.id.list_top_navigation_drawer);
49 ListSelectionMenuAdapter menuAdapter = new ListSelectionMenuAdapter(this, this);
50 naviView.setAdapter(menuAdapter);
51 naviView.addOnItemSelectedListener(menuAdapter);
54 WearableRecyclerView view = findViewById(R.id.recycler_list_view);
55 summaryAdapter = new RecordSummaryAdapter();
56 WearableLinearLayoutManager layoutManager = new WearableLinearLayoutManager(this);
58 view.setCircularScrollingGestureEnabled(getResources().getConfiguration().isScreenRound());
60 DividerItemDecoration dividerDecoration = new DividerItemDecoration(view.getContext(), layoutManager.getOrientation());
62 view.addItemDecoration(dividerDecoration);
63 view.setLayoutManager(layoutManager);
64 view.setAdapter(summaryAdapter);
70 summaryAdapter = null;
78 protected void onSaveInstanceState(Bundle outState)
80 super.onSaveInstanceState(outState);
87 protected void onRestoreInstanceState(Bundle savedInstanceState)
89 super.onRestoreInstanceState(savedInstanceState);
96 protected void onResume()
99 Log.v(TAG, "onResume()");
102 setupper = new RecordSummarySetup(this, this, this, summaryAdapter, this);
116 protected void onPause()
119 Log.v(TAG, "onPause()");
122 if (setupper != null)
124 setupper.closeDatabase();
140 public void onStart()
143 Log.v(TAG, "onStart()");
154 Log.v(TAG, "onStop()");
162 public void onEnterAmbient(Bundle ambientDetails)
164 super.onEnterAmbient(ambientDetails);
165 Log.v(TAG, "onEnterAmbient()");
173 public void onExitAmbient()
175 super.onExitAmbient();
176 Log.v(TAG, "onExitAmbient()");
184 public void onUpdateAmbient()
186 super.onUpdateAmbient();
187 Log.v(TAG, "onUpdateAmbient()");
195 public void launchDetail(long recordId)
197 Log.v(TAG, "launchDetail() id:" + recordId);
200 Intent intent = new Intent(this, DetailActivity.class);
201 intent.putExtra(DetailActivity.INTENT_EXTRA_DATA_ID, recordId);
202 startActivity(intent);
214 private void itemSelected(int itemId)
216 String toastMessage = "";
219 case R.id.menu_create_model:
221 CreateModelDataDialog dialog2 = new CreateModelDataDialog(this);
222 dialog2.show(true, getString(R.string.information_time_picker), 0, setupper.getCreateModelDataCallback(ITimeEntryDatabase.DONT_USE_ID, ITimeEntryDatabase.DONT_USE_ID), 0);
232 if (toastMessage.length() > 0)
234 Toast toast = Toast.makeText(getApplicationContext(), toastMessage, Toast.LENGTH_SHORT);
249 public void deleteRecord(@NonNull DataRecord targetRecord)
253 final int positionId = targetRecord.getPositionId();
254 final String title = targetRecord.getTitle();
256 Log.v(TAG, "deleteRecord() : " + title);
258 String message = getString(R.string.dialog_message_delete) + " (" + title + ")";
259 ConfirmationDialog dialog = ConfirmationDialog.newInstance(getString(R.string.dialog_title_delete), message, new ConfirmationDialog.Callback() {
261 public void confirm()
263 Log.v(TAG, "Delete Record Execute [" + title + "]" + " pos:" + positionId);
264 if (summaryAdapter != null)
266 final long indexId = summaryAdapter.removeItem(positionId);
269 Thread thread = new Thread(new Runnable()
276 setupper.deleteTimeEntryData(indexId);
289 FragmentManager manager = getFragmentManager();
290 String tag = "dialog";
293 dialog.show(manager, tag);
307 public void databaseSetupFinished(boolean result)
309 Log.v(TAG, "databaseSetupFinished() : " + result);
317 public void selectedMenu(int itemId)
319 itemSelected(itemId);
327 public void createdModelData(long indexId)
330 setupper.setIndexData(indexId);
333 runOnUiThread(new Runnable()
338 if (summaryAdapter != null)
340 int count = summaryAdapter.getItemCount();
341 summaryAdapter.notifyItemChanged(count - 1);
342 summaryAdapter.notifyDataSetChanged();
346 Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.created_model_data), Toast.LENGTH_SHORT);