OSDN Git Service

警告部分を修正。
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / recorddetail / DetailActivity.java
1 package net.osdn.gokigen.joggingtimer.recorddetail;
2
3 import android.os.Bundle;
4 import android.support.v7.widget.DividerItemDecoration;
5 import android.support.wear.widget.WearableLinearLayoutManager;
6 import android.support.wear.widget.WearableRecyclerView;
7 import android.support.wear.widget.drawer.WearableActionDrawerView;
8 import android.support.wearable.activity.WearableActivity;
9 import android.util.Log;
10 import android.view.MenuItem;
11 import android.widget.Toast;
12
13 import net.osdn.gokigen.joggingtimer.R;
14 import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabase;
15 import net.osdn.gokigen.joggingtimer.utilities.CreateModelDataDialog;
16 import net.osdn.gokigen.joggingtimer.utilities.DataEditDialog;
17
18 public class DetailActivity extends WearableActivity implements RecordDetailSetup.IDatabaseReadyNotify, MenuItem.OnMenuItemClickListener, DataEditDialog.Callback
19 {
20     private final String TAG = toString();
21     public static final String INTENT_EXTRA_DATA_ID = "Detail.dataId";
22
23     private RecordDetailAdapter detailAdapter = null;
24     private RecordDetailSetup setupper = null;
25
26     private WearableActionDrawerView actionDrawerView = null;
27
28     /**
29      *
30      */
31     @Override
32     protected void onCreate(Bundle savedInstanceState)
33     {
34         super.onCreate(savedInstanceState);
35         Log.v(TAG, "onCreate()");
36
37         setContentView(R.layout.activity_detail);
38
39         // Enables Always-on
40         setAmbientEnabled();
41
42         try
43         {
44             WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
45             detailAdapter = new RecordDetailAdapter();
46             WearableLinearLayoutManager layoutManager = new WearableLinearLayoutManager(this);
47
48             view.setCircularScrollingGestureEnabled(getResources().getConfiguration().isScreenRound());
49
50             DividerItemDecoration dividerDecoration = new DividerItemDecoration(view.getContext(), layoutManager.getOrientation());
51
52             view.addItemDecoration(dividerDecoration);
53             view.setLayoutManager(layoutManager);
54             view.setAdapter(detailAdapter);
55         }
56         catch (Exception e)
57         {
58             e.printStackTrace();
59             detailAdapter = null;
60         }
61
62         // Bottom Action Drawer
63         actionDrawerView = findViewById(R.id.bottom_action_drawer);
64         actionDrawerView.getController().peekDrawer();
65         actionDrawerView.setOnMenuItemClickListener(this);
66
67     }
68
69     /**
70      *
71      */
72     @Override
73     protected void onSaveInstanceState(Bundle outState)
74     {
75         super.onSaveInstanceState(outState);
76     }
77
78     /**
79      *
80      */
81     @Override
82     protected void onRestoreInstanceState(Bundle savedInstanceState)
83     {
84         super.onRestoreInstanceState(savedInstanceState);
85     }
86
87     /**
88      *
89      */
90     @Override
91     protected void onResume()
92     {
93         super.onResume();
94         Log.v(TAG, "onResume() ");
95     }
96
97     /**
98      *
99      */
100     @Override
101     protected void onPause()
102     {
103         super.onPause();
104         Log.v(TAG, "onPause()");
105     }
106
107     /**
108      *
109      *
110      */
111     @Override
112     public void onStart()
113     {
114         super.onStart();
115         try
116         {
117             long indexId = getIntent().getLongExtra(INTENT_EXTRA_DATA_ID, -1);
118             Log.v(TAG, "onResume() " + indexId);
119
120             setupper = new RecordDetailSetup(this, indexId, this, detailAdapter);
121             setupper.setup();
122         }
123         catch (Exception e)
124         {
125             e.printStackTrace();
126         }
127     }
128
129     /**
130      *
131      *
132      */
133     @Override
134     public void onStop()
135     {
136         super.onStop();
137         Log.v(TAG, "onStop()");
138
139         try
140         {
141             if (setupper != null)
142             {
143                 setupper.closeDatabase();
144                 setupper = null;
145             }
146         }
147         catch (Exception e)
148         {
149             e.printStackTrace();
150         }
151         System.gc();
152     }
153
154     /**
155      *
156      *
157      */
158     @Override
159     public void onEnterAmbient(Bundle ambientDetails)
160     {
161         super.onEnterAmbient(ambientDetails);
162         Log.v(TAG, "onEnterAmbient()");
163     }
164
165     /**
166      *
167      *
168      */
169     @Override
170     public void onExitAmbient()
171     {
172         super.onExitAmbient();
173         Log.v(TAG, "onExitAmbient()");
174     }
175
176     /**
177      *
178      *
179      */
180     @Override
181     public void onUpdateAmbient()
182     {
183         super.onUpdateAmbient();
184         Log.v(TAG, "onUpdateAmbient()");
185     }
186
187     /**
188      *
189      *
190      */
191     @Override
192     public void databaseSetupFinished(boolean result)
193     {
194         Log.v(TAG, "databaseSetupFinished() : " + result);
195     }
196
197     /**
198      *
199      *
200      */
201     @Override
202     public void updatedIndexData(final boolean isIconOnly)
203     {
204         Log.v(TAG, "selectedReferenceData() : " + isIconOnly);
205         runOnUiThread(new Runnable() {
206             @Override
207             public void run() {
208                 try
209                 {
210                     String title;
211                     if (isIconOnly)
212                     {
213                         title = getString(R.string.action_set_reference);
214                     }
215                     else
216                     {
217                         title = getString(R.string.action_edited_data);
218                     }
219                     Toast toast = Toast.makeText(getApplicationContext(), title, Toast.LENGTH_SHORT);
220                     toast.show();
221                 }
222                 catch (Exception e)
223                 {
224                     e.printStackTrace();
225                 }
226             }
227         });
228     }
229
230     /**
231      *
232      *
233      */
234     @Override
235     public boolean onMenuItemClick(MenuItem item)
236     {
237         Log.v(TAG, "onMenuItemClick(): " + item);
238
239         boolean ret = false;
240         final int itemId = item.getItemId();
241         String toastMessage = "";
242         switch (itemId)
243         {
244             case R.id.menu_edit_title:
245                 // タイトルの編集
246                 DataEditDialog dialog = new DataEditDialog(this);
247                 dialog.show(R.drawable.ic_android_black_24dp, "", this);
248                 ret = true;
249                 break;
250             case R.id.menu_create_model:
251                 CreateModelDataDialog dialog2 = new CreateModelDataDialog(this);
252                 dialog2.show(true, getString(R.string.information_time_picker), setupper.getCreateModelDataCallback(ITimeEntryDatabase.DONT_USE_ID, ITimeEntryDatabase.DONT_USE_ID), 0);
253                 break;
254
255             case R.id.menu_set_reference:
256                 // 現在のデータを基準値として設定する
257                 setupper.setReferenceData();
258                 ret = true;
259                 break;
260
261             default:
262                 // 何もしない
263                 break;
264         }
265         try
266         {
267             actionDrawerView.getController().closeDrawer();
268
269             if (toastMessage.length() > 0)
270             {
271                 Toast toast = Toast.makeText(getApplicationContext(), toastMessage, Toast.LENGTH_SHORT);
272                 toast.show();
273             }
274         }
275         catch (Exception e)
276         {
277             e.printStackTrace();
278         }
279
280         return (ret);
281     }
282
283     @Override
284     public void dataEdited(int iconId, String title)
285     {
286         Log.v(TAG, "iconId : " + iconId + " title : '"+ title +"'");
287         try {
288             setupper.setIndexData(title, iconId);
289             WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
290             view.postInvalidate();
291         }
292         catch (Exception e)
293         {
294             e.printStackTrace();
295         }
296     }
297
298     @Override
299     public void cancelled()
300     {
301         try
302         {
303             WearableRecyclerView view = findViewById(R.id.recycler_detail_view);
304             view.postInvalidate();
305         }
306         catch (Exception e)
307         {
308             e.printStackTrace();
309         }
310     }
311 }