3 import java.util.Calendar;
\r
4 import java.util.Date;
\r
5 import java.util.List;
\r
7 import org.afree.chart.AFreeChart;
\r
8 import org.afree.chart.ChartFactory;
\r
9 import org.afree.chart.plot.PlotOrientation;
\r
10 import org.afree.data.category.DefaultCategoryDataset;
\r
12 import android.content.Context;
\r
13 import android.content.Intent;
\r
14 import android.content.res.Configuration;
\r
15 import android.os.Bundle;
\r
16 import android.view.View;
\r
17 import android.view.View.OnClickListener;
\r
18 import android.widget.Button;
\r
19 import android.widget.HorizontalScrollView;
\r
20 import android.widget.TextView;
\r
22 import com.td.db.History;
\r
23 import com.td.db.HistoryDao;
\r
24 import com.td.db.Train;
\r
25 import com.td.db.TrainDao;
\r
26 import com.td.utility.BaseActivity;
\r
27 import com.td.utility.DBCache;
\r
28 import com.td.utility.DateUtil;
\r
29 import com.td.utility.Debug;
\r
30 import com.td.utility.EditPrefUtil;
\r
32 public class HistoryActivity extends BaseActivity {
\r
33 public static final String PREF_HIS_YMD_POS = "HIS_YMD_POS";
\r
35 public static final String PREF_HIS_ST_HOUR = "HIS_ST_HOUR";
\r
36 public static final String PREF_HIS_ST_MINUTE = "HIS_ST_MINUTE";
\r
37 public static final String PREF_HIS_EN_HOUR = "HIS_EN_HOUR";
\r
38 public static final String PREF_HIS_EN_MINUTE = "HIS_EN_MINUTE";
\r
40 public static final String PREF_HIS_YMD = "HIS_YMD";
\r
42 public static final String PREF_HIS_DATA = "HIS_DATA";
\r
44 public static final int[] unit = { 10, 30, 60 };
\r
46 private EditPrefUtil pref = new EditPrefUtil(this);
\r
47 private TextView textView1;
\r
48 private HorizontalScrollView scrollView;
\r
49 private HistoryView historyView;
\r
51 private int prefYmdPos;
\r
53 private int prefStHour;
\r
54 private int prefStMinute;
\r
55 private int prefEnHour;
\r
56 private int prefEnMinute;
\r
58 private Date currentDate;
\r
60 private int scrollViewWidth = 0;
\r
64 public void onCreate(Bundle savedInstanceState) {
\r
65 super.onCreate(savedInstanceState);
\r
66 setContentView(R.layout.history);
\r
69 Button button1 = (Button) findViewById(R.id.button11);
\r
70 button1.setOnClickListener(new OnClickListener() {
\r
71 public void onClick(View view) {
\r
72 Intent intent = new Intent(HistoryActivity.this,
\r
73 (Class<?>) HistoryListActivity.class);
\r
74 startActivityForResult(intent, 0);
\r
78 Button button2 = (Button) findViewById(R.id.button12);
\r
79 button2.setOnClickListener(new OnClickListener() {
\r
80 public void onClick(View view) {
\r
81 HistoryConfActivity.init(HistoryActivity.this);
\r
82 Intent intent = new Intent(HistoryActivity.this,
\r
83 (Class<?>) HistoryConfActivity.class);
\r
84 startActivityForResult(intent, 0);
\r
88 Button button3 = (Button) findViewById(R.id.button13);
\r
89 button3.setOnClickListener(new OnClickListener() {
\r
90 public void onClick(View view) {
\r
91 HistoryActivity.this.finish();
\r
95 textView1 = (TextView) findViewById(R.id.textView11);
\r
96 scrollView = (HorizontalScrollView) findViewById(R.id.scrollView11);
\r
97 historyView = (HistoryView) findViewById(R.id.historyView11);
\r
98 historyView.setHistoryActivity(this);
\r
99 } catch (Exception e) {
\r
100 Debug.d(this, null, e);
\r
101 showDialog(this, e);
\r
106 public void onWindowFocusChanged(boolean hasFocus) {
\r
107 int width = scrollView.getWidth();
\r
108 setScrollViewWidth(width);
\r
110 super.onWindowFocusChanged(hasFocus);
\r
115 // public void onConfigurationChanged(Configuration newConfig ) {
\r
116 // int width = scrollView.getWidth();
\r
117 // setScrollViewWidth(width);
\r
119 // super.onConfigurationChanged(newConfig);
\r
123 protected void onStart() {
\r
127 Calendar cal = Calendar.getInstance();
\r
128 Date date = cal.getTime();
\r
132 prefEnHour = pref.getInt(PREF_HIS_EN_HOUR, date.getHours());
\r
133 prefEnMinute = pref.getInt(PREF_HIS_EN_MINUTE, date.getMinutes());
\r
134 cal = Calendar.getInstance();
\r
135 cal.set(Calendar.HOUR_OF_DAY, prefEnHour);
\r
136 cal.set(Calendar.MINUTE, prefEnMinute);
\r
137 date = cal.getTime();
\r
138 int h = date.getHours();
\r
142 cal.add(Calendar.HOUR, -H);
\r
144 Date startDate = cal.getTime();
\r
145 hour = startDate.getHours();
\r
146 minute = startDate.getMinutes();
\r
148 prefStHour = pref.getInt(PREF_HIS_ST_HOUR, hour);
\r
149 prefStMinute = pref.getInt(PREF_HIS_ST_MINUTE, minute);
\r
151 int M = DateUtil.WEEK;
\r
152 prefYmdPos = pref.getInt(PREF_HIS_YMD_POS, M - 1);
\r
154 cal.add(Calendar.DATE, -(M - (prefYmdPos + 1)));
\r
155 currentDate = cal.getTime();
\r
159 HistoryDao hisDao = HistoryDao.getInstance();
\r
160 TrainDao traDao = TrainDao.getInstance();
\r
161 DBCache<Train, Long> cache = new DBCache<Train, Long>(traDao);
\r
163 int ymd = DateUtil.getYmd(currentDate.getYear(),
\r
164 currentDate.getMonth(), currentDate.getDate());
\r
165 int from = DateUtil.getHm(prefStHour, prefStMinute);
\r
166 int to = DateUtil.getHm(prefEnHour, prefEnMinute);
\r
168 pref.put(PREF_HIS_YMD, ymd);
\r
171 List<History> list = hisDao.search(this, ymd, from, to);
\r
173 DefaultCategoryDataset dataset = new DefaultCategoryDataset();
\r
174 for (History history : list) {
\r
175 long val = history.getNum();
\r
176 int hm = history.getHm();
\r
177 String text = DateUtil.formattedHm(hm);
\r
179 long id = history.getRouteId();
\r
180 Train train = cache.get(Long.valueOf(id));
\r
181 if (train != null){
\r
182 String route = train.getName();
\r
184 if (Debug.isDebug()){
\r
185 Debug.d(this, id + " " + route + " " + text + " " + val);
\r
187 dataset.setValue(val, route, text);
\r
191 AFreeChart chart = ChartFactory.createLineChart(
\r
192 getString(R.string.history_tite),
\r
193 getString(R.string.time_title),
\r
194 getString(R.string.tpm_title),
\r
195 dataset, PlotOrientation.VERTICAL, true,
\r
197 historyView.setChart(chart);
\r
199 String text = DateUtil.formattedDate(ymd, from, to);
\r
200 textView1.setText(text);
\r
202 } catch (Exception e) {
\r
203 Debug.d(this, null, e);
\r
204 showDialog(this, e);
\r
209 protected void onStop() {
\r
214 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
\r
215 super.onActivityResult(requestCode, resultCode, data);
\r
217 switch (resultCode){
\r
219 //
\90Ý
\92è
\82ª
\95Ï
\8dX
\82³
\82ê
\82½
\82Ì
\82Å
\81A
\92l
\82ð
\93Ç
\82Ý
\92¼
\82·
\r
220 pref.remove(PREF_HIS_DATA);
\r
222 case RESULT_CANCELED:
\r
227 public void setScrollViewWidth(int scrollViewWidth) {
\r
228 if (scrollViewWidth <= 0){
\r
231 this.scrollViewWidth = scrollViewWidth;
\r
232 scrollView.requestLayout();
\r
235 public int getScrollViewWidth() {
\r
236 return scrollViewWidth;
\r
239 public static void init(Context context) {
\r
240 EditPrefUtil pref = new EditPrefUtil(context);
\r
242 pref.remove(PREF_HIS_YMD_POS);
\r
244 pref.remove(PREF_HIS_ST_HOUR);
\r
245 pref.remove(PREF_HIS_ST_MINUTE);
\r
246 pref.remove(PREF_HIS_EN_HOUR);
\r
247 pref.remove(PREF_HIS_EN_MINUTE);
\r
249 pref.remove(PREF_HIS_DATA);
\r
254 public void preMagnification(){
\r
255 prevSx = scrollView.getScrollX();
\r
258 public void magnification(float prefDw, float dw){
\r
259 float ddw = dw / prefDw;
\r
260 float prevCx = prevSx + scrollViewWidth / 2;
\r
261 // float cx = sx * ddw + scrollViewWidth / 2;
\r
262 // prevCx - cx = (1 - ddw) * sx;
\r
263 // cx = prevCx - (1 - ddw) * sx;
\r
264 float sx = prevCx - (1 - ddw) * prevSx - scrollViewWidth / 2;
\r
266 scrollView.scrollTo((int)sx, 0);
\r