OSDN Git Service

Mac移行後
[train-delayed/source.git] / workspace / TrainDelayed / src / com / td / MonitorTimeActivity.java
1 package com.td;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import android.app.TimePickerDialog;\r
7 import android.os.Bundle;\r
8 import android.view.View;\r
9 import android.view.View.OnClickListener;\r
10 import android.widget.AdapterView;\r
11 import android.widget.AdapterView.OnItemClickListener;\r
12 import android.widget.AdapterView.OnItemSelectedListener;\r
13 import android.widget.ArrayAdapter;\r
14 import android.widget.Button;\r
15 import android.widget.CheckBox;\r
16 import android.widget.CompoundButton;\r
17 import android.widget.CompoundButton.OnCheckedChangeListener;\r
18 import android.widget.EditText;\r
19 import android.widget.ListView;\r
20 import android.widget.ScrollView;\r
21 import android.widget.TimePicker;\r
22 \r
23 import com.td.db.Monitor;\r
24 import com.td.db.MonitorDao;\r
25 import com.td.service.TrainDelayedServiceImpl;\r
26 import com.td.utility.BaseActivity;\r
27 import com.td.utility.DateUtil;\r
28 import com.td.utility.Debug;\r
29 import com.td.utility.EditPrefUtil;\r
30 \r
31 public class MonitorTimeActivity extends BaseActivity {\r
32         private EditPrefUtil pref = new EditPrefUtil(this);\r
33         private CheckBox[] checkBoxes = new CheckBox[DateUtil.WEEK];\r
34 \r
35         private MonitorDao dao;\r
36         private List<Monitor> list = new ArrayList<Monitor>();\r
37         private Monitor curMonitor = null;\r
38 \r
39         private View mode = null;\r
40         private ListView listView;\r
41         private ScrollView scrollView;\r
42         private EditText editText1;\r
43         private EditText editText2;\r
44         private Button addButton;\r
45         private Button updateButton;\r
46         private Button deleteButton;\r
47         private Button confButton;\r
48         private Button cancelButton;\r
49         private Button closeButton;\r
50 \r
51         @Override\r
52         public void onCreate(Bundle savedInstanceState) {\r
53                 super.onCreate(savedInstanceState);\r
54                 setContentView(R.layout.monitor_time);\r
55 \r
56                 try {\r
57                         listView = (ListView) findViewById(R.id.listView61);\r
58                         scrollView = (ScrollView) findViewById(R.id.scrollView61);\r
59                         editText1 = (EditText) findViewById(R.id.editText61);\r
60                         editText2 = (EditText) findViewById(R.id.editText62);\r
61                         addButton = (Button) findViewById(R.id.button61);\r
62                         updateButton = (Button) findViewById(R.id.button62);\r
63                         deleteButton = (Button) findViewById(R.id.button63);\r
64                         confButton = (Button) findViewById(R.id.button64);\r
65                         cancelButton = (Button) findViewById(R.id.button65);\r
66                         closeButton = (Button) findViewById(R.id.button66);\r
67                         CheckBox checkBox;\r
68                         for (int i = 0; i < DateUtil.WEEK; i++) {\r
69                                 switch (i) {\r
70                                 case 0:\r
71                                         checkBox = (CheckBox) findViewById(R.id.checkBox61);\r
72                                         break;\r
73                                 case 1:\r
74                                         checkBox = (CheckBox) findViewById(R.id.checkBox62);\r
75                                         break;\r
76                                 case 2:\r
77                                         checkBox = (CheckBox) findViewById(R.id.checkBox63);\r
78                                         break;\r
79                                 case 3:\r
80                                         checkBox = (CheckBox) findViewById(R.id.checkBox64);\r
81                                         break;\r
82                                 case 4:\r
83                                         checkBox = (CheckBox) findViewById(R.id.checkBox65);\r
84                                         break;\r
85                                 case 5:\r
86                                         checkBox = (CheckBox) findViewById(R.id.checkBox66);\r
87                                         break;\r
88                                 case 6:\r
89                                         checkBox = (CheckBox) findViewById(R.id.checkBox67);\r
90                                         break;\r
91                                 default:\r
92                                         checkBox = null;\r
93                                         break;\r
94                                 }\r
95                                 checkBoxes[i] = checkBox;\r
96                                 if (checkBox != null) {\r
97                                         checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {\r
98                                                 public void onCheckedChanged(CompoundButton view,\r
99                                                                 boolean isChecked) {\r
100                                                         validation();\r
101                                                 }\r
102                                         });\r
103                                 }\r
104                         }\r
105 \r
106                         editText1.setOnClickListener(new OnClickListener() {\r
107                                 public void onClick(View view) {\r
108                                         String t = editText1.getText().toString();\r
109                                         String strHour = DateUtil.getHour(t);\r
110                                         String strMinute = DateUtil.getMinute(t);\r
111 \r
112                                         int hour = Integer.parseInt(strHour);\r
113                                         int minute = Integer.parseInt(strMinute);\r
114                                         TimePickerDialog timePickerDialog = new TimePickerDialog(\r
115                                                         MonitorTimeActivity.this,\r
116                                                         new TimePickerDialog.OnTimeSetListener() {\r
117                                                                 public void onTimeSet(TimePicker view,\r
118                                                                                 int hourOfDay, int minute) {\r
119                                                                         String s = DateUtil.formattedHm(DateUtil\r
120                                                                                         .getHm(hourOfDay, minute));\r
121                                                                         editText1.setText(s);\r
122                                                                         validation();\r
123                                                                 }\r
124                                                         }, hour, minute, true);\r
125                                         timePickerDialog.show();\r
126                                 }\r
127                         });\r
128 \r
129                         editText2.setOnClickListener(new OnClickListener() {\r
130                                 public void onClick(View view) {\r
131                                         String t = editText2.getText().toString();\r
132                                         String strHour = DateUtil.getHour(t);\r
133                                         String strMinute = DateUtil.getMinute(t);\r
134 \r
135                                         int hour = Integer.parseInt(strHour);\r
136                                         int minute = Integer.parseInt(strMinute);\r
137                                         TimePickerDialog timePickerDialog = new TimePickerDialog(\r
138                                                         MonitorTimeActivity.this,\r
139                                                         new TimePickerDialog.OnTimeSetListener() {\r
140                                                                 public void onTimeSet(TimePicker view,\r
141                                                                                 int hourOfDay, int minute) {\r
142                                                                         String s = DateUtil.formattedHm(DateUtil\r
143                                                                                         .getHm(hourOfDay, minute));\r
144                                                                         editText2.setText(s);\r
145                                                                         validation();\r
146                                                                 }\r
147                                                         }, hour, minute, true);\r
148                                         timePickerDialog.show();\r
149                                 }\r
150                         });\r
151 \r
152                         dao = MonitorDao.getInstance();\r
153                         updateList();\r
154 \r
155                         listView.setOnItemClickListener(new OnItemClickListener() {\r
156                                 public void onItemClick(AdapterView<?> parent, View view,\r
157                                                 int position, long id) {\r
158                                         selectedItemView(parent, view, position, id);\r
159                                 }\r
160                         });\r
161                         listView.setOnItemSelectedListener(new OnItemSelectedListener() {\r
162                                 public void onItemSelected(AdapterView<?> parent, View view,\r
163                                                 int position, long id) {\r
164                                         selectedItemView(parent, view, position, id);\r
165                                 }\r
166 \r
167                                 public void onNothingSelected(AdapterView<?> arg0) {\r
168                                         ;\r
169                                 }\r
170                         });\r
171 \r
172                         addButton.setOnClickListener(new OnClickListener() {\r
173                                 public void onClick(View view) {\r
174                                         clickAddButton();\r
175                                 }\r
176                         });\r
177 \r
178                         updateButton.setOnClickListener(new OnClickListener() {\r
179                                 public void onClick(View view) {\r
180                                         clickUpdateButton();\r
181                                 }\r
182                         });\r
183 \r
184                         deleteButton.setOnClickListener(new OnClickListener() {\r
185                                 public void onClick(View view) {\r
186                                         clickDeleteButton();\r
187                                 }\r
188                         });\r
189 \r
190                         cancelButton.setOnClickListener(new OnClickListener() {\r
191                                 public void onClick(View view) {\r
192                                         clickCancelButton();\r
193                                 }\r
194                         });\r
195 \r
196                         confButton.setOnClickListener(new OnClickListener() {\r
197                                 public void onClick(View view) {\r
198                                         clickConfButton();\r
199                                 }\r
200                         });\r
201 \r
202                         closeButton.setOnClickListener(new OnClickListener() {\r
203                                 public void onClick(View view) {\r
204                                         clickCloseButton();\r
205                                 }\r
206                         });\r
207                 } catch (Exception e) {\r
208                         Debug.d(this, null, e);\r
209                 }\r
210         }\r
211 \r
212         private void updateList() {\r
213                 list = dao.search();\r
214                 ArrayAdapter<Monitor> adapter = new ArrayAdapter<Monitor>(this,\r
215                                 android.R.layout.simple_list_item_1, list);\r
216                 listView.setAdapter(adapter);\r
217         }\r
218 \r
219         @Override\r
220         protected void onStart() {\r
221                 super.onStart();\r
222 \r
223                 try {\r
224                         setStatus(null);\r
225                 }\r
226                 catch (Exception e){\r
227                         Debug.d(this, null, e);\r
228                 }\r
229         }\r
230 \r
231         private void selectedItemView(AdapterView<?> parent, View view,\r
232                         int position, long id) {\r
233                 curMonitor = list.get(position);\r
234                 // String text = curMonitor.getText();\r
235                 // editText.setText(text);\r
236                 setItems(curMonitor);\r
237 \r
238                 setStatus(listView);\r
239         }\r
240 \r
241         private void clickAddButton() {\r
242                 // editText.setText("");\r
243                 Monitor monitor = Monitor.getMonitor();\r
244                 setItems(monitor);\r
245 \r
246                 curMonitor = null;\r
247                 setStatus(addButton);\r
248                 // changedEditText();\r
249         }\r
250 \r
251         private void clickUpdateButton() {\r
252                 setStatus(updateButton);\r
253                 // changedEditText();\r
254         }\r
255 \r
256         private void clickDeleteButton() {\r
257                 setStatus(deleteButton);\r
258         }\r
259 \r
260         private void clickCancelButton() {\r
261                 curMonitor = null;\r
262                 setStatus(cancelButton);\r
263         }\r
264 \r
265         private void clickConfButton() {\r
266                 Monitor monitor;\r
267                 long id;\r
268 \r
269                 if (mode == addButton) {\r
270                         monitor = getMonitor(-1);\r
271                         dao.add(monitor);\r
272                         updateList();\r
273                 } else if (mode == updateButton) {\r
274                         if (curMonitor != null){\r
275                                 monitor = getMonitor(curMonitor.getId());\r
276                                 dao.set(monitor);\r
277                         }\r
278                         updateList();\r
279                 } else if (mode == deleteButton) {\r
280                         if (curMonitor != null){\r
281                                 id = curMonitor.getId();\r
282                                 dao.delete(id);\r
283                         }\r
284                         updateList();\r
285                 }\r
286                 curMonitor = null;\r
287                 setStatus(confButton);\r
288 \r
289                 TrainDelayedServiceImpl.clearSchedule(pref);\r
290         }\r
291 \r
292         private void clickCloseButton() {\r
293                 setStatus(closeButton);\r
294                 this.finish();\r
295         }\r
296 \r
297         private void setStatus(View view) {\r
298                 mode = view;\r
299                 if (view == null) {\r
300                         listView.setEnabled(true);\r
301                         scrollView.setVisibility(View.GONE);\r
302                         setItemsEnabled(false);\r
303                         addButton.setVisibility(View.VISIBLE);\r
304                         addButton.setEnabled(true);\r
305                         updateButton.setVisibility(View.VISIBLE);\r
306                         updateButton.setEnabled(false);\r
307                         deleteButton.setVisibility(View.VISIBLE);\r
308                         deleteButton.setEnabled(false);\r
309                         confButton.setVisibility(View.GONE);\r
310                         confButton.setEnabled(true);\r
311                         cancelButton.setVisibility(View.GONE);\r
312                         closeButton.setVisibility(View.VISIBLE);\r
313                 } else if (view == listView) {\r
314                         scrollView.scrollTo(0, 0);\r
315                         scrollView.setVisibility(View.VISIBLE);\r
316                         setItemsEnabled(false);\r
317                         addButton.setEnabled(false);\r
318                         updateButton.setEnabled(true);\r
319                         deleteButton.setEnabled(true);\r
320                         cancelButton.setVisibility(View.VISIBLE);\r
321                         closeButton.setVisibility(View.GONE);\r
322                 } else if (view == addButton) {\r
323                         listView.setEnabled(false);\r
324                         scrollView.scrollTo(0, 0);\r
325                         scrollView.setVisibility(View.VISIBLE);\r
326                         setItemsEnabled(true);\r
327                         addButton.setVisibility(View.GONE);\r
328                         updateButton.setVisibility(View.GONE);\r
329                         deleteButton.setVisibility(View.GONE);\r
330                         confButton.setVisibility(View.VISIBLE);\r
331                         cancelButton.setVisibility(View.VISIBLE);\r
332                         closeButton.setVisibility(View.GONE);\r
333                         validation();\r
334                 } else if (view == updateButton) {\r
335                         setItemsEnabled(true);\r
336                         listView.setEnabled(false);\r
337                         addButton.setVisibility(View.GONE);\r
338                         updateButton.setVisibility(View.GONE);\r
339                         deleteButton.setVisibility(View.GONE);\r
340                         confButton.setVisibility(View.VISIBLE);\r
341                         cancelButton.setVisibility(View.VISIBLE);\r
342                         closeButton.setVisibility(View.GONE);\r
343                         validation();\r
344                 } else if (view == deleteButton) {\r
345                         listView.setEnabled(false);\r
346                         addButton.setVisibility(View.GONE);\r
347                         updateButton.setVisibility(View.GONE);\r
348                         deleteButton.setVisibility(View.GONE);\r
349                         confButton.setVisibility(View.VISIBLE);\r
350                         cancelButton.setVisibility(View.VISIBLE);\r
351                         closeButton.setVisibility(View.GONE);\r
352                 } else if (view == confButton) {\r
353                         setStatus(null);\r
354                 } else if (view == cancelButton) {\r
355                         setStatus(null);\r
356                 } else if (view == closeButton) {\r
357                         setStatus(null);\r
358                 }\r
359         }\r
360 \r
361         private void setItemsEnabled(boolean enabled) {\r
362                 // listView.setEnabled(enabled);\r
363                 scrollView.setEnabled(enabled);\r
364                 editText1.setEnabled(enabled);\r
365                 editText2.setEnabled(enabled);\r
366                 for (int i = 0; i < DateUtil.WEEK; i++) {\r
367                         checkBoxes[i].setEnabled(enabled);\r
368                 }\r
369         }\r
370 \r
371         private void setItems(Monitor monitor) {\r
372                 int from = monitor.getFrom();\r
373                 int to = monitor.getTo();\r
374 \r
375                 editText1.setText(DateUtil.formattedHm(from));\r
376                 editText2.setText(DateUtil.formattedHm(to));\r
377                 for (int i = 0; i < DateUtil.WEEK; i++) {\r
378                         checkBoxes[i].setChecked(monitor.getWeek(i));\r
379                 }\r
380         }\r
381 \r
382         private Monitor getMonitor(long id) {\r
383                 String t1 = editText1.getText().toString();\r
384                 int h1 = Integer.parseInt(DateUtil.getHour(t1));\r
385                 int m1 = Integer.parseInt(DateUtil.getMinute(t1));\r
386 \r
387                 String t2 = editText2.getText().toString();\r
388                 int h2 = Integer.parseInt(DateUtil.getHour(t2));\r
389                 int m2 = Integer.parseInt(DateUtil.getMinute(t2));\r
390 \r
391                 int hm1 = DateUtil.getHm(h1, m1);\r
392                 int hm2 = DateUtil.getHm(h2, m2);\r
393 \r
394                 Monitor monitor = new Monitor(id, hm1, hm2);\r
395                 for (int i = 0; i < DateUtil.WEEK; i++) {\r
396                         monitor.setWeek(i, checkBoxes[i].isChecked());\r
397                 }\r
398                 return monitor;\r
399         }\r
400 \r
401         private void validation() {\r
402                 String t1 = editText1.getText().toString();\r
403                 String t2 = editText2.getText().toString();\r
404 \r
405                 if (t1 == null || t1.length() == 0){\r
406                         return;\r
407                 }\r
408                 if (t2 == null || t2.length() == 0){\r
409                         return;\r
410                 }\r
411 \r
412                 int h1 = Integer.parseInt(DateUtil.getHour(t1));\r
413                 int m1 = Integer.parseInt(DateUtil.getMinute(t1));\r
414 \r
415                 int h2 = Integer.parseInt(DateUtil.getHour(t2));\r
416                 int m2 = Integer.parseInt(DateUtil.getMinute(t2));\r
417 \r
418                 int hm1 = DateUtil.getHm(h1, m1);\r
419                 int hm2 = DateUtil.getHm(h2, m2);\r
420 \r
421                 boolean isChecked = false;\r
422                 for (int i = 0; i < DateUtil.WEEK; i++) {\r
423                         if (checkBoxes[i].isChecked()) {\r
424                                 isChecked = true;\r
425                                 break;\r
426                         }\r
427                 }\r
428 \r
429                 if (mode == addButton || mode == updateButton) {\r
430                         if (hm1 <= hm2 && isChecked) {\r
431                                 confButton.setEnabled(true);\r
432                         } else {\r
433                                 confButton.setEnabled(false);\r
434                         }\r
435                 }\r
436         }\r
437 }\r