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());
59 view.setCircularScrollingGestureEnabled(false);
61 DividerItemDecoration dividerDecoration = new DividerItemDecoration(view.getContext(), layoutManager.getOrientation());
63 view.addItemDecoration(dividerDecoration);
64 view.setLayoutManager(layoutManager);
65 view.setAdapter(summaryAdapter);
71 summaryAdapter = null;
79 protected void onSaveInstanceState(Bundle outState)
81 super.onSaveInstanceState(outState);
88 protected void onRestoreInstanceState(Bundle savedInstanceState)
90 super.onRestoreInstanceState(savedInstanceState);
97 protected void onResume()
100 Log.v(TAG, "onResume()");
103 setupper = new RecordSummarySetup(this, this, this, summaryAdapter, this);
117 protected void onPause()
120 Log.v(TAG, "onPause()");
123 if (setupper != null)
125 setupper.closeDatabase();
141 public void onStart()
144 Log.v(TAG, "onStart()");
155 Log.v(TAG, "onStop()");
163 public void onEnterAmbient(Bundle ambientDetails)
165 super.onEnterAmbient(ambientDetails);
166 Log.v(TAG, "onEnterAmbient()");
174 public void onExitAmbient()
176 super.onExitAmbient();
177 Log.v(TAG, "onExitAmbient()");
185 public void onUpdateAmbient()
187 super.onUpdateAmbient();
188 Log.v(TAG, "onUpdateAmbient()");
196 public void launchDetail(long recordId)
198 Log.v(TAG, "launchDetail() id:" + recordId);
201 Intent intent = new Intent(this, DetailActivity.class);
202 intent.putExtra(DetailActivity.INTENT_EXTRA_DATA_ID, recordId);
203 startActivity(intent);
215 private void itemSelected(int itemId)
217 String toastMessage = "";
220 case R.id.menu_create_model:
222 CreateModelDataDialog dialog2 = CreateModelDataDialog.newInstance(true, getString(R.string.information_time_picker), 0, setupper.getCreateModelDataCallback(ITimeEntryDatabase.DONT_USE_ID, ITimeEntryDatabase.DONT_USE_ID), 0);
223 dialog2.show(getFragmentManager(), "dialog2");
233 if (toastMessage.length() > 0)
235 Toast toast = Toast.makeText(getApplicationContext(), toastMessage, Toast.LENGTH_SHORT);
250 public void deleteRecord(@NonNull DataRecord targetRecord)
254 final int positionId = targetRecord.getPositionId();
255 final String title = targetRecord.getTitle();
257 Log.v(TAG, "deleteRecord() : " + title);
259 String message = getString(R.string.dialog_message_delete) + " (" + title + ")";
260 ConfirmationDialog dialog = ConfirmationDialog.newInstance(getString(R.string.dialog_title_delete), message, new ConfirmationDialog.Callback() {
262 public void confirm()
264 Log.v(TAG, "Delete Record Execute [" + title + "]" + " pos:" + positionId);
265 if (summaryAdapter != null)
267 final long indexId = summaryAdapter.removeItem(positionId);
270 Thread thread = new Thread(new Runnable()
277 setupper.deleteTimeEntryData(indexId);
290 FragmentManager manager = getFragmentManager();
291 String tag = "dialog";
294 dialog.show(manager, tag);
308 public void databaseSetupFinished(boolean result)
310 Log.v(TAG, "databaseSetupFinished() : " + result);
318 public void selectedMenu(int itemId)
320 itemSelected(itemId);
328 public void createdModelData(long indexId)
331 setupper.setIndexData(indexId);
334 runOnUiThread(new Runnable()
339 if (summaryAdapter != null)
341 int count = summaryAdapter.getItemCount();
342 summaryAdapter.notifyItemChanged(count - 1);
343 summaryAdapter.notifyDataSetChanged();
347 Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.created_model_data), Toast.LENGTH_SHORT);