From d4918902a434614db682139add1ce2c52179f6a3 Mon Sep 17 00:00:00 2001 From: zhoudaxia <1018795633@qq.cin> Date: Mon, 18 Apr 2016 16:28:21 +0800 Subject: [PATCH] hao --- .../com/timebetter/activity/AboutActivity.class | Bin 0 -> 614 bytes .../com/timebetter/activity/BuildConfig.class | Bin 0 -> 355 bytes ...GoalActivity$GoalListViewAdapter$1$1$1.class | Bin 0 -> 5514 bytes ...GoalActivity$GoalListViewAdapter$1$1$2.class | Bin 0 -> 1264 bytes ...ntGoalActivity$GoalListViewAdapter$1$1.class | Bin 0 -> 3799 bytes ...ntGoalActivity$GoalListViewAdapter$1$2.class | Bin 0 -> 1605 bytes ...rentGoalActivity$GoalListViewAdapter$1.class | Bin 0 -> 4792 bytes ...rentGoalActivity$GoalListViewAdapter$2.class | Bin 0 -> 1176 bytes ...rentGoalActivity$GoalListViewAdapter$3.class | Bin 0 -> 3512 bytes ...y$GoalListViewAdapter$GoalListItemView.class | Bin 0 -> 893 bytes ...urrentGoalActivity$GoalListViewAdapter.class | Bin 0 -> 6220 bytes .../activity/CurrentGoalActivity.class | Bin 0 -> 3822 bytes .../com/timebetter/activity/HelpActivity.class | Bin 0 -> 527 bytes .../timebetter/activity/HistoryActivity$1.class | Bin 0 -> 1785 bytes .../timebetter/activity/HistoryActivity$2.class | Bin 0 -> 868 bytes .../timebetter/activity/HistoryActivity$3.class | Bin 0 -> 867 bytes .../timebetter/activity/HistoryActivity$4.class | Bin 0 -> 1537 bytes .../timebetter/activity/HistoryActivity$5.class | Bin 0 -> 867 bytes .../timebetter/activity/HistoryActivity.class | Bin 0 -> 13263 bytes .../activity/HistoryOnedayActivity$1.class | Bin 0 -> 935 bytes ...yActivity$HistoryTaskListViewAdapter$1.class | Bin 0 -> 1947 bytes ...yActivity$HistoryTaskListViewAdapter$2.class | Bin 0 -> 1232 bytes ...yActivity$HistoryTaskListViewAdapter$3.class | Bin 0 -> 2372 bytes ...ryTaskListViewAdapter$TaskListItemView.class | Bin 0 -> 1010 bytes ...dayActivity$HistoryTaskListViewAdapter.class | Bin 0 -> 6399 bytes .../HistoryOnedayActivity$ImageAdapter.class | Bin 0 -> 3404 bytes .../activity/HistoryOnedayActivity.class | Bin 0 -> 11559 bytes .../activity/PastGoalActivity$1.class | Bin 0 -> 2473 bytes .../activity/PastGoalActivity$2.class | Bin 0 -> 980 bytes .../activity/PastGoalActivity$3.class | Bin 0 -> 1330 bytes .../PastGoalActivity$HistoryGoalAdapter.class | Bin 0 -> 6173 bytes .../PastGoalActivity$ItemClickListener$1.class | Bin 0 -> 1381 bytes .../PastGoalActivity$ItemClickListener$2.class | Bin 0 -> 1598 bytes .../PastGoalActivity$ItemClickListener.class | Bin 0 -> 4577 bytes .../timebetter/activity/PastGoalActivity.class | Bin 0 -> 8103 bytes .../com/timebetter/activity/R$anim.class | Bin 0 -> 821 bytes .../com/timebetter/activity/R$array.class | Bin 0 -> 452 bytes .../com/timebetter/activity/R$attr.class | Bin 0 -> 355 bytes .../com/timebetter/activity/R$color.class | Bin 0 -> 1246 bytes .../com/timebetter/activity/R$dimen.class | Bin 0 -> 664 bytes .../com/timebetter/activity/R$drawable.class | Bin 0 -> 3971 bytes .../classes/com/timebetter/activity/R$id.class | Bin 0 -> 4372 bytes .../com/timebetter/activity/R$layout.class | Bin 0 -> 1646 bytes .../com/timebetter/activity/R$plurals.class | Bin 0 -> 427 bytes .../com/timebetter/activity/R$string.class | Bin 0 -> 5872 bytes .../com/timebetter/activity/R$style.class | Bin 0 -> 674 bytes .../classes/com/timebetter/activity/R$xml.class | Bin 0 -> 504 bytes .../bin/classes/com/timebetter/activity/R.class | Bin 0 -> 935 bytes .../timebetter/activity/SetupActivity$1.class | Bin 0 -> 957 bytes .../timebetter/activity/SetupActivity$2.class | Bin 0 -> 1013 bytes .../timebetter/activity/SetupActivity$3.class | Bin 0 -> 969 bytes .../timebetter/activity/SetupActivity$4.class | Bin 0 -> 753 bytes .../SetupActivity$StatusPreference$1.class | Bin 0 -> 6389 bytes .../SetupActivity$StatusPreference.class | Bin 0 -> 4535 bytes .../com/timebetter/activity/SetupActivity.class | Bin 0 -> 8041 bytes .../timebetter/activity/TaskActivity$1.class | Bin 0 -> 2063 bytes .../timebetter/activity/TaskActivity$10.class | Bin 0 -> 959 bytes .../timebetter/activity/TaskActivity$11.class | Bin 0 -> 2422 bytes .../timebetter/activity/TaskActivity$12.class | Bin 0 -> 3778 bytes .../timebetter/activity/TaskActivity$13.class | Bin 0 -> 1702 bytes .../timebetter/activity/TaskActivity$14.class | Bin 0 -> 1350 bytes .../timebetter/activity/TaskActivity$15.class | Bin 0 -> 2696 bytes .../timebetter/activity/TaskActivity$16$1.class | Bin 0 -> 1561 bytes .../timebetter/activity/TaskActivity$16$2.class | Bin 0 -> 1357 bytes .../timebetter/activity/TaskActivity$16$3.class | Bin 0 -> 1459 bytes .../timebetter/activity/TaskActivity$16$4.class | Bin 0 -> 4592 bytes .../activity/TaskActivity$16$5$1.class | Bin 0 -> 1019 bytes .../activity/TaskActivity$16$5$2.class | Bin 0 -> 2818 bytes .../timebetter/activity/TaskActivity$16$5.class | Bin 0 -> 2265 bytes .../timebetter/activity/TaskActivity$16$6.class | Bin 0 -> 938 bytes .../timebetter/activity/TaskActivity$16.class | Bin 0 -> 6526 bytes .../timebetter/activity/TaskActivity$2.class | Bin 0 -> 1988 bytes .../timebetter/activity/TaskActivity$3.class | Bin 0 -> 1162 bytes .../timebetter/activity/TaskActivity$4.class | Bin 0 -> 1094 bytes .../timebetter/activity/TaskActivity$5.class | Bin 0 -> 1470 bytes .../timebetter/activity/TaskActivity$6.class | Bin 0 -> 1197 bytes .../timebetter/activity/TaskActivity$7.class | Bin 0 -> 1479 bytes .../timebetter/activity/TaskActivity$8.class | Bin 0 -> 5623 bytes .../timebetter/activity/TaskActivity$9.class | Bin 0 -> 895 bytes .../TaskActivity$AddTaskListener$1.class | Bin 0 -> 1464 bytes .../TaskActivity$AddTaskListener$10.class | Bin 0 -> 4520 bytes .../TaskActivity$AddTaskListener$11.class | Bin 0 -> 1017 bytes .../TaskActivity$AddTaskListener$2.class | Bin 0 -> 1730 bytes .../TaskActivity$AddTaskListener$3.class | Bin 0 -> 1451 bytes .../TaskActivity$AddTaskListener$4.class | Bin 0 -> 1701 bytes .../TaskActivity$AddTaskListener$5.class | Bin 0 -> 5158 bytes .../TaskActivity$AddTaskListener$6.class | Bin 0 -> 1015 bytes .../TaskActivity$AddTaskListener$7.class | Bin 0 -> 1860 bytes .../TaskActivity$AddTaskListener$8.class | Bin 0 -> 1464 bytes .../TaskActivity$AddTaskListener$9.class | Bin 0 -> 1858 bytes .../activity/TaskActivity$AddTaskListener.class | Bin 0 -> 7389 bytes .../activity/TaskActivity$NofifyTimeTask.class | Bin 0 -> 1071 bytes .../TaskActivity$PullDateListener.class | Bin 0 -> 4984 bytes ...ayTaskListViewAdapter$TaskListItemView.class | Bin 0 -> 960 bytes .../TaskActivity$TodayTaskListViewAdapter.class | Bin 0 -> 4680 bytes ...owTaskListViewAdapter$TaskListItemView.class | Bin 0 -> 837 bytes ...skActivity$TomorrowTaskListViewAdapter.class | Bin 0 -> 3818 bytes ...ctivity$YesterdayTaskListViewAdapter$1.class | Bin 0 -> 1875 bytes ...ctivity$YesterdayTaskListViewAdapter$2.class | Bin 0 -> 1181 bytes ...ctivity$YesterdayTaskListViewAdapter$3.class | Bin 0 -> 2295 bytes ...ayTaskListViewAdapter$TaskListItemView.class | Bin 0 -> 959 bytes ...kActivity$YesterdayTaskListViewAdapter.class | Bin 0 -> 6248 bytes .../com/timebetter/activity/TaskActivity.class | Bin 0 -> 34875 bytes .../activity/TaskAlertActivity$1.class | Bin 0 -> 1511 bytes .../timebetter/activity/TaskAlertActivity.class | Bin 0 -> 4829 bytes .../activity/TaskNotifyActivity.class | Bin 0 -> 545 bytes .../timebetter/adapter/HistoryGoalAdapter.class | Bin 0 -> 4514 bytes .../adapter/TomorrowTaskListViewAdapter$1.class | Bin 0 -> 1215 bytes .../adapter/TomorrowTaskListViewAdapter$2.class | Bin 0 -> 1230 bytes .../adapter/TomorrowTaskListViewAdapter$3.class | Bin 0 -> 1215 bytes ...owTaskListViewAdapter$TaskListItemView.class | Bin 0 -> 781 bytes .../adapter/TomorrowTaskListViewAdapter.class | Bin 0 -> 3935 bytes .../classes/com/timebetter/alarm/Alarm.class | Bin 0 -> 6134 bytes .../classes/com/timebetter/bean/GoalBean.class | Bin 0 -> 1652 bytes .../com/timebetter/bean/HeartMessage.class | Bin 0 -> 2641 bytes .../com/timebetter/bean/SummaryBean.class | Bin 0 -> 1652 bytes .../classes/com/timebetter/bean/TaskBean.class | Bin 0 -> 4574 bytes .../com/timebetter/constant/DayStyle.class | Bin 0 -> 2168 bytes .../com/timebetter/constant/GMailConsts.class | Bin 0 -> 449 bytes .../com/timebetter/constant/GoalConstant.class | Bin 0 -> 467 bytes .../com/timebetter/constant/MenuItemId.class | Bin 0 -> 741 bytes .../constant/MotionEventConstant.class | Bin 0 -> 581 bytes .../com/timebetter/constant/TaskConstant.class | Bin 0 -> 721 bytes .../com/timebetter/dao/DatabaseHelper.class | Bin 0 -> 3116 bytes .../com/timebetter/dao/DatabaseUtil.class | Bin 0 -> 2871 bytes .../classes/com/timebetter/date/DateUtils.class | Bin 0 -> 10643 bytes .../classes/com/timebetter/mail/DataForm.class | Bin 0 -> 7333 bytes .../com/timebetter/mail/GMailService$1.class | Bin 0 -> 1976 bytes ...ilService$AuthenticationErrorException.class | Bin 0 -> 719 bytes .../mail/GMailService$GMailSyncState.class | Bin 0 -> 1469 bytes .../GMailService$GeneralErrorException.class | Bin 0 -> 900 bytes .../mail/GMailService$StateChangeListener.class | Bin 0 -> 441 bytes .../com/timebetter/mail/GMailService.class | Bin 0 -> 9315 bytes .../classes/com/timebetter/mail/PrefStore.class | Bin 0 -> 4941 bytes .../com/timebetter/receiver/AlarmReceiver.class | Bin 0 -> 1154 bytes .../receiver/PlanBetterReceiver.class | Bin 0 -> 4580 bytes .../com/timebetter/service/AlertService$1.class | Bin 0 -> 801 bytes .../com/timebetter/service/AlertService$2.class | Bin 0 -> 860 bytes .../service/AlertService$LocalBinder.class | Bin 0 -> 649 bytes .../com/timebetter/service/AlertService.class | Bin 0 -> 2961 bytes .../service/PlanBetterInit$LocalBinder.class | Bin 0 -> 663 bytes .../com/timebetter/service/PlanBetterInit.class | Bin 0 -> 6873 bytes .../timebetter/view/AlwaysMarqueeTextView.class | Bin 0 -> 864 bytes .../classes/com/timebetter/view/CoverFlow.class | Bin 0 -> 4691 bytes .../view/DateWidgetDayCell$OnItemClick.class | Bin 0 -> 298 bytes .../com/timebetter/view/DateWidgetDayCell.class | Bin 0 -> 8707 bytes .../timebetter/view/DateWidgetDayHeader.class | Bin 0 -> 2792 bytes .../view/HistoryGoalGalleryFlow.class | Bin 0 -> 3937 bytes .../timebetter/view/IphoneAlertDialog$1.class | Bin 0 -> 877 bytes .../timebetter/view/IphoneAlertDialog$2.class | Bin 0 -> 877 bytes .../com/timebetter/view/IphoneAlertDialog.class | Bin 0 -> 1412 bytes .../classes/com/timebetter/view/MyImgView.class | Bin 0 -> 3063 bytes .../com/timebetter/view/ResizeLayout$1.class | Bin 0 -> 635 bytes .../com/timebetter/view/ResizeLayout.class | Bin 0 -> 2364 bytes .../timebetter/view/SymbolButton$symbol.class | Bin 0 -> 1212 bytes .../com/timebetter/view/SymbolButton.class | Bin 0 -> 2501 bytes .../com/timebetter/widget/TodayTaskWidget.class | Bin 0 -> 7913 bytes .../timebetter/widget/TomorrowTaskWidget.class | Bin 0 -> 1118 bytes .../widget/TomorrowTaskWidgetService.class | Bin 0 -> 3425 bytes .../com/timebetter/activity/BuildConfig.java | 6 + .../gen/com/timebetter/activity/R.java | 483 +++ .../com/timebetter/activity/AboutActivity.java | 17 + .../activity/CurrentGoalActivity.java | 398 +++ .../com/timebetter/activity/HelpActivity.java | 17 + .../timebetter/activity/HistoryActivity.java | 504 ++++ .../activity/HistoryOnedayActivity.java | 554 ++++ .../timebetter/activity/PastGoalActivity.java | 416 +++ .../com/timebetter/activity/SetupActivity.java | 477 +++ .../com/timebetter/activity/TaskActivity.java | 2592 +++++++++++++++++ .../timebetter/activity/TaskAlertActivity.java | 119 + .../timebetter/activity/TaskNotifyActivity.java | 17 + .../timebetter/adapter/HistoryGoalAdapter.java | 103 + .../adapter/TomorrowTaskListViewAdapter.java | 146 + .../src/com/timebetter/alarm/Alarm.java | 146 + .../src/com/timebetter/bean/GoalBean.java | 59 + .../src/com/timebetter/bean/HeartMessage.java | 78 + .../src/com/timebetter/bean/SummaryBean.java | 60 + .../src/com/timebetter/bean/TaskBean.java | 162 ++ .../src/com/timebetter/constant/DayStyle.java | 118 + .../com/timebetter/constant/GMailConsts.java | 8 + .../com/timebetter/constant/GoalConstant.java | 10 + .../src/com/timebetter/constant/MenuItemId.java | 27 + .../constant/MotionEventConstant.java | 15 + .../com/timebetter/constant/TaskConstant.java | 21 + .../src/com/timebetter/dao/DatabaseHelper.java | 93 + .../src/com/timebetter/dao/DatabaseUtil.java | 61 + .../src/com/timebetter/date/DateUtils.java | 418 +++ .../src/com/timebetter/mail/DataForm.java | 230 ++ .../src/com/timebetter/mail/GMailService.java | 330 +++ .../src/com/timebetter/mail/PrefStore.java | 161 + .../com/timebetter/receiver/AlarmReceiver.java | 27 + .../timebetter/receiver/PlanBetterReceiver.java | 134 + .../com/timebetter/service/AlertService.java | 115 + .../com/timebetter/service/PlanBetterInit.java | 168 ++ .../timebetter/view/AlwaysMarqueeTextView.java | 30 + .../src/com/timebetter/view/CoverFlow.java | 160 + .../com/timebetter/view/DateWidgetDayCell.java | 281 ++ 197 files changed, 8761 insertions(+) create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/AboutActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/BuildConfig.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$GoalListItemView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HelpActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$4.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$5.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$TaskListItemView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$ImageAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$HistoryGoalAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$anim.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$array.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$attr.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$color.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$dimen.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$drawable.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$id.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$layout.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$plurals.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$string.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$style.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$xml.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/R.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$4.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$StatusPreference$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$StatusPreference.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$10.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$11.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$12.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$13.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$14.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$15.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$4.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$6.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$4.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$5.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$6.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$7.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$8.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$9.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$10.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$11.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$4.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$5.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$6.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$7.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$8.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$9.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$NofifyTimeTask.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$PullDateListener.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$TodayTaskListViewAdapter$TaskListItemView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$TodayTaskListViewAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$TomorrowTaskListViewAdapter$TaskListItemView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$TomorrowTaskListViewAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$TaskListItemView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskAlertActivity$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskAlertActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskNotifyActivity.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/adapter/HistoryGoalAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$3.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$TaskListItemView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/alarm/Alarm.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/bean/GoalBean.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/bean/HeartMessage.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/bean/SummaryBean.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/bean/TaskBean.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/constant/DayStyle.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/constant/GMailConsts.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/constant/GoalConstant.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/constant/MenuItemId.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/constant/MotionEventConstant.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/constant/TaskConstant.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/dao/DatabaseHelper.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/dao/DatabaseUtil.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/date/DateUtils.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/DataForm.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$AuthenticationErrorException.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$GMailSyncState.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$GeneralErrorException.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$StateChangeListener.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/mail/PrefStore.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/receiver/AlarmReceiver.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/receiver/PlanBetterReceiver.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/service/AlertService$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/service/AlertService$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/service/AlertService$LocalBinder.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/service/AlertService.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/service/PlanBetterInit$LocalBinder.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/service/PlanBetterInit.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/AlwaysMarqueeTextView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/CoverFlow.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/DateWidgetDayCell$OnItemClick.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/DateWidgetDayCell.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/DateWidgetDayHeader.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/HistoryGoalGalleryFlow.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog$2.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/MyImgView.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/ResizeLayout$1.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/ResizeLayout.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/SymbolButton$symbol.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/view/SymbolButton.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/widget/TodayTaskWidget.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/widget/TomorrowTaskWidget.class create mode 100644 代码/TimeBetter-master/bin/classes/com/timebetter/widget/TomorrowTaskWidgetService.class create mode 100644 代码/TimeBetter-master/gen/com/timebetter/activity/BuildConfig.java create mode 100644 代码/TimeBetter-master/gen/com/timebetter/activity/R.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/AboutActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/CurrentGoalActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/HelpActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/HistoryActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/HistoryOnedayActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/PastGoalActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/SetupActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/TaskActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/TaskAlertActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/activity/TaskNotifyActivity.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/adapter/HistoryGoalAdapter.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/adapter/TomorrowTaskListViewAdapter.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/alarm/Alarm.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/bean/GoalBean.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/bean/HeartMessage.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/bean/SummaryBean.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/bean/TaskBean.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/constant/DayStyle.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/constant/GMailConsts.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/constant/GoalConstant.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/constant/MenuItemId.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/constant/MotionEventConstant.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/constant/TaskConstant.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/dao/DatabaseHelper.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/dao/DatabaseUtil.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/date/DateUtils.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/mail/DataForm.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/mail/GMailService.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/mail/PrefStore.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/receiver/AlarmReceiver.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/receiver/PlanBetterReceiver.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/service/AlertService.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/service/PlanBetterInit.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/view/AlwaysMarqueeTextView.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/view/CoverFlow.java create mode 100644 代码/TimeBetter-master/src/com/timebetter/view/DateWidgetDayCell.java diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/AboutActivity.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/AboutActivity.class new file mode 100644 index 0000000000000000000000000000000000000000..972ae39579838d54c924451db74dbba3ef2b7364 GIT binary patch literal 614 zcma)2O-my|5Ph8w6XW=i(T%%)dk~WdHh6Ve(10Ked)S1zcV-%GNxF5WC*sMISO1F$ z3Lg9c{towVEL%NBMA*a5p=zqC->X;e<+EWGHn^ENduY(nA>&46}jK@@F>e z%cLjz1IgeACK7{CB+Av}X33talwmvgFG2eZRiitJ6qX1Z&EQ>|N%>)>JhHgpGVi&N>p0MTJDc1MpCY zS&M>_=AZdTbA0pl{qYIl47(9L!oF%MVNInAZLMyFRMxDFeHD|=l(T75Kbv`kfRHZa zN{Uj}b8%NJw6cWo@@n#UL!c+ZkXx5l);5=Ar+vOagu%I~jlCfFhetUfm^L#V!^bee zI%2{oGqt|$szSF9vM4oSJ8P6IbJ-f_e~W>AF-yWh_7B!EA--?AR_SZw7N&pxIB_rF z6wKrJu!j%>juAT#Yn+keV%^}1=sge~zax3;TQ*tU01#lrn)G>y6kF_=p4G$74}(cf AQ~&?~ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ddb754d8602fad1ac1cf9e21fdfc6d3a98df8d5c GIT binary patch literal 5514 zcmb_gd014}75|-KhBq@l6-PmFUr+(j0k;@YQv@U+LRtu^Qninn2Rt2S#+f$~yQMKv zqXtbiN$b)qjTn=BAxaI5SkpA=nzre_H(jg)n(obi{Y=txXMtJxtbQ^ubKg7n-gD3W zo$a3c)(3sB0a%RpBp3+g4o{n1*V@!3Ro7LYU2*8zPEFrsFAey7s#~w{D6WzyEl0dm zYks{!Q`<|NikBzk6p23xMnc9mWv60yDee|~ZPPZ@p-V_7*cG?a=h2*YhsUimLwlK~ zxI8VD{Nig?9BNLjyVRvQwhO+hTlEpr^;XTFvxH@<9s%Ksnc*tUt?6qBcjt}>$GirD zvDD*KEg+1RA;D}#8pg`7AcK&WD+Y|M*4%1Mpsh*u)hkUdm0+v(I22cd;?u-?lxP&2 zB~*-rU^zv+S;-T@lQ1{8`u|{GT$$Hk#UxCYkWDBZ0kmaI!Bm1-aX3`JKc|pzV1zKg zeSnIsn2wneW)Mnld#f^LVfN5Q*;==Zz($Mn236LsIa^fSUhdTNdi8#th0nn}33CY( zV_HobB4a*s*#LN&m_f+S9b%_5CCp6NUhyd8qd>v}LS~Fv!T=cyv50r4d+Kzb=58TO zU|vK19ig&Jg;*@1D8ct5eKM8^4o05dX2voCjW**B0>qpYGKZHt%ikkuCNX#40x9qZ|kaPIUD@ zv+qi<r^#;WiQ2kak zVyp#Qp-A{7VQLZvO{(Iyi)^`;A7nJaL69qIORBe)*4EUQ*YG}Vabga-QzKLv&0v2^ z^9I<1=f@jtbX4lRyapkOCS#je$5>WUUv7m9ZV7F?k0jBYimuwr_~%|-bNOX>gqxa{u^4fsr za;iQv_AnMLtjBdOrDe4hyRlCs`A3pMNmMf;neN5`83*wwM;*oMRozZDjzq~5R$zxX z#Ak?^j)3nTk6+U@k2}1~V}i*S2n&bVQalWa%!IOz%6L3pS$7JV3at1dj!F0uN9vee z2U!31YEO%d<2b<~lO?@Lb7RG=$CpLKd}?GYVUw`EXJkApY|mO>vbMT>YfZ_9azTDh z#wkHIRF+wB8fPRtPneNn)E;5eN|WLb+qH}r@FJ@~bNf{v`_a~$iWX5d##vd662olR zSWui-W%@Asv7!rSCA>mdkR;-b4%Xt-bdCf3EjblO-muw5^vI`Y&gx&qs}jx=#w7O0 z=s_=gIiC!KyEd6zJ?I#uWF z;%-r$W_*vZsDJmFf#VNHGFzy(d*I^XfoHoyUB|EV?Jc-^`oU1=CGmgY#n6Ehp`)kG z_&#Au{}X5XJGw%BNBa*S3GL~OzMeXF^?au|zx+@H!M6$X;)B32P)DuQj32WbbND!o zpUU_de$EaM@QQd(@ZFLF+}PaXv=?2uF_n~8X~r)JwW+XN+t<(?nr9X_#7nk=O_Cr`+vuabj|}Y*6)9k5fh_{wb32ATT@mF2F7>1URqq zA*a&KHGHW{@%vTY?AVmze*7?Z2$;!rbQ*t6po|PrPV)tYfxi~676_yGX$8LviZy@1 ztB~`1G3H!&%s4>{_lVioVdHn1=LqU}OyHIS9bfARZ1|?j2N997qzEF9W~M)Nv#?mQEjJ5`GR>lS zG@I7b9NI!Tq|;n#XG#a<(qoiQ$7lg{QUUeSLVAbW%e08DligsYLPHT18CKI`LlZ4A z1Zb(@AT2W-qUDBDv@-0ZUg6e;&Zv`$r{CbW!g2ZOclbTK^kRb_@4&%Uq`)!!uM&mghu0kk!kn<@AD%WKja`{l)(63<8L94PQzdM*MPs_@7x;s l673)O7eD257&74+{+({&Lvk1X!+V;}bn%%KX~ZtY=YMN@y6XS{ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..224ec206e7e48045b564574b2956a1c83f09df00 GIT binary patch literal 1264 zcmb_c+iuf95IvKdNiZ~Rp_E%M)P*z!EW!&?P^&1E5Gkb(puBJFCE4Pvk-bU9XYqiL zc;Ey0D8y_MsS=75Rm9e6_ne(Mo|&EX?>|3(0jS}bgACy$h=;yWL)nwY$ix?cQDbGk z`pr?2NNrlNh#E7_v!J6=(^c}K5sEMD;Jx6t<{(EXpNp~ZBcc2LS?^p1#zBGL3mqo0 z3jH9~h6VjMN+C0_mOUW~748R#$475DI3XQtu_l)>%SubryWBv@%D8ca^0m z9&`!0W*o{Q2sd0fxK=_ID=vyC6S5U+u+mXlz8?*HGWjTaktD2j;y^@QktmC2WX>i_ zXe}c!ug1wb@wA?V{Yqy+?dxqDX(61P2w``jJt2QFP{DveZ9?foJW2xjR@v+}=QPZ7 z+Ywxf6CFfxs&xNUnn4^o*d{cWaJDXPW0$aTndq21)3@zex0$(Z%^lT@M4HOffk)V0 zP!SIHpMG@kgmCZ?$Wtnjj1(p z+?j699IfjeY}$PucX5wDlf`{T89cy4o^#mZ&>!)t%Ax16hy6kkk5OUFoO|}0f4=+*z!rR@ zpn)N7*qMkYGJJ%49(N+T;fZnKO-AB5$KjTDz}C&);+!T2N#S~ff=~3O^enxgMYX7c zMuyN?eO!;2x|NO`9XZPlPeBvII^9Y+wn#6M6lPdjSGO<|mq=WvTV3{BpcaJ4O@ zOR{EVVhpY0x~Zi})3|Ms1dkz{tmro2Il@ZQwx->}65bw$Qyp~>J6l5MAVXu^PVp9y zPAU{M%U+v`76gL`V2O%_SjrISkXu`m!s17AnGxWhoQG-Zd9znT83ubFu3b#+ZZm@1NzQdv4{n+ z9-4xC8TQs_q>B4+f5pVD3}0Euv$^a^VWsQ|(!B#+3OX59miU{! zOGUTzG$ke6jBs6P?*l3}A;Qp7WFs17$ks#GJ3x?>k7BC=3jI|j<^4R7)Fe< zoTv^sb}l>fOqsz*?RM-|(F4jJC2!u$FjO;q6qB>{C`RGKDtggZ5lDR1C3980t86(z zrDACi{WzdtKjp0dkRu^baS#axb(EY?j{7DPDVakObDgH(5r*ZZGm75XpAz12e!-Ji z9#(M#M=Pe0Khz#J)mYAu=_9%xkIIDf7{k7rd5d)pOFNFs@IS$Dy5<8(`3jOVwGZMD zPO3PCA@X6D`!G@jbyVF!@iE;Q;OBGPGB{bQ;BkgEB?k0tHqvWy$J-}#(@txBIbo)_ z6T~o{ly}l;hW6V8*&eY_BL&anTAq^GYE#DY;m5Ti!uVny<#uqCsSkmH3=zI9LaUCC7BX z4#QR9AxB|GC>*n0K?NA^%Xywns-LLJOr>;Jpe;egjWennd}cva$tX-)- z?6(Y)oWn{V=H8f{QgJs{QU*>~R71y2-E}$Dg-S7&6}-z3DFyuhbQ}fmS7nKLULs9q z6z~c@Waz$w5F?)E_>jO_s*VHnTY!d8NS4b$C@hO*`dSIlZy{7#T|~VeH25>EUESBQ zxNGBegt~4Z{5dT(;4b%kSa z2Upo{Tw@3E2|MH?wyc0k5i!CCmuNr3Yoy5nuv<74Y9;}%7ht4oj{;CGNt-^SPJxFe zf3m=VL^*)V{@NS3LTw{mnQ!7P>h%%X!xZmt6W#CNJzQ;SAu0WSyB;6l8lBTl`{X0V M$R|^1DD(Kwzl8{c7ytkO literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..0df56808a2c91bd79e8013f8d5e1d2db73b7818d GIT binary patch literal 1605 zcmb_d-A)rh6#j-5wyg`4qKJSBxN2LJg@TF}C8PmkQbfg6@62|00)yLKvb!zu1=LqC z-e7{a7!!Yp7e0XRq2Nmp&p;_gxG~Enlb!SJIp6u2GiQJ7eESX{huaF87z(Ca(F0N8 zWgZ0F(+x8aH4(hf3sukKPH@*X?CCnDNuenGpd|R}v}LT2fi|k;6hs-4%SO%6ZNpjA z=gZ673>3653>c2(xx&(GWTHzuZQd!^!h9}yxWhe$mS9QvT8?5Vh7KlAbd$mn!5xO# z^fB;dN(|A0YwuU5+3du)_#&X6j)reT*1Pe{2A zMrEQ5GvUM1a+Ijz?p2bZD_uNP=X|D=KsS06oMD&_U04;p=wpZ(rpbL@8)tZVEaeSb zi+lp-(68V;!&Jy5RSaP8AjL6;XQ5NfXBsE7Dy&5w=nveL>dF)0SnevtuHlk`iwr&c z=XY33#bw!PiY5Gt@ckGv4C>aqjqQ!~pRd<`zgdrAh+5!pWc$PWt+yM$)?Q7?>ReSZ z44olfKfBQphNbYC6%Q`_Lf{E!F@G45mxI+9IvZ7J%mHfP#DZJ(Og<~*jp;sO;0#L_ zbiHOA({_DwF~@@?*HUo`T~vg74$Y5(ZTLR-6-+R6>{qejg^d51Hwwt}(0{ZFMSsNH zLqE-f2(4zYWKxa=8mdjS;z$sBf_4)mOC*sU`V2Mu6>T4Pbvh)r`-QC898x5!WFyf| zoTN9C3D#Mjk{8L+m;D5F6Q?(E_6si5g;Y9~-Ncmx-Zs((dx%!{2)%4!m%D4vzRpcd u7{Ms9N9ZRYV;;jey`wZNuHicE25H}n8@SmLr|!9hNz&~mTs|^Ndj0@BpxR9U literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0ebd7789e64636e3092a2659ceda24dfcb4d6f4b GIT binary patch literal 4792 zcmb_fX>c3W9sfN^@!HA@aYP6qNoi=6#CAf21B4cnP+v*i%5jQ0LUV>8DP=bUIV|d%LS6viRV!JR`ri z@A#j;|M4#T@9Ad%Y{QQr(JW(bY~L%MaMBLcekzQdV{sN z`be4uchoeddoy~T7vkL-A_DCP^(j4()2(b`Wc;9!b~UsJT%}tX$2K#GDPBmZTk#RA zKWC;7DJq6#I07*vV|rW$Og(33)gggPlk;x&2*@n?5Aygvo@O6ynz?${Qp$)-HCd z#SV#1bP2QtC%ftH{Nmlwxe$Z(M6m^1HC!#Qc>#JW9TPOwf~4)~OnOmPbj@5s1yIjY zbmLkL+XODTct_$oTu;0(Du|hsd8wJ+Y=`wEURzgL8 zA14wwVF#mP_egK@K>x^|eS>@UDGXLqK+1JYD@*aV<7OqwYXmlS)a?5yqO4D?R0{2V z68#t;0$kfCB(SohR)c_iD|QJWir3c~tH#|$J;zYEtdR`+6_oZ! zj9_mSbhKy_0(*bwXe(|JSduZui&+h{(&hC=>MNSLjN!C`fi2TTXK#>Zc0`fF?JDla z>I4t8S0R_e8ztU^H&aJFpEs-wJ$JFQ{lfthf;EM{DDK3#2Au{gCs`j+c2*({(h&S@ zsLo?vlu2qH4Ws1r96-*^LSd(NPvJNbh^?d@+BUX=UtbYH|=c4Tl8Q zy!0uFNibixnT6DZJxxS<8I%q`h`hwzDx+!{voL8E3QCQFgo|QTjq3yknxKXUuxW|I zn5oicaPDsc?RpdS6P}Lhv5T(Ka90$M;-2u)2!z7M2PHnF zEVF`^>9x#BU6uWmJCifi?nfj(s*uxC%x84hTRJB3FawAF!t_Ww(z@ ze4^IxHz+R5S)aydHGD>3Ls>LWJ-y5=QQ>LPzAc-42Tp4Lw_MeA)*oWdEUbxB}X zGqm;9#)_Se9}b*Wu%T(x&)X*a7*zNXYyHq^6g$l?pJKc^Q8 z2D`WA^TPE~)sfb{N11b3<@sBJ2to>meC&plAA$CE^|ay`Qx7YyYy2%oJ5R6RYzNPU z)k@dqGl+GqJA;*7XR+!@E`@Lf|3^83hog87YdDjfD*|h=&Rc&OuJlQTmXSS4iLG6y zN$E6J&f?|eY2?mX#MQ?vHqBzQ+C7JBLO74@r|_zC*cn0zy~FCnme^nkyN^MOoIoTz zi{aQC=8zhT-FgO-r5(?rKc>5Wg4OsbZp6>np#K~b_yvmi zB|Dd2;XeEtkKi|W48O&3{El_(_jnwCz*8Jc_#@`qkyzPc3RlDK~L(*NTA_EtXkp7x=^cWlUmQHw&^Toqg`9+)n8Vi0D$vk~76?rh+w zptgiooqK{4ACL2|jNqBz%0+CRt!MLm4Vx^!)qu^j^=xXdxcGL1E3x`3ew3(~3FAAS q)ZfMTI7S$x-^UL*>tdWNVXt?grHyM_@I1*XMb+O)e_)C9{{9d9*@D&p literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..715fe9764b4af5bdb368dbad2217fa041a0d2822 GIT binary patch literal 1176 zcmbtT+iuf95Iviuag!Kg(h^F!77Wd$)HJW*R+)>CT>4NH@w%~B$p*)c>`f{@3yFfn z10TRgA!d^_NNrwFEUjl}b}naU&i?-M^A~^?4h&=%4*huOC^-~ep_E7*?khQw>Wkx! zlSD-7UChJ7xy{y!CsWmt;`A`!BMPuv267D6fKRv+@~Gz=cL%~(2J#F$JPMLn2F`>6 z935pJM{X$n&pL~UM8c3)eVN(^gv47BN}HiH;h`PAmOPAm44dA0eLfmFGb=gepUFt7 z7Yv_jE0bo9-6qP;TwTW zhcYElY{IayBo9OJBpxTecq{e2ww7>eUlWI#@Fw!ZIF(WFNT_}s7{M5iDuM78yI9Xb2$XJ$U5@1y{kLU?!Xq8~n=@r^NCp}BD+-RQRYGdyVR^taM zU#E`O>0g`%&`4N-D(O0q+;Ib2BpGgEd!FhQNu7MX@eS5@+`5p1Nf>M}%~75C&2vx$ o0p6kLEFMsN1`lDA%;6Ds(V*QnovfjWC;0-|_VJW_H46Iv0(2NW-T(jq literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..644956cb1cf7e5f30a5e15c9066ee28a9db5bc15 GIT binary patch literal 3512 zcmb_eX?GJ<7=CUOI%ztE(n8sVYJ|2F!d6+rVw)B$q^;UgSyY@R({^Yw6Ec%7AhO9K z2t^POK|p2I!&ae`a*oH39{maW(FFYoe$eB4lgUz=E0&M(kyoemw?XaLwL@p*USW39+IFF*r_2EE^9BPtU{4zs_p4QJ z*SZ9}#xNs+V~BaxXqNn8nfzXX!W=AzOTY?->CZU7MV3@2uNYPIB4Q<05&P>JDm~lQ zdMelPC{JN*G(w8nMkv;xQo!q!EUC3xx>1`P5>W*=1s!F0SZ-+LkxQ2urbad@P$Ob3 z=m<+NOf;30q^X%FrAbWt6!iQqwIbGYr1qxDDo@R}`pUW*0Um})sgvR+s=|ujCx`5) z$D0BghLpg#21ooB!|e3q zzDTiOl98M?C<59UWTK1p*{ONP`U>GDQH@r&4w4k9KT^hpL;4n0?nm>ef_BV)X$ zCzZKj>oAI4rNlr0ngEqy?lWNjuepi{Vn@my3#gios5~WNDoi9ed3%j{Sr=iXdwF>- zI?*kli(zamqLb<(da#pHhUyIuz#+M1My-Gk8S+xw>ZBk~nU6&5;VC1=lH1)--&9lI zWWzoNisoH7z?1P~hGpp?YFbRAFGFUSA`bbGh{HHS@N^DuPD$-^?c|;~D&iPEO%Xfd zx=+N8z>S$^q?jj8i0I|jb%LrHN^1{~*+$u*;;gpGJ{vw`m>+Kp@n#S`ax!xCa(Sfp zZsg+4$caOd-o8ZNxE;NG?dip1Hk@Xd7Cmz>di+jg@O1RTgXr0Nk=y5@cOFKr-v9H# zH7XXJ428*{PW5-nk60O{d17XAIdjZYI|ylAq{wQC{eTqY1Iv&QpmCyT=)lqwObjg* zLseI%c`cE0sk&;qdo>x%YcwQp2gR2;{MZ|{aL6mKRrq)`Im2i=pPM0QHLBOI>C{W= zWTRd4iTD;*shjYQ<__zI7O11aLTV!`bJD|cI2cpH2Q;x(rAgK8mvmj$1>7KeiN2Vm zl#U)Y*%oFPmobYbK@0uHAS*wgkA^^g0Ur!$CeNZ@E<{?*qqkM`ZK3D5vbhg2wygXi z^2;8f;C@VTBK^0=Hc+c#0Tj_U-$?41gvs<|n1ZQsQ>+)+bRh71*#qSFV;Vii4q(=K z6vf|W7nE5BP~MM4H!%1F6`LPnX1RFNf!T{!aBv;husBxA7j5Iv3qt(Z;JIX4yG@B z(vRb&wStpLn1u<^DO1FGv4Znbg?zgH4hT%gcos%6>x6@Kqn!0%DcgxwwhPa|0DfbKVtg)%b7t~M?BR2qAx6t_7iV#f*l$G`U*J5s=^)(r z5*G-;MMA(m5tn>Ll1n7XgT?U=t_!GOf0K(WxJ<$}c-LD5RH^UZ!UJFlO=zW)GlfJXsZg!gGx#!ikJwvu$~h=-Q1npA9l~A`X9SBgdt;2j~!b$LdtYg)({kZgR}2BP`|Oe5lN) zQJE7q5@j-5=`23eSsNyg!R9vNBp_TK$r{Vx#U?_me6${b-ne3 zFi7SsN#b^&Yopx@!mI7MqwS0done*nBBU`9LM(-7qaPu{DxtmY3CoE#{B~MS*dD1# z!GwNNrK%V!t393>JHAN5;k-%xGc~C>{7_A8%CEKmeeH_z@B5(=qLDFdhlQ$Zt^?d7 zyqvS)0Ui+c{v!xs^@>%L?p|6iml2Pp=WSW{j@;MK6^#&Jp}7}5?)CgY8Vni8b$P!b z=qXxqfN*#30?WJKu<}(<3pYh}g#&!SEs;^9hq#S9&HGv-*RdgYU-)-%ADhA<(H^4r E8zm+KC;$Ke literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity$GoalListViewAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..eafb3d45756ea673a4ad8fb31c016167fe6cd3e9 GIT binary patch literal 6220 zcmcIod3aRS760ALke7^)7=uzEY${4JBn$!~C2k}@IyM1>7zI&$nLNUS$-Hsq4G=Bj zinzA5i?y}2ZgpR4CSY7p>r&flwY9djwfkOc_f0>){?3~>OCIx2zR>x;dH3DrEccw> zIrrT6@&}JU1z*tRiWo7++GaTek+w`KWhR_<+lVjq#%4*U z!%92dmbratuaP8yhM>X}Bhj0(t=`CXtGCZ|BCST+^yU?+lXfzb6cU9A9r=~p*pJ9y zi^4c}g~HUrtjA}yP@ZWedTm*DNFT*7@3ov(C!z2m|Kiq+1?*rv*sx@cZ|X;6j^zqm9U(X73MXJ zin6g=A=qa3n$_TrbR34d5CWL2V*;iq1R5H{wj)t&8 z{RlsI7z1|3i6%D14MIjo6Pmg2O)0xyVR1vjkuf{r5OR?=X?Hj+jfEK(EhD+K1a<|W ziNtw2j>CNMWln&?+=l2#QUO|f%FZPHJY58eVHfHche{2L4n%W_Nkcdui^Vw~R+v;& z+*QwI6^-UR)}lj0l`KC=$H_Q_&`+Drs*IDidd)676Wg5gN3daiV|QSej`|Q_6GK7ztpm|sg^3MOpM_i%G<-zih&+#cM7qHt8$C@&H9{hCs&qSb z9Ds>8~njq|zqG#Dpbkc^n#0%3ubu<=f@775Y-sw8ZtYq)~R z+81D5OjtrtO}SU<*n_LQ1ItZjV%Et8qj)iyCt)VjF-^m@%qc#u(SD=P%(J~-$H(yr zkL?;Gu{GLHOiuB$Ezr1pXNW?d((!4btm+@&v7WY5l59S!<3@arXBQJwmz<6x{GNwn zw=Dg3UoIL+E%UXTE4O?gv)WOj@xiMBUPl)Ry-m~ zVb-?UNUb%`&zOmr=^DEN(?YlgU(s9`Q?!-E2zhZL5N9XwP~_VS31NAXo=1vv>4ZE-8MRdSq}FjHzIdL_kS>CN``woKZw`#X6Q5XB0!OC9dzl`@&8Tf>tyQr;RyG8tKB8F9NWpaN3x zJc0eEN3D2|TCcYj~bnF(ueaJGokNg=sjMl!u=664-|d+n02FU9eU| z|9DX=p(oKfN9LEwTa!GRHN1Kda5g`LSMZu_=5>X$#*VWB1d28zWI|}iBck`GJlfO5qt4XEQq_yDUeF%wV!J&3vN8bAF@w%W1}RSpR=ezi?a1%UPt*eK6$|(h##lUd9Q< z*To0NP*Rq7C}K%ood*;vyUk-{9K$6F5Yox9E6_NaR82dF*1E^y z3QMAJQkfh4Tq*x}B198BblT!ZI&G#k{9ED3e7Y^T&42jtHt9Q#c&Cxt*Y`nyRcd}T ze?H(ynkc}J4ppd-TNd9c}-9n(MZ_=9 zEMad+FpCpq?Si^fvsk(x?SqKs`X9~rJBo_U>yG_9ONv%zfBefh-bx z;au^6Pr}V55@r@8%)|wrgbVSpoCNhYp*4=w@2VxirWdht7(3U||GSn1b0Qn+E)}13 zP7XHJUFJIB@I7FN0^ z6C5kpM)4pq^bpq2&1d5=Br%8!*6!vE7SdJjtW~Sw5e~(|8&C@hYCd>v#@t zvex<$UclRU3Gb+NuHzQwTvBk{yPo6dCUUNHf%7iqWT|xkf5Z?a1St#rxK;T+)@ayS z^&U3pdNr3a#d>IZi)@2j6dT495`7cvo*Kf_E1T)BXU}Y|dm)P#o9kZA;v4&M`5Zc> zx$c{}4n4`vx7<$qFkV>~ZXUw7v-nPP-FNeYZ@7bR%3v1XFGlGi$w=xPRH<|M#pE2+ zsEs&WoyQ8uz--lng(`-VR4<|`&JQR3I9KgKkGk5mLpY~y!45IJg)J@wVzk*7ZmtGr z;K#IGptg!%Q6BO(dMsxo!&QdsnbV58~@Mw-^up9^>@0j0{_52+0JJ;{)?CW|5VC%!PD_yKJVkW{9eg5Ec|o7 Kot%3Qwf_Uvg?Wwu literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/CurrentGoalActivity.class new file mode 100644 index 0000000000000000000000000000000000000000..9f652ad5a06fa6e4de285806773656621d988fef GIT binary patch literal 3822 zcmbtX`+HM&8UK89ZPPPWQmD13Nz=Y@H{%)3rSyv{lbl}8_c*5~oB@UQTBoPOSulO_$tXVnKz&U?P^{rY|T*LVN; zX8;HAhcJ8!dy19Cgkvrm1;cR+JE0dHvtc?*iFDnz4a=FV=;fq$7Dhl}n{JitidjnN z)oP-JQP37hm^Ew8tZBTU5X-j6UNB1whLdQa#y!%EV=T&S)4`PS^vLF5kP1~*EKHRUcrDizk zisi6OnpqDFXM{mvSi=bVX}owYvGZc)zpPNH7goC zP6%#1jQtGF9V#k<1P*98h>s{lXwh1RceEYqD8g3uBo)z`-Y`lTtLErd(a1Y)90t}5 zXoo>eeni8g;!}Uir&bAv!9X7UKdUK%F&vSCV4dtA-c%MxX2W<~VW8bcN!!+!q+BC7 zih&-a70`6OG2-nco%@u|T=MIrcn-LRJw-f7o=vDu{ww_7hcog>nV$g{Uu{l5~u z7eVbN?;e*j`kvQt7q;}FhI$yhA=Wy-i&#SgyleUvD-C0&a?G^lI^mE#BdkjrUc|>a zq<09wN z8a^Y2MVf}?j7yFjzpmkPuDxb0InO&Nt4o7k#1}MtQ3lIh#d4))v=SP|8wy+9QgW}x z<9h8p@4E=DV4x3Q!Pmn0DtX!jL~8gtzQGVw>ooq6&LZ|&r6V^RG>>-_!ME^c7~gKG zcl)04Fcu738uB~doNkx7hotl0!wry=B%jfSVaE*#-E_Zk;wlk*)S zj(ZS)xAH4TJZ~#(i{C&ruC5c{&!GGa{oduehrffA4eX_seUzJ^oc$Q!_xpLOHTiKb zKESVlY%ZScDlPNzY&gE>26o1yA6mhOspf%rJQ`oYp1&X=>fUjmp%pyX)_0HV$suZe znASf^d&ek$91q}#t8=g^*V9Q2cnF86)hBC^r#($u#Ivnb`EdLe#^wkdUgy>pH*}Aa zFiEylhdWz6(LUKhngV@q(UdTt-k`9fb2pG=oT900G&L1X<>K*WJQ4g8PR#k2kA39s7FtDI<$^H7z?@dQZxbA|At$D6U@>i3-mb4JA-X_k|mMF8NQ!mu`l8& z&difoMjqF33V-8#{X3q)KZyG$&f;Go3agn3+0 zHZH1HxFcMlL}`NK&C2kqW{Y|mKc;rJn0g66A>_k0^&;LPe?FBwKb}1q>=&{K&k ve7sG-=f+6}0NBK0H`|jezrk-eU>WLW+23Lz+wWZFw;|z|ZGDW-GSq(niMZnm literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HelpActivity.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HelpActivity.class new file mode 100644 index 0000000000000000000000000000000000000000..96576b719e7ce34a3a68adfeb261c801fc1635a8 GIT binary patch literal 527 zcma)&OH0E*5Xb+Uqz_}Csn*v?5NRtI@LCbHAT0zhmEO0>f-CK&B-@H7Ka&>=9{d1) zC~-Dz(SrvsGdqv{&41?e>-_`31&#`^7*4`?>T5X_W1+Q3d>(4Kkowv0i^=SI9Tea& z>~Iw&v5b5^oB5jxL;g}KsjnF9R(r(Y^x{aku(4G_4ta)ZAeFeAPsbv;=i`ZB@Patx zlMzp(iPuR-Kgg8fH29C6E<-U^y+m+Lyk;xdNQ+bdX0D=%=(a~jM7@Lxs`iVGvI|2|VwzO&>U#7@08&Jl4?i0*19i6i! lY8}seL*s{0$p)5bSd}=njMZHAuUUq@hkc?k91zFC;WsmZZwCMX literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$1.class new file mode 100644 index 0000000000000000000000000000000000000000..d390be908320b7f57a39e3e2d6181b6a983d26cf GIT binary patch literal 1785 zcmb7Fk5d~(6#f=2IS7Xhu^`wMt4$?8+McP3ZPS7^Pzi=c3xd^7<+!Y5>*db5EEN7M zXEb%}jDLWCl;d}oD9#0DFf%*1`*z>k?|u8dmp}jd{SN@Q@r{WQfub99Y^^$SPiieg z+i|rzRQlLnQ(YZ|#}5bVe8q$zkbU7CI=1Kd`*w5hg>%~S4=0%_e=-TVhc&`5Zn1))l(`^r~(N#I7|++M|P0izbQ_4cU3Vt6#YX(F2U>Y{&GDq) za>8l`^SEl_9f9i!45!1k@GjnCzVVZ5ayU~sBW@n=o48Jrhi|p8fC3+cLAEH%y1$`3 zFCv`}wVpv9B@1QT;E8VXgi%&zv&_2M3H3j{L*UXdvVm7zor-ONLQhuJ=_+GI z8OPEI1q5$Ob(mqB3^NT{j@Tnq%%#BWSx5yko54Zo%10`y^oxmBcPmPo`dal}FX%Gq z4XN7!1!UEIUxqP%l7gK0Pd~#|HkVP36ht-~^%(Zp5sqk=|>ThFc=+pS^5RmZ+NTR!<8Pc^-wGuJ>2YD zD?5W-nm&Fon5Q^T?Jf;gV_Yp7m!}r8?JL<kSY@oq0Lb8_en6pu=@~^7NnSm`_!fgc5PcITabjE=N=OR?D6QM(18Nj5NJU7f0<}`Yr6~7}vr3jaHnO)xJ@5m# zAP^FN0f`$@5r_jnfFFgJb$uv^LsnYv%-h-bX5aeP?;k$_^w6o>)9w0mP9m8Vm0>T)ZgPclnJ4%rz-XCFG6F$yI&-H!ti4n?9& zo`XfxG@(1MxYy&R7pB>r2Qp2?gqfFH{d0!o@J@SJMFT4~mj5;^-*<5p*Z3l@ra}{F z-$4^MZQLMi&1s*DTc{8!A_%w>uV)x;yI4C9-e*5%>4Z@KUyFQ|11*BXfq0qw;T*(A zNg$sp<5>Nl*WZ32js;u$BnrYfRncT1^)wz6-2Et$$!;jpRHj(vXR-L_qFT+o4Mzo@ zHY$u)IeNgkL7YzaD}TPh{gTxz8Z6r(l;{m=oV$F+pqH@3E8#NgIm>Ha4a;`-6jwfT zz@yF6)Ej(-=UV3!&Uak@#4=g5YLqM(r3Uu~dW$B#!#cgkCVjwN`k1LU&X{vm*1$SE gX5Qd)C0NaBnMpP|DPRjNUW;t~nY_bgrUf2<0P4WTvH$=8 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryActivity$3.class new file mode 100644 index 0000000000000000000000000000000000000000..e737e96ecc7fd3eb59ea7863e3fd79444c6fa2da GIT binary patch literal 867 zcma)4O>Yx15PeS4Y_cpgO-uNO7M3IV1Q# zNFWdgegHoTF-{{Pr5v)7*PijbnR)a4`_Io`03M_5p~TP;W)xX9l0#{&%p)$WnkYMs z-l)QweEMQ;hdmD!hQ=|U@F?RtjShy#QdkdFhApm>+^8g)D0vzU=ocR7ex}4pOj)Fs zIYZSRsUmzt72_pK?h)vz(#k$#c+g%N)fq5U`X-TeFkB4aq2{BE)c|!g7|LxIuo^2Z z-;GB@nIH0DCK;Ns5j-34TseF0thlBbc9$(4_NZykoN;Gpwc~S>+3O5^T*Y+{*BEw| z97TW|@EK}c2w4PC}Z%D=jipD4p(0dt{OT zcX5x#kUF`zm51iT%dxda6aUSBJWf@TN*lTH@jT{JGq%KtA$Y3^*UxxS$il-m!`eCO zRCM84V3RZ|(^>&*G@MlQG)uJV@X33DPEW{o9>2T$4MF!iE`6EBtU2H8#-Tr=Np?UO z=UvAJ?F^UEnrC@VyUSARens#DR~B=8qS~KlIa+6N^Bjc0P23`M8Mg^v!X4@vsE~wP S2RC&fva-E`husEqO*S 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 QSDWROAIiO;l`SdwKN9}5od5s; literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$1.class new file mode 100644 index 0000000000000000000000000000000000000000..06eed94a1060c2e8cd88b2ecc5038cdad21cafb3 GIT binary patch literal 935 zcmb7CTW`}a6#m?lWewR@M%l`^Y_I^m2tvyX(hw4wK&#Zk!%*Md#A;oV7{%VC{w3a! zhCn><1Nc#h;}9f}_7X?2kH2&Oj(`68{sX`eeHS%`Fj8q~WGZID7?FoOGV)xSRd^z` zQTgg!CStyNRieSbMV(=rXK}7%94Z~2kerB|Va+V04xUoTaiy3??^K=T zk$595-+Pz7rYB2&&S^ZavnWwoX7h#s?qOa zo$v-p&*^Rvuh;)V+gJFX3!5#A6&gl<5t?-O$;YDCuuUh!b+pPT%Q8yPzrc-8q@=a~ z=P348?*bm_ZhgaD8{dJAzgbkaKpRUOA}w<46gh)32N2NrfU-O!`#NfE`#>L&Ttf%l P0<(E~^m}Aw>!bA>scqv+ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..96ea92f5497b5080ddcfcb4c4502894b26816090 GIT binary patch literal 1947 zcmb_d+inv_82)}cWF2QojDZvaEvGHmreSef=)s)Q6o{#lv`y;vuG*|eW~j64?oN!N zzCh_4a78QSqBljV#K9a?am{-`;R=ZxKnTP?wvk=gLW*Qd)ZbVn8c3; zB7}3UzicbHES7{)BCs7-$(mHF_KXabAFR%MqU5YjwNR^tE;`}Q1tus;adE2TRGHJt z8WV6YbE*Dm%BPEjfoZ=ahCmoKVIZbYn@kKL9!C_L zO$=iTA)3;pqXp@Sxs~N55iB}O6+uWAeAlTIoj~e)3mnivAr$&%sFmfQ7=APOgt1hi zD>b=vF^--1z`*;2nSSNM#4hY6#2nWZVQ3vC{MyIxr`H#tTpW908Q4ddSeJt)KE(dE z7n6jkb$XFY7aA?HqGZL^J(L?p3K;`w!pQ$$OdP~VTrg#!2wPM67H3Cuuz_BY2M=zJY8|ZP=p4)=X7?Fu_;|6`>o|YJ_p#%!!OEf10sop zo`ygosb?X7d?LJtVe;!nJ{{+Kl=soh!Rr{w?7WUd<|dN=Gzhoyf4srKQKP3ABITR0HGJxnC+TgXOm1E19KSsf=@l!MG+9nUaA&tdVNp%*wpFL8=qHH;Z+Dr_0Us_``nY)%xjY)AxinCE?f bOYs{l@M)Z1HeeCO!6C->;s>VD?(pvoI+Q%g literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..762de5533890377f0bef3afd7e0bb73e1e756147 GIT binary patch literal 1232 zcmb_bU2hUW6g{(0w!kWsR#g0~t`_LWT3%6OgPLl#^3aC&VRr&kmtC^6(D1WNtR_DA z1N>3OJ3!l{<;8?eW@qNkJ$KH%_spNazkUN~VBdtn@Y#z7P9g`QE0RRS4)+o{mdV69 zlq!khNjnripB&7s_S|~H)mN7sI#Qe+_~`1+q&JNsLJ>1$lD<^-K2dU)#i_}VAM?Nt-b)@tJ%$bUf(RcDotc%K zGOuMQleY}Ky1cs=T~+Haq+5|MvS27!FtMsvYZkJ|<&eUa(IZxCLR&1n^m>& zMCW1pQVpacc5KYBz90@m?l>C7p7O z7OJRGGgLo1YmG?#gCn67?-8r5s(YpD<0K{q&6^h8GV4=FYHkHwDWOd4P`r!cT-J^f zxu$*-4#Vz$C301&1&;hEi<54(jud$Z_voYqSITndPDmZ&4v2*Id0c? z&QYxYMCseq@eciSQvkKeuu!JG29i7O;vUTm_feULdPlPkzFPl|;txEy7Q~K~$0e literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..875e5a1f2683f727a4cfd6cbae71868302245cef GIT binary patch literal 2372 zcmb_eQBxaL6#njpvJh5?6sRJW(#AG{wrdO3YD$%cR;WqQhC;Dwz1h7D7dE??y$Le@ zfli-%^{GDi;ENBPX(`$ne}Mmk&iE%B&rJeRlIh4yGPAk&o;~N@@0|19bN0`_fByr( zMffHRhMP`Mw3RH1yiiJ%Z0;yok!s7Hlc5SqTMNE$`PNKb8m~(idAOb-g(WFAXI#EP zmhnjw9SpHGUg5UK{er!aUlWcp(aA8zeYX@y*RGI(t*zn zLCUlXQ;MOd!o9dRE4ddG7zQ$XK={UnU6Ybh=N0Kob(Mi9+IM!VqmoMu9qGUo-C*dm zV4_RUUboPVXcQ3~wa|kBhDbuI_GP3mZk3C9QCj4APcZan0*8A`yd?FyF6_{eW5~1( zdwi0DVg|JgF$^X4ec8`nD!CNJ2#%Y0n@}}J)xxOu!*pd>lwlaf7*3fu$uQTh*hGUIukW(e;7p|41=ZaDnCJ3@tyD#18 zC=xiQGk%_7Fp)WEQ;qQ$-nDQ67aN{VGGyE7>AZ$9W#JMihMjaVgzqwpB<7P%i0WRX zw8do$AK*jnO;B@@u2-Vjgmkaqs)=ca(F3V>d0@|S#q&HAca-!je1wk)f-5|si0rur z@0`F_!dG@$kKd_O6S5YPd(BG8`7T@|zP^0=V)xN6yAOZ*>&Ks8KKx<#(c>s)al^!Q za$=9no6;=^WiJLiR2DwL9Qj)0>tc}rP?h>$;L@wSloQ{Uh3|+I1+>-P6row%wD76E zFdgA)uo*=b3np$coI4P*SC?lCpW*WcQHV1$ha^g>p1?At!`2m^z>OhiVe#J#oa(_6 z?wVL;=&h1=U){nAzMvGAL@}sP3J3qoqFPI!J+t^yv-&HlTEv+{Ir)knR0VtA!Z$jS z1Ad_7gDp+4oKTbqzaWU$tio_~KM#$1#t_W~<&qf{FgGPooFq$qwvD%F=-t7I{?jjzSm~!- z&(!!V5zOc=*8 zWsKqyjhAUm8DqF@oWxz@R2A@04OAU4!2?I0AV=U3SOYEujU7by2aq%yrZ-2h2CuW5 NWLXqRN4reFe*pbyxK988 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$TaskListItemView.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/HistoryOnedayActivity$HistoryTaskListViewAdapter$TaskListItemView.class new file mode 100644 index 0000000000000000000000000000000000000000..4c116193f01dab2311369622fa1739bbbd81fe88 GIT binary patch literal 1010 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$1.class new file mode 100644 index 0000000000000000000000000000000000000000..98e379b8608fb4cec871030bec83094dbbee9b8c GIT binary patch literal 2473 zcmbtVTW=dh6#m9>yNR<+Q0u60wom)2vEtEJ7%{>lw($;B8DW#0p6MGYT*WFzw z4YxwMBp@VsMLduP1X7WZs7mUBgm~tEw20q;ggCQynm7(36)Ww|?3puXzVpqw{QmdP zzXIsNvH~ANn{H(_*T{;5a9v?*Tz8EH!(GzOa>pIBcxIp^Xz5nqX9#jLX~_Sd_kFjrJp(TCGSp=%Y*Gc<%Y zTPPh`jh7g9B}F2iQZPVauwkdDF_A71Q!Q0@DM7(UGf@1F?|+X7GxFi)DNkT~TofuQDhLJd+nwv;TcX z4+(yapb=58;|&E@84hg;ktDaYVeaw-cfSrr@!;;P6sLwqAKb<1>x>1soAyzYi8 zJ*$*lt`xOKszF=@|M=>M2dm5XS62W0@|y=MU)=xn>i}kvR*<4#StohXNK!Ir(-sv{ z6$a)grm}oqOcMZxi5-C(N^?6duH}WPi!kNXcDCt)XF<+qW&QIzX=_m?sih((6LPmL zvetr-#lcqLfR0|T7(EQeBNc}&{QrBa7^m7{*-KvgNb(%@6#}_{>k1Yb!vDjJiY4h~ zgK4?O?2^3vxNwOiGbQL=sg#1Qq?wOi1=S?4q1h?=my$qR`%m<_3-w1& zXRnlbD^$iXh$Iwu;!bVBQPqOdZ@1XG(P3ZZSUa2pwAEfti+Z_Z7 zc=9_e7iZ0++;R`ceE1EWv5wo&?%|{lYdAF-?EeL4E(HhgVz_e+V{3T1fapcJ?KaNK zB~mWn0xbtG(|SpV6>!B<3hGq_h&9ZY9c238trl=?4SDINAJWZU)X{g0QXqmOn4oqR zC0UFllemH@+@vzNf^+zU#?NT{9Oto$IBroB;ZZFMXvW!ioK0@h=4KZ zco!$=B5shrq_Md69<9Ak5(QOFHGkm)Qn*RKKAL?v7xME;Rlu6RU|I z`~m(ZW1IzwN!t%xvOBx8GtbOCGxz)N&tCwV*m00!2xB#hj2wxcFh*n%kByv2^CkMo zwRx|2vO8D!O$P-A?}$%$l<;&A9rTVwY#bCBws_jll;pPGtPKBefB! z$QX)dD7F8bLUxvo*vh#wzEGc6evU&vINR}8zs^4OO_)w>LZ zw(5&DFjQPPShc5XF4j;gA&+$zWo$6y18Z98$W(k7k9s2e#CwTgsCHD$lP=Gsz0Z{e zTRB5x>D>G#73HWIgABD`k?VrrR=r!o9o%zpm!e)|#l?M_r_+~uBsE266NdFma2QI5 zYMjO5owNmPp6~mPZ8(+sHjNXdWjfdwW~llOo-hQZCo^MveA`)_gz# zgP`+&qz+9+5n2~DdzNl@FQrLpCtPcx9W)5=tndXdlZXL-S*Kva+!%f_p zL%k+x!B@j?@V?{rISfXvVYw+rZDu#eAP-7-i@fuANd7rIf={x5$9Rg6PF2#aU>nbh Ib~LBoKisDD>Hq)$ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$3.class new file mode 100644 index 0000000000000000000000000000000000000000..88c498ccf5d1a3af4928cccbeededa49b1764356 GIT binary patch literal 1330 zcmb7EZBNrs6n-unE0h9r4p0OIt=f%AdGQU0D2x|LhL~Vx^xIu`vt8_3(v}h9uQG99 zH1P-cql~9zYzTgsO?uD0r{~<~ygaABet-W7U;$eSdKj{nTQ>t)7iAFy!ZW!Q$c79) znQyosY`NTCZ7K9c1#yPtK5uZ-=1$ezE$<5}P>^7l=1#?PWyNerab%Wg(RZDKEv=75 z=?B6Q9z!CiNnf8M$YQscd4_=ow{?46a@(ykq>E=j{NTVm)sj&nG&=AZ*ft%Or6YqC zhBc#mpnu)FohdQI3vNa9gW-w>1%2V}s)l~3;ci6305labjA@4BVHfY z%ffrh%eG)h6*Sozd>{rjsKITJPFbn7bwSPQFz}osgSzJ)dY0IfVY5dr&dzK&G(?LH$Ff~t zI@KK!)ZB`ORjd)S{F-}IIP?Rz-VV?(ik(5*3q114U)Dqn)wUg)uY%2eUr;|c=)$wM zx5Fpw3-d@Ep_J(DMJ$;NsSPAkA+aM#w5Fd#550pJBCBEAt3D+CFOl_iTGhylJXkNr>8z1A`QQd7NHR>~X6wGsWEmq}Ci@ksW8C@y{rw5)1?$10Fqp0AbcjX#fBK literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$HistoryGoalAdapter.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$HistoryGoalAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..6a7c1bcfd4a2c7b46ed8eaf11a75caf9bbbb0ba1 GIT binary patch literal 6173 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 QVkAsOd{Tg$m>6CE1A(4}od5s; literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener$1.class new file mode 100644 index 0000000000000000000000000000000000000000..341a15284d871f8087064aef03bdd3b66aadb7ec GIT binary patch literal 1381 zcmbtU?M@Rx6g@)=OUnWU6cq(QS8a>36cLdU3?Y7CijZJx;=k$cgbr+Xn(olXNAWRC z{2>1D0el1#jZb2{Q%Vu*4+5L)-nn(p859s%U1w%ShCQ?u;)NkD_9_eR_2dk}sv#v#DEs)+`K}K4HqUPi*#2He%yw2T#hdb_OX;*mKLJz|f z5B-{wzFU`~;TGxRY=$S&8G3YCMox}M6wb~fPdLjmlzN5Xar!(!nIc1cP5B}LhJG6s zdXtD@&_)6&hFIDx7%a$8yxgypMC}zX1%hF?pgbNFc}*I>6^xssF|3?}kCUULS?aK8 z45R5nM@jRUViK1zX5k9M(%EZh<0`H(^m5M=QRK`rl+RbmQy)8@!~`ZSTxUq1mcNZD z+&E^t!0`O^Z1b6R85`2y5!&5S)&1&g8TzV0Y#iLSaEoE=sMwvWY}`SbAt9sfvTDe1 zr`a2COm5c3wCNSgmr+GV)B&u{Fw)+#Ee86v{o9&*dmFskYMJD=+OK)ysWeS>@n8AP z7?n}`Jqf))MYQRL&}HS@xQ}^;J{7j*$uNK1DlPV_KChCxjSTbuA+!F%w6?t-lB(AN z9z`Ou@Q`8Xs0eM|#GpgQL+!1PZU#(}f@1V`gQZeNNOa?L(VIY$qJ1=4B;Q1m+3An4 zv!5~WzPV<|#F{fE`#Xlow<*U&M{t2G6$hg&6pySynaF;CeSk{`82^Nu?~wZ2&luzw z4DtY3;0IFpiE;dDqK_UTw9p9)cX5w!XPQ}ToKjpGc3~DdvT+jJ93IeUjApvAfW@8! N#U}8GVumO^e*j#Mev|+J literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener$2.class new file mode 100644 index 0000000000000000000000000000000000000000..5e4cd0f2aa8c4b9c7f9188e8b2d0d238db8d24b9 GIT binary patch literal 1598 zcmbtU-A)rx5dKbESSSmWBB%%oShX$6){2M}`LTl56d__T@ou|4fdlPs(_Px|1o{fZ z8%(&B#6*;M;RE;@Mi3vuIH#0WtrrNJ?4Fr9^YhK@%zXLz=`(;RW)!#>#tbW~IU>tb z+;Mnb(+x)ygtM;A>$daI(lb+KK_KDqY&;{3)ugZ;Zt{E}s=&kGThR-;meI{6Z7#LK z4M#yeL!WM@^Oi_!1;LBjB7FjL<{#z^_0F=e12+jo^5iID3~E8o1ag)w9ATLZEJ3cv zgejbHhRNV*d?!MS44$}^=8a%zRiU6kQf(?4;q}6eb`?!H!{81|)z+ji`IEJ5iszr{ zsSIcECoMzIEb4h7`LfU>6K5Dd1++kv5?8Flk}`A#lQjj8g%-W&#zh4^45KHnu!>9Q zWoXb1gWGl>!mxa*qK1y0cFc=@1Qc9m2p$)|iYvHUMLW#!==f-3p-LHxBE7^NZQjbQ z<(>;OZ50Vk5Mc!&hOVPx*J`O4z;%X3VJ|FOMPV+LdgFz(9aN#oUQyD*&I;RZ0QJ85 z?bYVN#@7Dp?Y+&H4Y)=Ba{tZt_wB7i`QF>|)r73YZ56|~Q_XIK;pu;5m#mKJf|Dm~ zv06!~a31}f z3T{GBvwYerp^x?%dTFxV^wz=U^T|;Me119Tv@c!sHbJG^W}@y9@20agJg|e7aQ6;; z;g9gYD=Bu+*IP1RbbduA@zRjgaTe$3WH^tmva5A?O1hEod$jE0!Y=wg;MxW`{Efd+ zX8aLcu?O+vVKgHOv0z<7YIDZtpET3 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/PastGoalActivity$ItemClickListener.class new file mode 100644 index 0000000000000000000000000000000000000000..d31d4543082633a7543f71516c8fedc61ebd9224 GIT binary patch literal 4577 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 Zf70~+$p*jOoNxL2lt`9NqCjzh9|JiDEn5Hp literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$anim.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$anim.class new file mode 100644 index 0000000000000000000000000000000000000000..e2c01840178de65d696372bbf7a074da9c2df9b5 GIT binary patch literal 821 zcmaKqO>fgc5Qg8W^U=CVTlxWnkG4R8wjeCHg1AINsuY1#P_EY6U7D@zUCUlK%8B2^ zsZtO80Dcr=)-+;sfXl3(cl6HA&iLoA>mLB#;AIy}gx%ESkyW`&q_wh)L~7Ngva{&) zKxmbB(IRYIh)WS=LZ3&Uk_(wy!g@Z7t5jq%b_SyfbVBG4jjpWFb}X`52H#o$VXH7j zUBpwR&&)JVjI}0rDdNHlDQgO+b5p&dt|oCNzuH)7rv_Qi>hY{37vOJEBl@h93G7ct)V%S zAp$(=;URW;f+MBn$2w1B`9&m|By5fhPjoCw<@iQy*@>zM`=kHw=`A7rZ0a(VAC#-r zIeq1p#-lvZT9(61RF$l{I3^7KS&6%JJI8C@TEPFvDh6ny!_;M3!ZP!U$075o$35o0 z$7{^%9&a$;@_3VZ%j0e49glA_-|_e^^T6YKO!qy0z@3ttF2_CYIBFPZA75erd-H_H g9NmN5&Axeie|ZIPhP?n4!hW2kp;f7jq_xt7BDQLw>@pl53S-1FK$Xy* zi-iaip=aSuG?%d@)Mu$s$<$2}Xh>)dGM!tY?L;Jn^d5bH2Y*!4#dn_w{)N)YUJ|^c z{)A8+WcRWT53L5)&>*x%O3Ujajik8~QNk-aqbwH5L>T4xSF>s#R8BY;{S)Gx|9hJi zCYD#qnfc=rmx$09YAwwm5qU2209``wPb)&Lya-M?n8zoqpobcKW+830{uFghs<(7`6x3bsnz#tzp{yIo$=`v8e2Vif=Y literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$attr.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$attr.class new file mode 100644 index 0000000000000000000000000000000000000000..41d6c66fc0530b98aed16eb78a54ce87d4a8cb5e GIT binary patch literal 355 zcmaKoKT88a5XIjl_eamu#Ap)`v9M4Jm)II?0)lWTL`lDQ4!Ys~z}_a{$FdSE`~ZHa z;Ot?m&3p4^nBlkkz4`nCaD~GdJ;HI(RLYr(b9Roc(uFf?OeI=KEEZvwhNe$%IkX6uMk!YkdA~ z2JY3ggp=%lifcmh*sN^9x5nR!=9eCcklxib+gYjGmfIL3!uZciLg`r(((X^{W@!f8|*XaO5@uXYd#{tGa#}rPH literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$color.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$color.class new file mode 100644 index 0000000000000000000000000000000000000000..067f8f74811898d886c9b1886844a3be5ce186b5 GIT binary patch literal 1246 zcmajdTT>G;6bJAVO1n@B%m>J2WqjFWLQ_J)4}IK zV^rdb>!u%=*bnM9Hp8gcizyjrKTIHsLbdu8R2UT!jSXdsR$nHe|SIr+$?5b~BGX_d`PKMBB8*L7I$udz>4D z(rz5utOacQq6cHZc|)44#sd1B!B1Nvl)VaPF~hlx>caT8Cw7Jjo7W4aQguYOczKX# z#Mi9sNz~ZSyI61>UD=hfG1AKT49=r24_g3$OnxB)l4#mE-lNF9P?Oj7{hjA=)P4P4psYmY_RsJ~@ z+LT=e+QQ|?;c{Q13gxK)dC(Azz@v_f@R;KgJnnb`E<2utryNhiGmdBBImh$xg5yQF z;@H-A+3^+ls^cYi+3_`a#qo9chT~QErsG@iZO3cyy5kM_j^n%VJ;$4H)$x6J%keh+ z!0|))k>khk6UR^CXO5raWSG5A7+>Ios+o!M8$W38dv;{6FxmqoTB6q&OWAv#-cSu1 TqPN-jj`r~^X1^cMAyxhYRPWjD literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$dimen.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$dimen.class new file mode 100644 index 0000000000000000000000000000000000000000..6a4a6825bcaa96a1a63a384a8fa54be8080fbeed GIT binary patch literal 664 zcmaixO;6iE5Qg8uaZJ-tzS2Va1)&^(16F%%t6m}@MT&|vNGyddFA)yu4(Sl!$owV6FVi)fUwlhO=*>}BbCnCyIF)s zSmw(g$|RgbQ`VEItrmLV?f%7KNYGxF!6w#%1sAFuJo-M@8l3)^zGTzL=g(ESTc35|IG literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$drawable.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$drawable.class new file mode 100644 index 0000000000000000000000000000000000000000..34cd04e07efcfd764085bfaee4c9413fdf3fb3db GIT binary patch literal 3971 zcmajh^?MXY7zgm#D1-#J;1XOSxD^RbumHhX=5FWimhA2vyK@PlLfzfn-Ko*imby`Q z`D6O@J9B%NH_$%)CE3qAJF_$I*q#0R^cluj6Z@-@l~`;-Qu_7E^+iG`CBk~1RBnf> zy6Ri&oRD|&geNLlnZ^1a;T^o*<3YN9YvPDVDvJ%`j$tMOX`Xo^^aCm4Z(mGV3Lm948q4eWWB}PF)c1k95aj$w=Y#=Sl zk59ML+hV+^sT%5+Cg(^Di$WB@|3@I*FF=a9<%io^ zwYZUSSS*H)@PsmJcs#yuLb?;W$^`VX7_eR6tg?v~tI7xctm@LQ)fMWca-Lb6lPp$} zG2NN0pG;q-=qJ;WsrqTIt~gCU&C^fQ_0xR)G($fv&`&e*^^D-5vVCkNo;H1)g~`si zSWL)9%HyU-vn@8vP3k$p{@@-DeLKRSk}ALb>M?K>J2EgWG+3+`D8f*N`ZJCBV%PCZ zaTA7z;;1V~x`Anaj>XCf+jTDbJBW!kUZWcb1HujT!0SwzO8pAwn?O1C4Bwf za=eGQ3V9G|ufSM+AH|-CSH((9WgyAoT7@qKQi&`#M_Dt*FSE*(h4WB1vl`1Z4${1@ z!4}WTY%bg3icYgN^vi28f!)zuR>#&M7785HK8~}vC+kr=%J8g+=Q2N8ID1D#eq;+j zAsm6z89T++%T*Q*!HpP`e!~r-_*C75U8p0GY22JZ@i$s5HuC%u9I=tU7R-P*Tdek9 zUg*j;+{*xGX}mA-2UZD`I;LvmRPwnANZYc{VqXk`6EI`<dy=k)L1EW83V}trjbj@$A)o%Lrd!fr(^$ zK2Q5BHl#89N7`HgSo zxZK8Mol_ovD1PBEPKxd%14aS33@tDI8K3t84lHUmw`oRXb!ZOp3LxZm*(sw*D!C zEwLd8MA+2i{A(58h9F z06s{32)2n2!<<;J?9m6+TJ)8vHu(8}OUNZ^5UC--h2IJ`KN1{2u&1@fr97;t%1Eh(Cru zA^sHpjQDf-3*s-~uZYj$X0Y_FhQHt9hNw4YtbF<@_T5QyW&D7@`T}7%Xnw@sYV%yq ZequkH@?Xr~U)gW?UuCNQ&i-Vz{{UC31oQv^ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$id.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$id.class new file mode 100644 index 0000000000000000000000000000000000000000..a6ed4f28be9c3538c95cbd012526c613fb6c4486 GIT binary patch literal 4372 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 MW|HY&Xoqrt0gQ53TL1t6 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$plurals.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$plurals.class new file mode 100644 index 0000000000000000000000000000000000000000..b6ff3c348592d9283ca93023b4b0537d9e4f701f GIT binary patch literal 427 zcmah_O-sW-5Pj3MjmFg0)~_B#588u4uZov~P$&vjdM%rD&@J1IB%6XKf0HM{gFnC@ zB~C)G;^ob}`FOi;zJETy09@kGM~!flq|3XOT*rUTOClO-^1+ktvh=s1rI1 zwNjB$_9?oL7o0dkFL%ln`D~tAp3T`QZE^yQ2(4jirD@$%nS#By03bB4wbky1;GLdL z3H4z*=KvmBAvO^Z+GB0`u2{yLJ*wC+p*v0!Wu_|AC0`fo?pez-$K!wheMJZ!(jrUv zR+n|s}8DMQ%90s6mLAYm>5 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$string.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R$string.class new file mode 100644 index 0000000000000000000000000000000000000000..ccf39f7ac668ddc89ef89f377bf3f7b3f8d379d3 GIT binary patch literal 5872 zcmai&cVHbg62_%Cv17-H6Q?@85t2Y+5;}xx2n0+5NeG=q@2%{oc+1PK_SvQ!*L&~1 z_s%u$xI3;luJ_)1@BNOuPukVKdG<5>B+%^n^T>rXtayX=4|0n(GY`yh(-qwRF2B3=B!s#;!JzF5odfK zXY+^RDAgj;M?{dxjyt>AX`Ic=?X=Q?6?Jj8RQSH9MLOpBN(Aw!S1MO>wxCo7q9Oz1 zWq`9qA`nUFMX^>Rlb)6n+9(pv=8AgVi$rLBGtT;}BC5)u^jui3F`6t%WTd^(SOlJm zbP^jMTcGh}Ahn#j=2Xs>OJ5ZWicoX+X5lHEt(c~k+N;5}(eLJL@icurW>hD0wrrZJ zOu|X+7V3ssxXUeUo4r*g;3V;Iq+u4Rs?aKqJV@fiEI!8Bs$87~zDcE5O{BngkHmp5 ztx3$;YGaa4MpZA7$1;`3)WZ>}2pJo(39I7(Z3?xhcrK^zM2<%`OJ!Z8x;(3`SXPrF z(O#e+ZYVkK$*`^`O=xFu)?Jf9-JXpRWVm2fP=j%tSfg>=Ln{jf!pSe5u}wMavGP>v ztZpO|&Yek<5#YY&{ev@H_@%hnP87yCl5rEpGS2#P>7-2Y{0igcX1xk=^~&%%5O5Gj(f?F9QBgX7p-0M1uPhO(D+_;&V z<8ZT5(U7errFi(Ou>~U1sAOIo*P*VRVl`BKBkUb?G|!+dpB1Xc5CN16_eh+1ERyHQ%3nkId-;#wqQ zikPmtuDOR_eD48N`C^3;IcqNz6J8yOHjmwSzOwlREp}0?v<&SRT-Efh{JfrD+WZ0| za^8(Yw1k0TW2*8Z*~ky}G8}ecU~7z7bOr7hl~ITLo7=mfFK=#dixx@uaMM#3jYaV| zsf7pew2NI@bab~v2;bIO5lECR*8t*ZL?xjKbr44}-JpE3JCS#*HtEA#!40eisygP8 zH)`CRz}ecF?M$CAR@)!Ys-6Y5Ri4P%x|w~Ip>0EItXZ3ib~>&>uA4F9+gxU*ev}LL z)|m`koVRnfvh5~ih&V=74eQ}t=s4lX?5ny-5n|e-ptt= z82s8`&CTs2DgENggd)l?BHDUVgc@>kc!TK3}G`U{`VZrl{;NVO~ik_fD7PgGN!titqB# z3*jQ4@SNY9@+}KtKB5=)H)D(`?aR$>#A}AsG!)w^%C>@Xnuj`qx6t0AbRsd{!30BN zIv(SRxuv(@4!6i#0um?_R9m|9az)YTF~quG6F1;FVTJ24PJBJ;s}Y;Yw~}d%$=NRP z@`)eU&7}1byoR<`uGwCcr((LBatyzCCKs-w4xu---NQI7;@FF5%aL)$w|h2coqJTI zG$yEyt=lkc%pQt;*~2<`S1<427$N(HRV4RkVMQi~MJ2!?^bccf433CI87_pgQT8xr zZybKGpNrVC=Mai(Rqj>BTj#-@=C>mn{k|xY$xwjfm1!5pxHvGQFD%Q)d$tQd={oRp z^&xD4&0(FOF3>DC7u-#_2Rx5(FL*xT1>ioy3&D#B_k$M`UIJc9co}#(;T7Nk!Ye_m z2(JdOA-op6j_`W$2ErS`n+R_PA4hl#_;|uw!P^LL2cJOrMDPy6JHdm5PXg~Eyc>Kn z;Zwk;5o9|eyQ4!|Md2pkixgO3qTz$sx3&ImWaVlKN0*S!cPW2h453sPb2(v@G}TM z6Z|Z~&jvq-@N>b>Bm8{u3kbgu{360H2ET;xOTjNA{BrOs2)`2iD#EV@zlQK@!LK9y zdhi0e&apcY*IF{BH1j2;T#KFX8ur-%t2n@COKg z5d0y+9|nJf@JGQPBm8mjCkTHM{3*isfj>?7GvLn>{v7!8guej(BH=HAzfAZm;I9(? z8u;skzXARx;ctPzP53+D?-KqV`1^!^0RAE2AAx^N_$T0>68;(Z=Y)R&{w3jGfqzZ- zH{jnA{vG)Dg#Q5kBjG=R|4jHV;J*_78~E>p{{j9d;eUbuP53|H{}R3*{J$o1hX1L{ z3C}`j=Vl_o-#O^;gNE_%ob7k>&bv&@=X3Gb3;>Mp;NAG|-rRuq@Of6>YyZyY3-E7` LSLO#Ww;DtlBGx1CdZ8B~&75uE<$NiP2^ktsMj>eiNrk zJ@5lK^LtRo3y8fSE@MBhXU4C`_mBVX0Q|(Jk1@hhm<$7}humXpISo{3^`*Ag!O6O@ z*Ae?D5T?)7r3xYy_k-WPa}F(GsybU=>(Y}bZDAXWK)|1#+72B?gM(o{80EFsm zYKO0^Q%O==tx9~ytq8^J zKk!2)>d6O=qlO|%LcY*g#vgKAmh*`mSA-{XTosU2 zP@jmI@Is---mO28fhCk9q4Y2bVktF&x`b-S=)?+b2O^wG=eYn7n%0cOVrWJ3IGn4| zSlXdKRpBTt6QONQWa8M&fA8SwikC_&dqr@Ljt7K%$BbkN4%REEVvSJiDJ^fNkuT$W z;fIpY=$Sx-0}-o~f0B9opc2AC@84xF2&FqSjRSeDQmbPBG~Jv~>1r+GPAHN@CNA29 z)}KZ^D&GxfyuHI`cF;lrMJAUihZW}4B`z_Sm$<^6d`zrytg*t&7$}^)qW+RuG&rV) cpigY@Kb3F;HnEk}x3k#94!@;L-oh?g-we8M#Q*>R literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/R.class new file mode 100644 index 0000000000000000000000000000000000000000..7fe11cca20f4c737e5d99d5bd2934986f8e3138c GIT binary patch literal 935 zcmaKqTW{1b5QWcdH|w%2^ul%Ny|mC4XlQ{a5HFRGkX9fS)ORPbimPmb9B*NN7Eee# z@B{c!h~sQ|Ok`=kGvo2m$o8MVzkUNa#w&%6V3?NU*xRv5jQ7UHI`#I_`e}Ts&=o9R z=t~{vx;T$NCKo34g5DcjSpQZqx3_;L=$@3B>0=Jp28hrTER1YnK1{}mai4XP8^Q9Z zOm%*yoelX_vFpFsO0Y6&9N@K}|EZj~)V#C7rgwT6rV$L@7lm;rxvnZxDJ%=t8%=g} zVaJ>@K;e#Hqovh3JrzVcP~m>NulFwa5(+D=zG<14?2T$FthY92e2aq3H5Il5+szYa zPJf%-@%(?Oup?M)K4LRL$7TwT1)I%nxt^Aj@Y*w>a3I)fZvUE3oX+{4>Pjg*YxS?Z zv&A|6XF}n5>#bCN8ooeOQ{jbRt$CR5f5l5ilZwJZK=rJm0ah(Iv!B5QpV4;IP zW7r1Ob;d!hBl1SQf3uDYSR@lxm$-imL)<3slK03V*8_5uTq8HgO>&!jNbZu4$USnO Sd_q1Y56Ljn5qV6$#PA<2p79U> literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$1.class new file mode 100644 index 0000000000000000000000000000000000000000..93162e548209afdc85ffc0dd929238eec2ca4977 GIT binary patch literal 957 zcma)4U279T6g@Xz+pL>3#*g|@ZK_+Fq~IE#go+?hA&}aKlsx$|nT*M_o87QGsS1jJ z#lIjZiVyw(f0TH4vk3Z<3=A{(&OPVOoH@UK|M&^uAr36$2>UXec}CCFNExFdPe`NB zwRz_alv&K5W|7;mP$1M!#kuf&5lp<}(W#QgLW$ssU>t>d?8z`NDlpzNE&OoO;~;u1 zq;ijguCL`;U&nl`B0|Ybb?iRi?)|meA2Q^z4zzhfXgAlyw1$L2Hyo=n2o(nwHf-dv z>7a}nA>T|2Hv2kIFBh|sicZAHSA=>$l)@j1NGEZYEF>2uwAO3wcKE_pxO_EXui0Or z&|$ANv~dkLEL`XMwKQ>X6E z+JkTrN%cafdi-OA`-uZsw&#KL!&nECBW0%H*ufs|5vu&=NC~5s4j^nbd#%5h5%YOw z4VK601#E?`FXC9m7FvXz6(Vuh|BQqN|7@OT5mc)sAI!$i@hrpU>;>LE;yB6J?Srpy z+TT$9oYq`Sa_I@9=`HFUJB&%PmvEU^!WCT2SYB~uo^zG$+$W~`0_Qun5~4g3qH1zT z@0sWW9Qv4&HI{&kjG@@Zt+YV}x3R;7jTBD~7w+;lhda2-Yk_^>VxM<)&K1!_yOcOM G9e)5J`RvgE literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$2.class new file mode 100644 index 0000000000000000000000000000000000000000..457efafd7bbc16e3a8a718d718734e7e090c912e GIT binary patch literal 1013 zcma)5+iuf95IvilY2p%-a;MM~T)XLshz?3uGaet!E7po={N1%_P_O~awN5uvCD;43#H$? zL#gMp7rAA34U`zH6TaYXz{9b7I69F+8>le2JoMv8`L2jUEko_TR6K~r12W<_TuA#c z><3D`^;AN~GG?ggiAwAzl-*k?eUCyGJg}9|zy@SIRiV<)89L620E5;sL#ZG6at#c1 z69z7&t1BkfP_3ef4HGq7WhgqSYu!_!JeW^MGCty?Kr%GENbum8$11h+%~E<1hSq9T z*j>7a5uLNau;X}3nCns5Rczv(fxG0t5?3a+&}3NmRWemca^4HNyOU8+@w47AY%k5t zP<}U2V!}`zM)O$6*DB-TA7SjJiXggPg(8R&6^{3%o z0k9gW66j?VXw+cR={l{RkzJ&@-tL^?a(nX(R{JX&pEJj6^sitv^afgc5Pchmm^yA7OlkROp+HKLwA6@lOF=>@NR?7R80Eli<1EbYs)F#(2YA1+Q??~IQL zcpe;_^-;tOgHy54>84cTQPyjV^x0u=K~u*(Y4KFrc=R!E8)m4U?6=D6)Qpp6%EKir zxR_^HI5wvqmr3{}6)z&AQ{m$>t}sl-iQs9pui{N^IKzCU$yF!SvJ=Ky8KF$ru=cg7 zS6d#g;<}4#3`@tj|F5!-GL{&;L07-plswTpG^om!9l~T}c>Hpk_eb4&klSive`wX!{lRH#@qy0l6}aA({_|Ig*H_d{I$h=_-a zSFb*&h1pU{q>Y3R24a9k($JxE3b|6riVBnhD=BSzj!qFi-AjJL(c2p)&?ML!%u;L<3643OC(CdFGb5@NA?@84tM z>A+G3$W!K9xa=LK*n7;f4@aoyM$|Wkcs5H(%jD)zL6vNtgskBvc^*}>_2~HxXo>K< literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$4.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$4.class new file mode 100644 index 0000000000000000000000000000000000000000..b61ec7a7f3c38ac3f97285f80d421d8600e5a16b GIT binary patch literal 753 zcma)4Yikoh6g@YI-R`>DHNM~4rZkD*iUbrQf<%SFs>Mn__-(QolPQ~-GCSMSpC$N0 z#UJ3067RIZsGqVh%-nO&J@>Uge|`M{;6By@)Ce27nWj!nTOS0$&{8atLaeMH^;R#Gn0#AM_A?U8QAaz z6FQ5fZuPj}x~+7Ci?|%%5@CIzK4VRb*cydD4 SgYO0}<0e-5<;(Me{QU+*nYJVV literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$StatusPreference$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$StatusPreference$1.class new file mode 100644 index 0000000000000000000000000000000000000000..dbfe21c09d8415cb7a1e4e74ec2f7a85f8604a10 GIT binary patch literal 6389 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$StatusPreference.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity$StatusPreference.class new file mode 100644 index 0000000000000000000000000000000000000000..bdec1f911652e93072353d9d85dc445f74dfe2a2 GIT binary patch literal 4535 zcmb_f`EwK39sfMbShiS)-$V z>)!#~k3UAyBCsb{DyCekC}*YXN+)IJTx-#Cmr@hbtt=e!q5cWibSvfKjyxkBY3F1V ztpeXN?YvX6@~MT|eJY63Ca^oizGzy7)c8^UosiC=m6MvY9Gy4qIhnP}uC%2SMZ3VA zRpyJ9JeQj0pZ;U^Xu-;zt)dBRD5`sbt=R_Tw7|yV#FCvmTyfo!EwHVIbI!`oNjK#^ zczD{nOitn57RJjI%{i&$5Y;Gpj>wv`vLFx-<4(%+ZXK1D=<4QJd4_db6 z9uOE!tdpju7X8I|xv5cgo_Es&(*mudrM&C_lf%F^^u`du9R}jqPJ0qxOSw5~+49j! zaaKB$=4?RT0{~9 z(=jBmD~g>0+e3bBNN5B1Vo;!+DW-CT42BZ}VPzYr`n{T9#%Q8+j2^ttz!2_d(v=k- zuSD_!vLR02$nA#34@|2N?l#bYSQLBc?vUBd)2YGR{X;Q~V4q5W{Q{R8G+!s1^bH$u z!vreEX?!<|2L*Pl%UA;k@I4l`Q?ZZPQ`Y3XBTa^9TO#|6xoD;e>}aXSDz>e1SC>Y6 zsgUo0*BQ3-068Ra!oXuluz+$V2Sp*W+=1~J zrf@O}_J>=moqA0dHt;x3u`h1ZtSIIMZvPrw1JB?rmA5?R0;xo1EpKI$r|L{ds(PU;1G{6eu@FUx>aLNc zFbw<<)Y&*=*?9#YUdqs{9=f$r4lSR8YoG!;w407@7_@gc@ojhB0wbIZj0~zVNtm*|$tZFe1)jv5Gj@|@Wi%bo@Tm_^I3rybx*1j2m5CmlG zu3Iuv|J);R;^s-NEqGP;?G>23dF*Q`9WZO3fcbw&Sl8U4xY$Ig;^gF*rMILtoBE&{ zKCJtU%|&{&V3y00+tTKSitbXQWbH=(IonW3gKyd_1UlC)F5JcSj9R^o~f);E* z6fvG$EBG6vMGYigt! z@Z6Z(xq`mruCMUzKWm~pHL7}gmx{bc5%1$JLOmoPI=+K`p6Y7{?&cl0Xe4~5`^i$M zx8!vU@c$}Ob*9Q9;4&Fr(F_d_)n_Qw7U#2>N1N6yp8N}j|A||8^!*JZr;@vNeucfO zctA0YpswjvI_v}VibI<5c8|EGX&eV}NDGVOFuz(bs_8{9FCW4YU+N2dP#O;Iq`a|@ zk+_bB-$$nsejVA9*Rbt6j;p8ciB(LhkH{)!>Z;s@c0e5Aud*?8igEOahY=SU^od8X zLu7HUI2Lf^U`@S2oTg9s%Yw37(GuUv@2BwtPb-mN5L7U(QQ+{ua3!hqS%ujxcTxPA z6%4DJ;qJmJivPgW3dWRX$yJoS`*ZsK{0g4+;2&%FCo5R?;GYp*!370e=>A3Z@p%va zm4;tf!AlRLG_DFW5XoybS6#zf+EsK1-o`tABsW0(2Uok=xsv_b zkL3=YDiJqOr{|SUEjnA;^yOQcH$zR5cbk%23X{AUAbF1k;nh%3%7rk=8v&Bv;I~ak zUI~-D6CkT6Ow1cB$omtAK=3# yBz<9$i&YXv>mwbrj~QohSym0v#wTrR|48FgzK`%;{rilsUmT1RBZ)8DI{pVVf~CFy literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/SetupActivity.class new file mode 100644 index 0000000000000000000000000000000000000000..f10cc1e0661769c2352c7ba302606b863698f0e6 GIT binary patch literal 8041 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 xhV}_O-^ka#bL*gA)63KqBQ+eh-YPaOnU5 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$1.class new file mode 100644 index 0000000000000000000000000000000000000000..7b7e4ea0690f2c0593ea26eb65a69b30195b6238 GIT binary patch literal 2063 zcmb7ETW=dx5dKc=b`$3`Nkd6!DUgEG+DYlwDKr6>Ku8;6a8e+tDfh0|2m4TaH+YYe za*_JR1LBD{`oasS5-$i;LO_Tg0B=Yj#HA_%ArM!Id&_Ok?mBj3Zfg z@nunESg%Ubi|-~+*;ZVo>Bc_kNHxxoOtf|-nPZ4fx&_ezhE9%kSRX?K8#oMfF+>vD zpgSuaFNz%J3uUoXvJ?Z$#IO~Y8@P-i-b&Rtu0T6OyJg!1BfeW--^Otz zu4)KV4EtM4E1g`;U`ZB=LYX-!mZr*bVL?>WF$`jdf$a=i>Umyh#gWjZZ}&>>(yTb9 zG@v1lVeD)G8u=d`_6xF$!vsxIJ zY-XjW(w*3gF$1FvUFT~!uEX`zOHV#V<3Q8rgWtz-18Au0;ICzvXgT!13O!F1)h(f3 z+=QDAOwiP=VZt$q{WPSWpc|gd%Q8J)0+$FYGR1LAb4B**GG#b!ZN@sPg;|c7<{=x4 z9FHOz!|k}!z#R;Obp(rq%(NU?v6OTjbE3{2qSARBbC@SQW!EaKY8b{FkH&T#B^+f= zYI;niGmU9n%dF~(OFAkL&LAq z-)rD6`!?NL=4%+;dk;Ny=5$9(H=>s)!$sH>cwuKK264fZi=-qzuz??aD+wN< z@A08ih^^q#fD9}nuDQEckc=K#!PS8{^*U(cPoOI}rj2FX7_bLI%`3riIzpP0cs@AY zb`mE7Za|aX*%cgI#-U~r1tQTsq3FM(Zwsu_zOUfo{h{bWK%w!pZyW>;jeU%|q!H+n zK1GWb_>kK2F?Qe+q;MMJI783nQyj);DB^Qe@dax55>MbO9LLvq65rryqR-%4Jd5w} z9MKo>Jzl~OcoRS39sGoM@iX4XFZh7yM|3`oU+MPm_zh?AH_ovL{$T5fw&N`8#GkB> zF~6mKLEFNXQUh@W7Bw|bC_7;cjBal0I0w0t;M*i>Lji(llpZA>he*nsI BDD(gT literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$10.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$10.class new file mode 100644 index 0000000000000000000000000000000000000000..d6e94e9180a999ceace5e5db6cdc54d1adc73daa GIT binary patch literal 959 zcma)4O>fgc5PciRahn+8rX?-k6il1Ar7m1U5h#FE$Ur6!A@6+WTB;8nsCxOhBNJPd^ zQAaX&cNsQh!lUkn|%erHR z_FQ!l!PJeFPH1Cjwq}LSNbR)yRXo5W3lAyfbvkT3)eS`BI_pe}>tFX+qF-CLZH^ra`DtMiu4Lqgz5}v^&S;lj0!lPG%Y$mqwqM{da G{QU)ar|X^o literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$11.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$11.class new file mode 100644 index 0000000000000000000000000000000000000000..0197ec34a621a796ac988a2aaaae9c29570711de GIT binary patch literal 2422 zcmbtWU2_vv7=BLL?S^!1Ludg3<)fiZ(%PkbXf+fqEnsS(VnS*~h0X3EUAoyV*^`v| zh2Ak-INs=tS9;-vx6VL`GUE^Mf0P;jgyVa%X6LY1mwAy3!7I993cF^DH9c?m%hSz|_{4;YZieVxqh{!i;gzN#1K6`yx!9NS#Z+P>f}uQ2q8CEJgmVi?YLVld6nTQi)vGiw`; zS7I2*ZW=LGR`fthn|jXMt}QMwOeH$gyPKM1fuVcGv-ln`^lMNNmb1MY_8<~L7xroB z#Q;NBLT>HP+AhCVEf;wuZxkKQ5X*X|;S`LDEx((>ZW%E{vLn9;V2Vcd0@xV#Ct8lS zKusqL5gfs*DqbOz?Qm!~DxFj<+b`R`AI5P8#p1bZYnR+?7bP=c%o9JKKYq6H=+}*hKmYyXFV7!-xAEww2(BZi;sZ*;Cd#X} zRpLU=dxkGG!U4l2OU=dsXh5JWYhyO*duuIu}IghGdf zfIQMNE_J^d$MAjbtN4nHZ_=~n9vN@zmIqrFcjN-cs4;cXqaYNG%1#ADW3o?COApc0 z3yoG^qS+LEchT6N8hwJk)Yub5Q%@25t+8>C-jT)u0!KNF{q!vl(smrcK^hre#-TtJ z>yze4_CxA1qU$&uJN67G7Gv?J7$!+y9m#d*>o`-#8w*kp2&bBBb-W{IvDwC<%R3LT zI^J!Zie2lfM01D%%5kX55QdbK7*~dI zj>bu41m~3mt|&>|p!uRQid)JUZqsPect;tBP;@+0PT^Z+0^cjA8;I-=qHZEW@k5|W mm~^2=XoRqe`!seFb=U9(%?{Cuf-mu)NB(~Zeh#gEjnKatSf9E8 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$12.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$12.class new file mode 100644 index 0000000000000000000000000000000000000000..4e50cefdf531e467bf80f78e7e3976c419c0b944 GIT binary patch literal 3778 zcmbtX?Q>IA8vmUpr#A^#TLM;tR(z?FRJY+xs7*oJ`a)`tnh-5squtNSm{1ShH4v zo1u1C8`Hum%@_=K_YaGNt)QBrNi&ieQ%{D+_2i(i!)-||O`>{qG2YN^L~SwJk+=gZf0nxBqSK44A;*7 zqT)`hqEHc}7_JLOLj}$<^hFeeD7q!KtyjEaqDCJ|{ZV+lHw z&nPp%kr0YX87(RzXk}2wWKg;X80uy}*^x;K1K6zMKHN{fNoPrDZ~>uZYKn}Z9uL|n zD{M+^1rIP>UoyC0N_$pMB}K-Ahvd8ITA!ZWQI)X`6-F8<~FE3Z#|er)>42_Fok6_}*CSnHf-6gM@?RB3yp(;W@mZ;CZUva{?l7$n?mkhNa>~ zyu`4As^k_kn`twWTXiFAi+1UJ5hqEql9ZvVSao`-?9}6sioHRi zS4t5%e`@;lr-g`6x>DJrW<#Z5uHVWA1nQM;+4mTh&D<*WL0LOZOSg5?Ah%Hgs?rIe ztdoT2%OrK>l{0J$=QqjEnB#QOHL9g$%b(RPNWG`%aoPP#3GKLv_(&5e?j`MYv!{cJ zba6r`88LqZlFganp4oa^=W8lEaSDLsyC!C9i4p2+&Me}KQIHejAze-@OJyb(XS611 zJ45??IWr!bZ`?xj8ELI~&`6}n@y6g*VGo%}6(34;d*u)&s|LAKjT$t|b)+=Q5|)CG z34(L7qb$l4-31518y2faG+vPB>BqrpYvuGtBWo4?yztTK5?VFWUY__G@A?XA<3(Ki zMgGoGd6xe|+TNVC_puh1F?ykZl!a1xvg%g2lf1^8xdnd6;UiG&Hs;{79xBtP5c(~3ziOxxE zV>xthP_9$n$M(76T08-dztO+r5_Y<-JpOnAKC%F4PM@j0Dly>6Akh0SkE6rGmoK_ z$FYspF}?%4_)hfkT^J%d%y+}!k0VWVjQ8R&e*(w&lQ_xyaGF1bGepl4{eWvY#}oLB zC-G;Z=ZSvF2QbM8ahVU{YodSSI{waw@ee+NZ)yD zIsQC5#9v^CiM~Sg7(bW?^nQXgfz<)DTph)$66CZxhT{_cw0aG%QxeJ53A{m`^s<9^ z6K@gJV>CnjmcA+&#=UqOCn>?c!)MOfk2q8~V?8u%{toXD=N{7gE>2Mry+={G#gTgy zr%7u;#u<`P;FPQP>DCHVU&T2E0rnHrs;kH`1;L+CLp!qO_xbcY>!jfy@W*_#>+u0T Y%JaG?`Oo2#YWW{r;V(fA>rbfq1**R+q5uE@ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$13.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$13.class new file mode 100644 index 0000000000000000000000000000000000000000..6240c619eba33ecfe33da8e0b95a9845a27a644f GIT binary patch literal 1702 zcma)6TT>HR5dKas3<)Eb=%S)1yGBf+>mV1622qw39SovE@vtvj!{iu`hMCmN0m@&X zFW&x#4_f6V?8BDN{wQm^lPn~Ku`*SsPIsT~uP@Wx-@gCzFMvs`8Hfm+bNx+At4+Bf zwU&Y9xLR#1{mfc(!l(01CVgqjKulopiL>ok6~`-ED;rOws}1xBOgdgE@Kwp$QKhof z)_lpS64bhqJLwhA)^fAxd*y|Sa-SAesHGh3N@_@nSa-6v$#$c}mX-WHa5F zWY+~^3w}u^AaKZpf!-vd7%-8*pg=Uk3Ij#u$$MLy8!}jPHY!peRrFn_vhDkdvDuRIE$-Su$Qub2_#lk*>m((K*3%48N_UEt`kZU zBRFZ`gh0BRa+?^%De~;Nt_;KU%%niB%c|Sib#^vp;@38aDVClwk;Ykp-X`#6fqa*^ z*HktM3jC6>o0ctYTQKlDwZy*JvQzDaCD5lH z{Y~|$R-~4FxPVKHMahq68s1wmegMnuHEm)Blvl6zS9PGgvcQo{t8PPDNFtAG2CfPW z?N62MX<3$mi2`N`qUr>pBpIjC5)gxz|(&XOmhq#;qoB zcu#A;_1L=~Dy@7^K-dBiRU%?ZV7Prgo>l*!k<)uH2c2B}3aaLMMSFN&AS(6VH-l?))d1xi9GdP}dn^S^b5q zx*6>BnQ3G>#G-!Ld5pd-B#pd_MOP=5Xvq4ab=pt>HA^d}{b@bQj|h ze8q*-#a&E9@EKDzT&dxD^c~qo!M;ZrC;k%2_$#F1uQ3{bg9*AX$KTdtnWmgL`bI2F z-Nbx7zC8ZGLOt?4{=_Z9{845KK4Ooik_Vob#P;zS*C@zW)Gl0arD|7-p(|!xnCXSGW*7 zu$`)Ko340dZ#v=q>#d2ku&5!d9=f??M2YJu<8?54{f*k$@y z8(tycj^G8~6a1lA=iY9~4F&gjz>pBzZfMOjOqaSTo~MXa*K@@+hD^GaH(`xm5C|B zJLDhkpW$x0)WK96Ir+{N$>9N4+h(iHE_(O;e5S0h9<24^B*rw1GK?Hm$G|C!6C)uP zH@Q>eL9yz44CCoyrV~M1iM;Y$$1|CH(!d!R-v2jz(-n0t*B{Gu%fLBI6TMEY79}kf z59XChC<@+)l0K1WVGagA=|m3t%*aNF(hyMyFr!T zaOKGlw#$7^%AEAE=2h!{=z3f0Tx|O_4Hp@#ZX|2ql9ZV)RVz`Fe2k(;;xE*lFyx_z z6^8Uthjb7tA!+MGcB+9yHrNp_%P@@n=i*_K?t((E3YJRAD?z`37`-}@L5WEjTrR+i6HAx^&KoOxmoBQe~`nG<_B zEe$2Em{WT=t4do{%$YxSLNU|(_P>%#=mXT3(A8Hk)z=tS-(ZBs3H2=|)pwXu-@_t1 ztA4<&`VsRqE~%d)c-egjEqDY58Dt5dv~oBfHM5La%n>CDZ1Tr2j|Cdz^lx0m5?Q0P TvP`6#q?{%_iw$OTj{+3TlO`vKw|Mh59;t z4ebZ;Z_hypJ`g>=j$gsA;!*Ex^Ju#*Cpl-&&fL9o@15WM-Fx%bzu!Fpa139Vh%p>2 zdSzS5vM30pgm3erl1ox8+jBfv9IbB#jt-fKGj!kPOWZDTcfp=6+!jS;BEfK&yN>Tk z$G$6_1)=OwhgZndycBl_rril8%Ht(jT+GWr30L?G33W>b14kGR_lmqU&wZ)) zbzxkGORn4UOi)q0onGtS3@0-Ats%-azbz49wni;CF{#5#&B_IrtEx|doqCpu;lYuu ztR%6AfKZf66a5UkS_zz0zH}GHsv zSG>RjaaqZdg~PBJj5}4~FEc!7p;Yu-Vw+uisL4ZF$`?D?WVP8;RJ?=9K2W*K`<~x>#;VAV#^S8LXYB`T0o(;>cP;cXp7dNqnE;*1tgT6iZ6 zP6nelsj208pfo)%S(ws|WLvT11)@R8B;FjQ~rnMw>J7{<{9VT0lu$Bjce%x}?y3JdG>(z`}?4h{0UqrK*^|smpki z+6<}pu?3DoE9=LJ0XN#rdX(nvNOW&YRJc#&NttbuGCDn|k;ZjXWZ2QvYBfpfBNZ=@ zN_s8>n_!4ZYC>$1fGzWi?(XYACu3oQo1(<%Mjz>F1eeB;fMw`iKL?g8jajg-8Avo- z-G&*4*1H{!I$9&C=UboKHmi7Xk?2^TI_X)j>KDaDsprym&FRK8KCDBhs*l=vMsS-= zV)EK`!PN|=NpMN1Tb^TKS<^bD$E_YkH216tm+ES~#DhQtCO%`>(&%4L9`l;?UO{K^I{BfTZyw`i&>pPwNB5PskciamM%s7mS}VL+h*b z=EkpZjNjlJzvI5~2fi}?3?Z2bAzi6MLKjC7P6*Qq1a5`^u3!PTC=L3n#BK7Pg^xv) zkf3)KWw?}@`!uLMS|w2-O%3d-wL4^ORo^H5fTStJ{=pd&GrP%@B0&t*dKQ*&m-cZQ WD);aSt$OI2flu*yLjNBNfByq*lk;W( literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5d43171f058fa422ec6be8abc335dfe94947c648 GIT binary patch literal 1561 zcmb7E&2Af26#i~J9^2DN;-(F>O+s7hQadS~rlh6RAtiNUnBWjlLL^vmGjkK)#-1rN zH)*p(Vu4to?kXXcuwYY!6t@wDJ^(Mk3-pf_4*)`(JGJV{0?CXtIzM;LJ>NOsIrHn^ zKivm#4)12r$58UZrlVw2tO=z=Hski1)UdYa&|VYYo9L zR0}=cSmlw_cH3!a&G8e4lo=q*8a0wW!H5}t2rFPkqizqoa(VRHbyYY zkXAc_Q*)WCuXxGEQSCKVGYnK+yN=s&o`EOeOisDmO5fhWptshiy7 z?y}DPhK);lz0E~_ ztv#dGa<~+^xv2xA#+EDBW*eH-(rk~<7sC7QJ`*r+sUbs45Q z<+s;**5}vgAF)cn%gDIus~oAk*y!y9D4o%D4>>1 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$2.class new file mode 100644 index 0000000000000000000000000000000000000000..b97b70082b902b07bca920299b75fe56d096e8a4 GIT binary patch literal 1357 zcmb7EZBG+H5Pp`HJ6aDZs2~NTz$tA(4k{vABq2qUnkpKwAN;nxTgpOvXYLjViGRvO zBJqPiz#nCtEma6_srS;|dG2QBnYm~B>-UeJ018+&(Z!H+gQlZoQ`Ce~B6PT`uw)lZ#2He%{D3lD()BNGo9>OOkYVJ8FGs|5jE(Je zend+B>zUjn&=s$x7FGZGnVQr6AnCpG-9`{mKi&#r;aOP5bAkiEtVFXC`1MkQCW&G3 zl5W;K{+UL$O5BS7m}#a?3o5_KePXc6J`G%{!J|k-CRP}RuazIey(`BR8Je9K-Q8fR zlpZ1a1L>kWfh3`~XtzwZMw0oNV_5m`xc#;DPQS)lPsrOyV}NXnd^CCocWI@h7;H!R zLRsR3W%A!(onUBm>;!a8X>;@#IlYb@3YSL#yNT&=KhP10?=n Aga7~l literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$3.class new file mode 100644 index 0000000000000000000000000000000000000000..81f6212525636cca4163d8efd380849453d0b95e GIT binary patch literal 1459 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 WKH=W&QD*uS9VD;&*q>w_{`(&#%TB%k literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5$1.class new file mode 100644 index 0000000000000000000000000000000000000000..12beea6ab9a12308ea6d3c92fb84db2e0ca4fe05 GIT binary patch literal 1019 zcmb7DOK;Oa5dJnvy-i|>o0jl?v^X@6wpJ>^C4hhcQlvl+RJm`QCEeDsD|;Kn&qAUg zaX=jCr9TQWo1_7i9>PkyGqaxgX1923!0c^wLNHNs?Xy|D*ls&1nj6LCNHB$Pc zw=0r^=TpONJaQkp4UPVWo4HNgN(}lUs7K9;;C4rwlJD{{emx zR<+BJX+?dR1w+9G$D+}eY-EwkA&q4ld8{y`E5^0ZQK5W$H0;TESM&nOQ0zp$2)ZIx z#-3hg40ndj`HOQKM2kn0CNh*Nvtnm0ZdSWF+`=7>+m!a-zSy{H3gvy33{^tu*@$8J z0vv|iyXYwPx;T}yjO?v?;$1!6D zoT3>r{T(UVdD!&z5@}D!PLnLu>c_ZT+c<_(`-8u}1MJ+=ojtgEH1pC2fuL T1=O%%WwA-NS>=hKsPXy@h~4>I literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$5$2.class new file mode 100644 index 0000000000000000000000000000000000000000..7ce4db95fa19af64e2ee92098670b9bd9debd30d GIT binary patch literal 2818 zcmbtW+jA3D82_ENoNdDbB@|GpA`&1;fwdJX5Ux!@Qv(H3ihv56OG1Gdn7aKxcPgeV|K06GQ89J+Et~ zZVhYw$>SpBDc}stbSv%HMq0}oqM!}ZC(v(2O(T_w8?GlT;V^J-#Bc*$q%&T((g?%s zylw`}UPCwSVTQK&geHA-R4eb&AubOYX$ICui_L~*cv~5w!CTNYliW z%vYhHST{c#Y@FhYqY!u$p02oyJMi)-vp?+nz{$)(87Yc~QizgEy;W>si+>Yeu~Ee) zNE#EVg+(-O5B7y>4p$TqCY{)#Vk@>uMRr*`rADy!3Z317sDd7br8nW1)@`j<_w=Oh ziUXcus_4Z|G9fKY;SpaGlgvul7Ui&~Mdf(Xi_};)!_JY~L!nqR9w0_uzjXE5x%aM} zee1@>x38al{o1)VeTd;91(dsO6Lc*Y>0#k%1GesZD&p8pzGn4|7$5@}`sy++I-)xX zaUv(Il!(Ma)l8Wxn-GejU&UUT5>4)iUGQN)1{5S10yjZ6V{ue*0F>}8l~h>Q&9I?9 z?h)}ye8>^{nyizN7GnFuDh}Z=gX+mLy4N;5!?vif#b)CXJf`4LhPl(PsW^&b6gfv^ z?L0+pVUT>CWLmjQlb`#MRFMMFYr@#|8yI?tHud-!7_hUpan#fMHI;(^Hw< z`e>yu`4V={Nr_#C>|FC@#3$YYYbCL$zwNYArtMPM+bz5iJFVhQyu`4gHZRLPI!2Yl z8PZF6NZF#sEP4|}P2F{ctKel)GLiUI+et~y8)C_SkdRs)bzl0=LSt*IY}G)kUpDH} zNNt+lJq`4qgSm8S9?g2_{45&V!X1~<8eV-F{_wKPw7h~v@0U*BPG4W?7Tw?<;|^M@ zberyA3EF97W}65QMRcCncMMg&mwP@{|AO8ncAM{UfJa-d92c}~>?#%AF=iGD8J?D2m_P2i?JOnU^ zMFn*XVclAeImWWc2*(k{n5H|%n&I4v&1m-0NQDUwoDU8w@G|%pwKXkP(9B$HDzhkb zM*(MuX=b))8QGX_nT{}>*fm2dSh*xI#RW|l!6`FQF!ZIAVbiuKGH@qv*ueq1KUJdx zaXPf76@o^VfsGS$$uJG)3PUthvx)I=n!%f}vZ4_TEh-c=$W^O~M)-X2;5ijdIL_b+ zN!6B=VT#Gs<%}rKXqkdw2&61sE2OoeA^D2XD}!O^t<{gAJA(;5mjHwL@52zTzI{f!~LAbW1>c z7&?vynUKZusUw4vnjsZoL>P`2#V4!6c4iGTYpst7%~>rH^4?G~Jny;fL5oz5s^~|I zq1hIWYsYlbhFCAFr9HP*^h&is6|Z23L0uqYQepH~lIrIq*{Wi`M&g*Be2m2aul{~B1y7SrI-FwpSsDe?t=#UqqtBzxt3a(L^)tKhs zaB#qf1jb|r-e4H5ImuL?RdfytjokKO1W6U+c#BGr0zJ~!JqKB?!g{#*E8+Jmn0%&S z27Q>o+cKCN42l0642=R=Ak!*lWWRguyhYW+v+m$xI9&zcDI<+KxPCov=y{q(NlJU6 zJo2b~t0$j;jv@Ul4%gOXG?mE<-?X(_)Ww(~$5ZQ*Q@dZ59}ThVre3gY!^}+xCvRm{ zd<-eJ%%mfhQ}tw){TFNZqd56F>DKROS+O;Bm~ z7_BZ7?D@+iq-z`g$PNPElBfAd)?(mc9EEi zM0aq#gg2vs)V^?ngk;#igDJUD!aE0kW~4v-J9zmPn)o)3(YlqF(8hPr!SAD!e~&Xn zd-wzN@?G@tA22|4i2sNS{2?y#pKz7vD1U@W{xhcdFPI@Z%YQ|V|Ai&~w;O+?9AhPZ ziWcu8?P5~EEZ!ruT5%I|n1{#TKtGn7WpvO@R3cX|k@ZO0#N664>5S+59L-0l{An(#nlFLV$l~1BfXezkRzqEg7O8@`> literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$6.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16$6.class new file mode 100644 index 0000000000000000000000000000000000000000..6f6ca82e22b51524b54b0d85319c355cf2a00aa5 GIT binary patch literal 938 zcma)4O>fgc5PcgbHVKBN<-2^e1(zl*!YV=$QV^&LAQ>5Ypvr;U#$J+bon2&a6Y;Y+ zAS4d_0DcZ9PKa42qKHef(rWj;nYS~uGe3TR`wrj{c05!V+KC>AMvlcm7$fqKCq_=B z`4k@U;^bfsg8fd=@la)G9`gwgGp>f=;ow*##)Hcca+T&CCxL22d$-5?LI@br&Cb}!v!B6&Nbj* z#YY`Y2B&2mR${5d+tcwtP9vjH!XjUVQZm3Lv1>e$%uhP42^gCG*84UX)9R$w}B6B+o;Z$D#>&q)$ollBb|EK zVAxr*0Y0{Hm)_7SGGZKSH7t9|@c68*sZ58$ga;}ANUiTnG41}XVL~V@spxh4J%b-9 z8iiiQi$WA0wiz}Sd=CZxZ;-G_U3F;Jz?x0lTpH~P?K&F7o~PRr!j@_5?tOv3`xO^I zmp-eOD=nmUe`1ZWPa4Z!!eu%cuHfqYmFI*V%bkf`>+Jq2g_|?uTxg}&aNXKz-@rPB had4AR1-EdU&MNLu>i6ijPL>)1+;{85&6d^C`U76!?7{#5 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$16.class new file mode 100644 index 0000000000000000000000000000000000000000..d79a0155627c19acab1e2f96174ef0ee3f3544a4 GIT binary patch literal 6526 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 au8viI+meL+bMo)u6g`llhf?&TB>gXXK5^3k literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$2.class new file mode 100644 index 0000000000000000000000000000000000000000..cf091d54da50e191e86445b9e92269a36d4b1ec5 GIT binary patch literal 1988 zcma)7TTdHD6#j-?W7up0p-^&xG-(~MNx_6(axtal+Bz6aupx!?!mu9W4QAK%E)d=- z^`SIXp8FE1Rn)2%sgWYJj@u~t0sS37^DC;JS=+@0KVWG+GiT47%XhwW_OE~bd=6j$ zX+P>1x(s_Q?3!z0S-7sqhq>XJ8>YJzPI6~;xO@l<_@Od1-{BiPoaNR^IKF&G7_J}n z41L^6A1oYd4_s7V>*F;@*O*h^9bD- zG%eE|Vh9C~b|o~=ppM!p(Flg)I{awRprA=dBbphMpj2pznUKO*6G3+$xA7(P%U@@5d>I_I+p*Zr-$3 zM%K-2O5`=1L5Ck_{|A0aLq{jhG59xlc3s5N3~j+^D0a|JL_<5y%e*g0jl=Il^9^{7 zf%Qtoi#oc{O@LD^g_UCHt##v&k#ew}uaGp+!_ZMHnrg+@b@ZZ-p~1CF2{E(=YbMYS z;@@S4&I5Ew5wkov=Ug-E=y(HfQnd-=F*BVe2J$VcTg{xK8s5fLKdvwY4j8T306MPW zI)%y&LpV<08bi;~_z10gVim;X;Lvt{@5Bpl8L7m zJc*X#Tk-Ui6wzxM8D~m?)~G3&IqsEmis#CsL`&G~c|%N?a@d@#p0ItA8AO0_%gEXe z_5YM`Gd4A#9<^v_j%K;z2*(eSbX2gdHE+r6p^1z0Gz1lTd|=JZau(A3ucN0C8cC1Q z?kb(7MC-ZqJM^9>IPuuiIVok{8@jEGqlL~o-I3Cl&`K-O3NM$eutBJ(C)sw-Z_uBj zeW9a>(@*e9%c}(hI@P5Dg5I`GrCkA+iU=3+){oGx`%e1`h{$V2yjS-S=j674v6c^% zB5o8gBhRX*+*Q%~4kz}d&2qaym(?ZGDybwMdy)2{pBhks%w*#A z_z(*oYTH<(ogy*8ZQ7~y-Sy!kd`$nJkW_;&=f`0E#WtO^J|#&VmcVIMiN3%xJuM{j M!GNfjA2aXwFNQc2Y5)KL literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$3.class new file mode 100644 index 0000000000000000000000000000000000000000..36b824a61e6be64db35b029e539310426f2e82e4 GIT binary patch literal 1162 zcma)5T~8B16g|@xrd<~)6$DhUYK3lFSfPq&jftX0lGYbUU&(YkX;<1^vpe8-;=k}e z_-2A=eDDYOql|a9Yf{6@ZnCrYp1E^B&Yb=I=jSf~o4C)BVpwtfp{?AZ>`0|#U<*gN z$F6#7?~Cy8QS6lJ92tg!@VbHTc5OejpOZb10mG!~yJ6`TWojl#)u0m(T+dYx8LV=$ zBUYOsv*UMV4h-i^OkmPL8dD}X&NHOTI$*l#dh*55up@(g(HTf;x9K}#&=!HK{TR&X zb{UdYF4d{sseUwSONOE7QQG-(bBu==ZdmOcE@FXW{(qk0eG`kgL{q%(3&p^84GO+u zVhPI(yeHKYp#;NR*&5IN_(*fy$f8I=itgjU?Hag_62}dOnXxWLktS|pg&{}z_Eg|{ zJ-U=~^QAZz_CR<&djvMDvrragIv17j#875Yp}8ZsE0omoFi^uf#~MQ^$u*m>L7K=3 z$06QI8=DLV$vAJE?JfzTC6FG5H1g~?h5xRHRM&~vWVkTCA5%=z?kV9Mw#2JgC&r$C z6gcvktCch}{xhs=LP>8=J!jyD#BxijzTagqcRf!AI|C7hGDMNInx-F(>1jpC?O+y)iJ1{GtZ;ziVPo0`5unKDQ%EK%eZ*(r+Ij<6c7_vke!UJpahUvEbq AF#rGn literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$4.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$4.class new file mode 100644 index 0000000000000000000000000000000000000000..75f6f7979bf5ef124ca86ab88aba7ee6d9cb9e29 GIT binary patch literal 1094 zcma)5U2oGc6g^(Lg@%-M1qSZu&nLM1`xGI<$Y52>hS|1M;`MOQ6Uh$mMS`K!jsqTbc_NKHcIM1+875=)Ht4v8_;lh7AKc@T&+_3ETfW3r4J|8i&5A4ze@u=JnIiLM_Hlg{oYKVo1l z(s>}&P*YOQHZ26=l{Bi%o$keTlPPKUQUy_*Ql?u%_v6sTLp)-*9;;@owD_P~S`4;D zL|rOEhQ$*F%(?t6p@wEhqxzn~Z7J%@X2jD}q&6t^g$v~(igUXfWok5wzG<*x(exW# zvMKuVaL9X^W>3jB9;deU8E)+hu6)e)%o$&{LebU_l*o1|#(1yd8jVDX`7z2nV#$%O zQ2PXTdF2>4j=FRu|^VhfU02Z(sM+d`%;~iN_9*K%jO8A!T zD0w2)TWi-24xhDxd@&BrkUX$YY^!d&`_^{lKsYLn7{k2nR((%aty5Xu7s`5RSEcvD z_Zr9fZFjvUoI_DvuhAk=mVpwk@EKyNCWHJOZC`F@|0Ra*6T6=GZTE0P`hj8?DPOkj zT0<$%rSzUZ={v&l-0Fq(yEW-k{5N64Yxt^0l$NC{)e6JA$@Vy1N8o?_R@h_U>t0oK zf+1xfjvLzRH_(ZM_67`eoq0nBj59B1pc{zn{y=;WpC2qm&qD(oe27x&_rV8~s4rv@fb zV2F~!N>r0hQA%J6GjU8aS$tz^yY{Sse9gcamZ%%bkWT`cb&QyNOylzsG3(b@EA`RGSpYk zRpN~*DRHzT>NI|W_Q;(#_e6?QYg4!lov~DS&0v&V8n^Yj9RwnX<0(V-vJQtg!7zBm zxMGaN6`?1JXfmmF2P9Kkb)hBAg_aZ-TGAW+zjV;kgI-#dByWr27}+s%s);^xx{0(o z(?rJ1@+Jn&Y_y52`31ut!*+gAmf<$;&|BC3L75S6A@Fi(87w}AV^_yPGb@PSMwMY%P;nbb0fCpP30pKF8S((x18-e>!!C3!Y3~O96n}xw zCZNU#e}F&A_}!+7f+4O++wb0f_k8C&_uT&c_5BBcO>FDPF)Vvg&yk|XJ6uX0JFX|i zK*$fyk(-?DW&?XihsI!?x&zk<-0;LX=$vv->L@U5yP+RP!gnr&f5N5HjC$u$KlB@Y zDWlLn2%BB*opHa}rG>mD63IgzGZbW3B=$N{Xbr=m&M-M}16y(34R|b@4TeXp+r?F_ zMs!Kpg;ydJ@(n|yGF*W>v8rtbtr_`z6hy*=j(aMaGBFCnKpyu^jNt)8zM@hmTO#D| z`@Ig2kK9hc8H%mQbAz@U3pLIrHPt`EaOCVA>d1<2YUwj9RsLapL;m`4wQb-D$~xv4 zX6{hS#5@)lMn#hCRocq2fkoIlmKf||cF4ptEE9_Bc|1w%%?*ayaNX7Slx{{Rbxd3E z3x@gs^u@rA8O9H#>z(bp=b5I)VbqU3{!S>>r~bC^n({8~&D+omqC|uz`&@P---H9Q zV2PBCLdh@Xp5(nl9+0^?$vgW;-T~2a_IcP>8TBd^H}^s^ax-v~geN*)GR)o9_r_k3 z{&yS(ERdb@bdMlsS;}94RaEYxlbWM@3?_XYr|30}^Yosqtz2WGwt5Y#_7%m?X<~_< zM!JC1)T)@Kv06y!n88DO(~-e!1~tf_%C#$4U-0-N;ay=u`-Z2VFs8yhg$g+jg*;94 zpgDxRj-s}KlD3ICZ7Z#^kdi8ARe&;{qmouGleel=sYVDIawVNIS18V56))1cMXX_i Rq9V<+w_2 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 IceMWf2S2TEm;e9( literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$9.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$9.class new file mode 100644 index 0000000000000000000000000000000000000000..84cdce19b62b41d9322d3c9471320927c6260503 GIT binary patch literal 895 zcma)4%Wl&^6g@X~ViF8Z!@E4%f?JXzVZ@3m2!sMimR!1M)kSv`dq}2r#*#fr;j>sE zBo=%CpTLSQLELd86|qSyjb_fh_xL`}{rTtn4*<{c*h7u5o#d0ysEHg(V`LGE#Hg7v zpTk2@p1zrbVAq37XrG9g2s5Ea;r{SMCdNa95DJ|Zxk|$%*G6g+zEvX2M-hYKqex`1 zuLqe*PGeQFTNZ?d8LKjQ#>wMlviF(sQfXyg5qjO_D7_YZoFVT{m7Qm zNUNa{HW$Vd>Stq>j0qGGS_k>GNaTBE%U}Ihw5L`rZt|T@vb?ac$IXRFS3olc`+C^(KCC|b=si!ug-#aGwk!Gm}nJ7zHde|bYFPH;Y z`ro2pgSB(`)IsgGm5}$g#;1uETQBqL1!HSz?L7Gkf9D&neyL(st*!Df+x>+OW1l(J zdJWh4=Du)q{+HK`9c#NFH*B!`yCQC!JLg18y@lJ>&*u)-IE{n5jB2=t`+U22z@QL@}g$opWZ+cP{gt`TpbUHvm(3Y@mZM>jn*5$%d#3r9@~uu9ACF z9oQRAw6oF@tQF7Ga#==7_#(9O2I7SDwzKEhb;sYb*Q(pXRR+2Uw&QzYAU%6udRs!- z8w~zJx;t#P=4+u?V+-LOff2e?O-5FpgDJNYO@R>>r7zVIVIkWd#8`z8F9x1SfY4*Y zKz9-`q)a4`Cd9IOL8>f$@qD*Y72$?ctqVe5IdGkN#R;XBTgtdjhcMq(Bvzi&=?P92 ziZGfjpIOvGsWete;u;1G3=n48si27=3=_H?*A-D@O%q2EQlg^Yna1nU&!KPheEF0zC~ zE9I$4Lg9Ql7ykCGH^4&9#5nF9W9DZGxpQJR_t3(G3HuL-Ii}^F6#Ims|4@K^)`Hz| zZFAK*AW(@Lq9OfV#nno#^Mos&N=?_^lTAILOUR^t;=A=A;u1a+sup-A7VwZ@1b(s3 zU90Q;+p~_uuJEUz+rcdPd=?bzP85mAz$3!InJgt-IivYgr_L6PatFrv?F6OMx)J%b z>fkqlBx^75Xr5)QN#@2s!_0lb#gEN3y;|3tVQYGWK9)_k(b`M6%zq98{VkN&>?O{+ zOzsoRLtGsmIRrnqkHkZawT7&{f9#=8ThUvj=p6>>Ju~h@(^KvjTFVpTViNhL_Y9x5 s)6KXtnBh^3?+5I;1GAXpf1JB_9t9o^@=PZdvDB4dorPsyqvPl6CtvA}t^fc4 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$10.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$10.class new file mode 100644 index 0000000000000000000000000000000000000000..1a704a0a568a612662fe7870524580a1a44083a8 GIT binary patch literal 4520 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$3.class new file mode 100644 index 0000000000000000000000000000000000000000..2ed64a5071c935620e3751c8af5139cbe83f8266 GIT binary patch literal 1451 zcmbVMZBNrs6n^eDR#pldC@-Q2Le*^`6$Xe7P1vFd$&f_IKJdY$Yj456dq^LDewTRUdW;S56+&oZ5=*%DHZHWRWw469v%)eDqy#yeYkn_(vV zPZnp|Rou;0RouW$1rrRT7gSTjB&HZr!jF0zrnakM8oGiRhNW&gs^K>7F!Y+1#eH8d zFud%tQ@Kmktf(T3yn-Bqei^(PW-&)uNB9*U(#-@1?&4jw`wObZ{Cgju%{!Q6=$xWKAr>^CAzHs+8c~JLk4a-= z{tQ5efEW@@QKHi}Tw;3JF@2x=3LY{{obUdbNulYuklN{U_Xnnk4slvNh-EU8A3$bE zvV(4>7_B~N^tYd+$E3&Uo6gUkU?4wtf=vDkhK@tSVS20K0jefD!U*Z|AemznWAvpf z0OOIXH<2qn{|TATxc(M{Bn_P6R^k+QkI4HkEl!&BABXfmLLkB3k^lD?W*;!dKGH-V zhq0zYXnGV2&~Xp*VSJq!VNksLC&rjJMi~s-t literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$4.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$4.class new file mode 100644 index 0000000000000000000000000000000000000000..74eb31d7ce0317d8f645d2759597dc8c9b49c864 GIT binary patch literal 1701 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$7.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$7.class new file mode 100644 index 0000000000000000000000000000000000000000..cb17f3086499f8ac49c15323fc9221cad566c048 GIT binary patch literal 1860 zcmbVM-EI>{6#iztWaG`!gz(b*-dlz;m zf!tK8)QhSY6?aHgFWU=ls47vgpydJj1bqPhdesN0RQ1eek--vDWJ~MwGc#wtbLO1y z&;K4g0x*H90gd656EtnP`X!TmM6vT{W@(m)S`&3!ivJlDSNxobk&b6kqco>Qk|6<-;}8l4dCi(m{rvgSpZ zlLV&R4VnT)IOF-AJj-x8+g*sUWd^+%xFQXPofZuAnnlxZYe5 zVU@2m1jArCaCl>xhn}(%r>@drnC=QmW{T3;8N6I5hQrzNYl~Val}cmFCWdgpz?;1GHFwz0crPhs``7`M?A`9qMl%w*&gQ3aofsa2zd+d<5W8$O-$GQUh2g(!;$B|+<$)O(X&79 zJpK0Oip`RVrKhd)2L`TesWzIl4<-ru+Ge)Z4qUz?c083WXqdpg>%8t_P3_y9C| zy-i*hRdGWyTx|EN6Zk|K(k?1_Ll(+y&LAELm&CPo;X8s->}>HkHZ{r&KC&>YrcjS+ z!F3WFo*;3s^FW(u2&uj)c*wv?41Gj@IC>K57lH^W(fnQBV*IWwL zLr0wV)Nt>5nF7ZZZlZvB-)RJq=dUdYSqoeX3s__@0>9WGj$_!@PF=yYm+7yd$ipi6 z#GJ(jk0KEn_=I79M={&@8TP)0D*HQ_7>9_jQuOTr8yHZuMcl5@mxf8+KGLSiRvt5V z{5M#+`*`Emc+W27i&yBh=3tO)i_R$TZtNjRFt9I)@)vZv1E}Qg!fN5o;TA>`bwvNN zg?AETuinB@r4N%^8DlNjTWga)Vt2A@a4OZp>3jH4K}kVDnV`#|)zPOlFr+n+(E^NV zS20d9uU*4gEyTPQ;R4A^n#7{E5kt;z!Ac+#K%7G{PNRZ3%*P2toprX8K)uWc89B)Fgh?1g7lPV@)Kbl$M&6I%U-K*b64ucTQ)>&O_MX#PP{1*!jcGtTxM9zcLp(DV@Q@mkEg)U zYeGklfdtYfQphkQ@@hf4Dgyp|w^`@WhEw-BLw_}N9lz#8Ldk7qQia1%?8ppyy`TM=L))H;5xE8ZZM3V z^4D`Dw^!-&QVKsdaTB)~jLk4=I#Lx6!$6)Qt{#`(x{O4yMUWP9I>s2RQ;`2GX%lyl zXGpa}o|$4OoiFCn-`r{gEEG&k;O;Tz^gKi1oS3aWv@mJH{sUrx%5qQeeTL!xlmKxy z!rf?XbJaOuU=?bJrU-T=Wy@Hn370<=s$Ba{Hua=RArYV{1*H(zRyDT6=?jl1;Kv+Do`he{ur@ZIsu< zk|bTO@CoK2u8xczf}Yz);vvS{L(<+mX6RQ|+FPWxcNo&%V@&(dVk-PXYcmlprZC-N v&(Uc++wv=iIT|JCzE8{==CMHkBz12QB^nLUOc$20+?^twg-5hT`A^qRtf!68 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$9.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener$9.class new file mode 100644 index 0000000000000000000000000000000000000000..7a9cd867ddb2ebd3e15f13def06ce3ff09305c14 GIT binary patch literal 1858 zcmbVMTXWM!6#iB=77>D&lslyaP>bzAgbjqa=2FKA)Wso`qA?>yIbfDV5P3An!~6G zduxi~6*XHlsXezOE{>_$OC~O3Y;(KfI77b2?ecY%VcbM{TZXcM3a;t6%5b8Ku;)l_ zPtxZ*Dg4;Pb=+Vu9)?lNk#p2y42N>{dcLtK0kbj^!D6R|RTC4aZ9*+wV5sy6^}~#+ zMT}-gJ>~^}%y9A}SC)Y-FzlU`j=M7LtS0Sa%!X@`%Wn$RVEebq+o&QzZ8#OUei##p zX)c#S&qM>$3_3N9FWeQycw^&r0%9vP6@|{M2c(KM--%-$>$pqh>~558O+}5gqYMsq zX)T6HIa2iQf|kuHDFL!WN=Qh>HG22Jq`!N~x<-DA#=*kKTkI>Gdy8!04-CEO1RkWX z(OE#%)V{|d^3_5L$6*|yk<=2$l2rdtB9-b<;WuP|$MKgqOV++NPNmx$W~zN*)z~a-=RveUz4Yyj&Ep8 clVIJ(9kPzmpIw;2x0wN&%i$iysAAFcA2Ra%tpET3 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$AddTaskListener.class new file mode 100644 index 0000000000000000000000000000000000000000..d7bf2a0b57149816dc5f3aaf8146f3fb8e929b05 GIT binary patch literal 7389 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 I_z$G~7il`sk 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

15Ry5SLgx&ehtUk@5hc7}AloWTM=(m2 z`R38nw@;UrfB*B{gQW<@8Me1dR-P=aJbSf#|MBX-4;4txz$IL6A`dgnukWG0*{?F~ zH))rsx@8rHEo+nxLv+ep^c_AXR5ACqcFMylmQ?biu2Z5G_h%#Z_aYk4A__7YsVxOsg}r57XR}I`ACbsln%nrT#(uubN^X{YPsC6fS)k{j^tx zq>gRaPBX&~7-&HKK|l(8B=wAtXjJiI6}xB^dx8BSyvCup^#bV-{>HH?PF8WYp&6^z zjpDz?$Evv4bUuJiK!1;J{R2#zQ~D~7>mPAm|5PK>Uw7CbL#~m>1knlO3K0om5?5*N cpgg>WX<7}?$tK*u%}$+UyK#$j)OG0h1(gpRb^rhX literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..4e87f0c937c8947f835c83cb60607b717a7f464c GIT binary patch literal 1181 zcmb_b+iuf95IviuapM@`rlmkBmx7^5T56it03r%SLUQRtt4Q#+u~*3!$Bw*Cs(uy{ z1&IeffR94VCTT!zg^+@!_3X~h<;=|4A3wi+2T;eZfeb^-kNa*a`=TS#R3t9XaDij!u*2c&iC267DcF&}X^=o||_HIQf6;8Bpo zGH^%a;A$`DAZmruA4d_9NEq^IPbz1Zuy}KWX)qK=Jaod>l814ZVZ}Q~zy||&q9vpJ za~a9>CBuixe@J>&j%u4B*NOvC07J=wfknMrvQU6&B8z1UMXWGnE84W=$w<5#_B$du z;+;@1l)c#JVVfsXpQp;4?iIt{{GgpWwZVud!(dpg%!-(es!?s5SjRmBcL~nrK3cf1 z3orty`ce@rHey)5A`XLj7!MO)ypg)Hr9Zi~qj^L1??rwXD;ah7McRu415X&5bMwJM z1y#zZdhtnXsM5HwNhV{QaFgzgMWN9rRW80cYfL+!!qIaC3RfI*i*J$^G&RLSB+SVDa*S61K z*S@0sX>53d{^r<$=3&yv>8u^e95-=`B*Sg2O+&pRse>=pKEwWkI~QV@c^IZKj>*$p5_ar+rcxk(J1Kq1?|s1%>V!Z literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..6672868709608491600c89395e07cd0a20f080c2 GIT binary patch literal 2295 zcmb_dUsGE}6#p%uT)12zgg-5awrG?DYOe)q(Ud9;pwv*bp-@`2ZtmTNg`0aZcN63r zbo%70Px|14ugJF_m|CTV=qKr2IZ zlb5;eaX)V_=Qf3-474$faNjKk(zVNEU~8-RvY+;(Q#nQWqR7yuHe?vTOjt6n3?{|U zS>|5co0HrN@(g{MLj-(#+pbDUsqLEdrMk{=FL4T&HoGIa%Fvn)T+soBZVLw5^{mH2 z2TT(Y^jhddA44ReRl76N7q?1!e9i| zWH1aQj+{73RVuk^Vi<24c!S_H#?iug?SSFRupq3 z82^A_>ogLTJW=y{rruR^juMF$2dXMY7eA4V2=Y7WuLVB)CLTv=D zg*-M$Ri`Fh3RO^8qSC_iWIo#Dxi+C4MbTRHsb{4<9)=<`utnz`lHmv(UER>*hF{h} zae*2`guXLqiAHs&0HQJ7C#X@k(ANozc3-2}46P$Hc8`reMc3HHr-+XIj@WM%#eVuX zD+UxE>M;Yf)`p~xvp7d1!ytxgM?KTmk!*eJ38H&=orbP`T!_8<9EtT9oqDk3H3)c2=Zx7$pK}`@0nB6eU9(0*844Sb`=A!uwRwm*cV*%0lV!6v-6 O4w5aQKswre`uz(S^pg(& literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$TaskListItemView.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity$YesterdayTaskListViewAdapter$TaskListItemView.class new file mode 100644 index 0000000000000000000000000000000000000000..930dacadd8277098253693e87c682e1f603d84a6 GIT binary patch literal 959 zcmb_bO>fgc5Ph4ZapM~5mX^{|zH=x=swv_|RVj_A6v+bAT9G(z>?Ld)?;?BB(i6Xl z1481!58y|k&brB^NC+v&($2iux8vEFx4(Y>_zBb#T5PaJJeV?9#2i+gAYgeUS$Mk8s4(c8g^N=aaz z_;AmBumbC`G+AMF7M<&Cs3=O*=PKtbfi*`8g4=nWX*wXoyz4m* z#zfX|hQRTTNft-aoC<7QC-!nVRIXCyHtC}-+q(kYc;-&HbbH!p+7~$7`VaY@_5~VU zo2eEAmIDO1;iHa~05`EJP~UQd#aJ8lW}FXHk;uVFF*CNQ9Q9?P9i9Xm?xF(8>}CBi zaK5*HY{x~a4z>ILQo{Y8YG=m@foIY)Mit$WEK5~-xG&I|x!)ch3bg+vjlkyLB+PPk zB|BkHMU3a%@;X11Ikt0XvM1n8>^xc(_OSqjp_@yE!E;$;UdZSrYWxBI_OowT+WwAP rUm4YKo7X0D(E5Tk_5iFSDH$H7#ah>6FZ*tldg*Gi0K3$1nk3 zc}1(*8EzmS1?uS=1~e213~jcf*7RiOLMz^4E{s?L!RA=VjI^3@Tg@|zesu+bhCykw zM@#Z{0UEC%mW(>CVof?mV~mFV10GXJfkd;W39WF3=utsWLVlFdll8zmz zQU0wPf`f3dhBBIL;EsWDD5XUc_L;PZMtz$ctCLnMZ>mT$iI~xjni&h1SfMnVN&^#6 z&I|D@3C(y1{Vg+u3Ko8no}_`Rg?+N7nOy;*6q*9hd^mD?chFbWFvGDmtioQ^W{@1sH?=Pdnon!reJJ(DO~cppV6 zY4rI97Qj@fRQWQxC?-(S%O~qRZ)xCEMHMz+DXNi*s)d<+N;K>xSj9vgoU36m@tGyN zKIu5IsN%82z*0n*oE49$VcV&9n4Cvu3r`ccqUUI!dZV&9Hg%dEmUo@g4aC9BXeg$$ z9Wy@5j4oxV$mZHh#Bggv(!eq>J_-_+(_%6(2SimSttdpbVTFM+@m(HeP`O73#&G6r z04tepln(QwW~ZfL^?-bkj#C|T@jU})-wY}30v_1eni%9txLVLZgZ`Ub8&$Ru^(sM&&wKQ{}ZxzwGJ~j zRE5@YG1hAMsle#0pjRhqj_21Y%-;zEm*8jgrE8TmB(hSbCnYysDaC$aU>$x*vzlF9 zR+Mj18!i^q$&)!-az(#@mu(dGR5x|YKgy*HP$BtFn{aRh{W`X?% zmaGBpste#&M*LW1_$d)9?leZs4$=p(NkCVt^G&s^;|^@ra3?Y4#X`D>#ySjaL5fWe zEjWHR7R&?*84i<)Jc$SrjCF3EM zVpT<3)#;Pf*DUolJAmKt`u3vv1WZ@NaxC92_I?WN4;gq^aWgVtZ-_-=ao?^rYu0FZ zl-*1g!v6oZuEIh#hiUQY&i3UBq~P z=*`k)S*IAivzu|0k-2)%&}`N4 zD&=~%WooE7-Zmq#4xeBztz#$ts9gOgCa15i+pYt5;?D- M5+;wqgcoHka^*z!ip zbdvE5kmsl(K2))N$H2P^s73U)TmPf3%T!gHp!VCzJ~pQ<+-zw)*Maf|J!w-l}DIrnxf344G}Yu zuo9Xm7C69*`rh1_ol%*5vT`h|>z;lzV7XMH)vKnLJNfR)cSM#aAM(_zIG^&=i#SkR ztX|qVFXRfX$8!c}jhy9i98o!83koZ{F|^XR1wr*S;&zvMAAT1pp7Kmcc@~P~N{r;1 zK@OzDD3owyON!DA&!af1y~4`PDD1(0TXCSk&0NTXVpgCw<$3*>6!tP1kMazY`ix>l z878G$QIUsDSzIo3x$NU!p(w*esaxerVb_I;8Gff`_>CFBZ#!y&hi=7Tc}U^N9vpMd zExiKLcV3HPc?tHFYx@Zr(<^8U>NA2GaC};j?^fDf<6SjT>#uqQbGKn?JMDTxtv@aK zq~J`E!pYN0{8hnIQfS?dxmz$#%@%sIkeV%WXB}H$t68Tzi*7+zRf#_ZXCsWN6wcU= zskQzR|7Og~xz<_kwYFnb3TtvUf8cG_=5NEf?ZNZ9aemIB3%x@!IdvJSO z&Y5oaOxj5|(MP~ceiX|5{EXqJil3wTX;kLu3T{o|u8kOxA$#zb1 zgx%jy*m}5Rq2L24Jg8{qxlbE0QcXg^M|zjNCwm)qv{#mPeDcp;3Xd><} zg-@=BCNIMaI%k$%T z{GLGAC>G!kc!2@PX6IeI=11x z_R8vR{EPmt4u0S*e&{ZKq!v^7xG%XLhoQv9#|X$zpmQvepJIgkj7jHn93;QMc=;vq zunULlz_GeOlP)n!*D+7u4-57EU3*og)%NU#5I*DWRd|H(IiK>F6Hmbx_!7S20CwSt z%!S8gvSLAHDYJf`PU#$dmdl&AE)I~@ZfW`zi8M{RIHYNW$jitXulz)9w8{xp-NKhG z=%apu@`YlgYSY0S)fMvTiC}j9=%*XT?v`XkHc6jqe0>vIMv5|lQmvqJLbnKHYj$Qo z&2-^a&HkDdX4j-%68_hKx<;NT6h#~-@%QkdXcNQSAIL|GAO-K>y83%BJ+S*s|4n7f IHXOzO1>%Roo&W#< literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskActivity.class new file mode 100644 index 0000000000000000000000000000000000000000..952d3fafa9de22579e336732d22d84963efaab78 GIT binary patch literal 34875 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 z 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 BjvN30 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskAlertActivity.class b/代码/TimeBetter-master/bin/classes/com/timebetter/activity/TaskAlertActivity.class new file mode 100644 index 0000000000000000000000000000000000000000..5790d8ecaf7457ea2e30f03c94c30cefb929e12d GIT binary patch literal 4829 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/HistoryGoalAdapter.class b/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/HistoryGoalAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..f3c13b0da6a916aff71f630e13d79681d8641234 GIT binary patch literal 4514 zcma)9`CAm{9sj($z_7c63b>jP&xmG0>#DWHfEqahuEj{ef@oSCb_W=8w=U4c)aDV|A1Z8K$z8n$g%Q9Yq&<$B1>*%|9xPexC+yITq>1lH*3gq1N9 z(KBXZ+_0k^dd|q73#>}@=*gsEor~E1E+1<{P{ z3bqNXUhuOBMipDdW0 zo{M&vc1q87>v0)|D&B}a0?QIcocFRIK%lMkW|wM+Et*gynaW$RSHYbHZWWQJxXXcq zZVj0UdqQ%wsn{ns1Kd1hnBx<+0*07}j3?rVZd>NrAoioS;-!ZG`PQML6I}#2YZ(K) zdIDS->F$=7(t>UkJvc-Z-OF?R7wBJf(Ua|-wZ-`7A?zKxirY@y+VcPoqgTP3Zw-4R z6LQQPS8)XQ(%1I>o{o{d{1ez%s?fD2&*H$^CtbNuV1J~XflKLcZKi^Oa=>=#=_x%I zL_gjlbCb!s_SO(J4NAh}Du!`FAegZ9GYi1B+?uPqyVT1*omtV=G^pTy=6*@II>$kr zM6FafqT&>EUbIx$&m0ukz>9u;xy<1WC30oa(5)UzPnax}{_M@0H~ruvfN_`#CU_$y zJOdMY!mt{TnMvaa(?!K;Jitin>}@~NCvbbIZ$%8e!%?IpxM>z5$L@0XSj;7{K8dV~ zx5Hx4F_EcU0a$+5BHV}_NYe*sM4tb#M;pjf1C zbfGwh^Xv>=1II>UjO;R46mbxX9NsChc$dJIGJX`(yC^)U;vu|8AVd@v>=f8rhJWF- z91`AH5UcS%X~cyk(Oy)B8J&{wqKZdkS}db(r}DcIui*U!c;-7*zF{}^>gO_(cAswP zDW=vXd{8R;kStHJm@Dp22@Qrg_tiXr|6dD%9lkt zuxLYG$I4Ns*9@8VM80LxK1z!_m8PsTw+PXOnuMW`>61xf$NIogpftPO%0Y9pE=g6+ z$xk-OQre~IPWb@`83`#T36H*b&X9%-*qpeI=viluP!MGGVUOzM1V*zIzRIagARJ*& zT{=mGPjg=aRjT*W^$(Opd=filpN!nS3&y2t}@r+ z_Q+y`@?xXSbHm$m!lfVsyaPHGVw6uAmhDQcFJ&f8RaUoH9t+|3M7XkDG`yyJBG%Mh zb&zwg{0rg*%qw`2DYFO+<7Gm{OZYyAAbphMjC78(&-XSgFFc3?p z4XZP$=W=qSs&f0Xg5PrZeVx)sYh}4p@cVKdbfGL)FLVe6*9%I+QskB-v4TGrG{2>U zG`6rVDEM0e>C$q8O`MDUM81Omm8jy=C&y}M$B%S1IXr94} z=55zd-@N@A!p+TB5uSe$tFJ+O-eGRwa}`CCluFieQeQ_Q>#+tK_yufq#c+2$za-TL zsu#}NMjGJb`zGA(s`Xtae;pt?lzsmFQrB>6)qG2(zop`75z(r`6}zXg`2Y{O8zmTI}Qwgl#|e|QFWw+6MKT6b_7?L(U44+kof;cEHRg8o_D(;5m_bBEto z5Szu(R&@^j!ji!V`Vj4qpI7wM=ZC$3-gu;P~;p&UwfO6`hwrm=2BUOl- z{4AtgK8MlakYmclkfzci64WK?j4K$ML9%s)wp?2=jm(fn%G~f3OwQmP(|Grgr(uCf zTTUf&SUoI#oxyusYqeT=_OMnvhfBk?xLS*U&ENymc$5^{+6z9R)ec;!5aEh&Y;^H?)N}v6YD5!MCmay%E7KG+{5cp&i>fuI}I@8pR2&BRq-o z=j&;%8SKG%j?NcI`6!3=&!QEd=lVs?=+EK+2s!3)5U)_mYka@X@%taR2mj=F`d`l4 zKJjdpDuq!5eokT1;a@nMzr?S&HnSKVW~l!9pvH0aH+YTfIDUseaQ!3xgugII JF5$0o{U1`bnOy(? literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8c814271ddbece78592989a4b74126b70abe557b GIT binary patch literal 1215 zcmbVL-A)rh6#j-5w$xQhLBxO1s%=r0R-z^~CZthQQ{{rD_tWj99cXuOciM98g^AG{ zz3>^lGBNRo5W@rb90c_xjAsfIQj7^~GC6b3p7Wib`Oc3&8=C;Kn71&%Fz>3Sqh(W6 zgx11$c$KdjSyD~q`>Ipo!AemEx-3O!Vdq~WVrrny)3 zm8?2#3UEwRV$sVtq}xRip70rlbX^9CIZ9qUdiET}-6TNt#ZCpiy%4_l! zQ6e;kC;LO_&s5x}TfWZyCGor^JXhojsa|mhv2!N(bsIO#lZJ!3>M*c2!&uL|M^Ji( z=#pyru6QKPLr?vO`?IDBV#hUGfbc1R}7IWf02*qn>b8o5G)om;&wBQ7Do~5nKpq0vf;!ZjuZWvf2Uopm0)Bpeg literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..0f34426805e215a8fe2b686bfc5240fd47194502 GIT binary patch literal 1230 zcmbVL-A)rh6#j-5w$v3$QN(}HqHR$Yt5K60BdJJ8id;Z?Kiy8+!R-#&oq`wM=#}ve zyiyWwB{9)R#P|R{hxl{l8yL?l1Wap8V3Nt1`DV^{{=fYG_!&R}*DZ80+;COX(XuJ3 zLTeE?yvCP}TvSaJ1Zs7WhmXoK)DrAFGhba2uC~y_Fv|T} zpk&QiAqB^1W#;{oC*6oe_#$BF(G3}9CdqjD;MR+ze@FUK-(|R!Jq$sv!VoX1n&<_? zQ5zN#NyN}^qZcWLSk`>#FH2uMY&EMQSmaetFr>@Mf<{|vZ6etu+ z?Ied`C|mAGT`^ZlVi>0^oMb2*JXbbO;|xQByRHbMjL#n~V|%W-%GbizPRYo}x|qN@ z2K)Qk#*dBl?dPw5zFbdWgkkt^ZlWGq}{7;6hB>X+H&hVsRf zCjxz6a!=K5jNuZ)K-f^LrBU)tLJQX@FC8sIuC&b?MySnWw7bDlDbwvV{#~?tktFm8oo>_J zAj$mrd)WC8=zAOe88BG%Vzi$iO?R7g3_6HoBpHrlXqRP%tQeO5{5#m2IFUY^KEH|4 wcB-f7!?TELXy^Mb6)EB}vP2d`j%d1&$2iG2O~4g6bV?J}jY$-G%;ZMv4>EyZ-2eap literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$3.class b/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..ffc1ced598e66fcf7053ca7d7f8128c16a7de62e GIT binary patch literal 1215 zcmbVL-A)rh6#j-57V0XcAmTr0)wU>$Em4yi6VfQDsd7Qn`{{N<2ihInol>v8AVD!2 zpTa8>6Mq^md;p&VoA?sOGX+`##soH*oH=LD`OeRL=jWg89{|#rv(U#d=c>A+WnGko z*1~sqg|8V|RCVS1s#)a0YC#6NBt>(6_g_3?Ax!T=@x_x(tXrC^JS{x!Q zl4|&_cp}Y1PyUDdGo}h+$79c}sX%(m&xEe3ij5gK^qSO~p*+KUBL9y>M@^jxf%}w5m-nwjOqeyEE+ZBrfu(|GlU3PPtolG>BbUC zO@D=*`i?W7J3b@E*7;+iHxMJ;rWj)##TZG3vl!n)$x{}CGLrfNyM=SH%b^yoe#4E! wV6PFyRtIc+H((EpLXkj{;6g|dP#>mon`D?Me+RR4i;=A#caa$|tJ?Yg0#86wq5uE@ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$TaskListItemView.class b/代码/TimeBetter-master/bin/classes/com/timebetter/adapter/TomorrowTaskListViewAdapter$TaskListItemView.class new file mode 100644 index 0000000000000000000000000000000000000000..a54ba40aedf2ba671e6919ec9e0f59ca89c438ce GIT binary patch literal 781 zcmbVKOK%e~5dPezNtBw?=eSV*$Qyy)a?+#Pduu|*z@> zfz>DbV}aJt7SzQmZYJ2lb%E_n8G2Wj6LPtnXcE}X>{RNpbSmhLvE@IhO5k{TM*p)5 z{zCWE)^18~R4Dl9FN=H@Rwj^)j3GDFvZ|=+;J(1&(z5=c5k7#NXA@54>MZaaJQ=>V zb;dQcSrX{57I34%Ze!m>675?JUTbi>;UP?v<93;qG784EgYUTUjfEB5;nl>j**EOA#Q7~rYoh?t79j82(H7ZkM zR>jR(=G?G9ry-`W)vyar*(#*wtU}RrQzJ&j4CWQIeA#x*CtQWjvAUi&WV@+Re=4o8 z&JD0Lt~p&%*f4g+m^D&W*D9rCORBU?SVh}#tB$E~Bs6_snS9ik3B;0N7gH0iW7);D zui%XwpFCsc-SiOuE8JEx&X%ig#y(XtcvgjNi&oC^n5nUbX)b6!VA+;Cq|n#1s2M)b zGHX2JlR1U_Evv8fFtST*v|KO~h@wr$I&4yi_9SyHP`F)36Pgp~K&OT+3SISBta3^n zThT?VQ%-qWVc_P5Cl@`i3QAhG-KL`zx_rGyhlaSq`Z3Ekk5#89O($zimKe;ov2xxh z{6oh9r5=$TuCku!AnB zSWnVIjjM#1bYo8@xspl(lhSbyb`zGmTxdAOdlXcLybTs-3LNJ02NmKo<%;E6W!s0A zd{P+h$uzoChSMvDjyUD&OgiLxPglbS6h_~@!@BE=&FxBH7^50S6gD=nPPWo<2#1+f71PZcMRD*-_a<|Ka74$4Kz}yVpPuUG zo>fB8LeoF2V+=>>W+^Jn?6ShHFpp-rcWSsaXPm7ZHJrz*rkQ1t3fy>{1!;*7EGTh| zwc;4YCB_p9J61DtrQI4n!b;`=m6l3T0w2Xm4G$|ML!r94O*%e?M;HO|l2=Q+mRm4- z+HfXJp25zW>10mB#}zul+m2MNQo(fM_yj5WmkYJOUAXek-@K5(qcEgYOom(^l+9!= z4&klb3Zi>TM-itP1Y>5#v^leTxgqsM%Ut0P1)HbiIHQo*{^u9p`s>s4+&+%|f;z3k z2BQ>r%f7xsV{ijt3GU-M90_iR1UE~whV83!rQu1ka>-X2-c?1@(eV^MEqQ7<6_aB(aZW}II;Z2a_?&_+22HqzBm44FT+H0y zR?JKrMbjf#^jrid68Hk1)$okMmU>cz6?J?OU*gt``iPOADl+ly!nj!}SDieok`$Ai zU_B&{ad}LLL0{ML4LqmNDh3@cSni0+LemkpXQb-7Wjn3mn=G>-Cf>r$-+gZa&*Qvs z=i3VXJ>dkq1qgCAf$!pb8ZPjZAussm>G(cg;1xj^9JfbHR^DqsOj~YhW?_AempS6w z?vNI@5SP5D<0Wy4*Jd0tOQvhmDH?vbwxjP&;3Cco@K1ESyy)u_)l$iWePwO1_a$%% z=NUNm6SJn{RU?H>D^DqH2&ribF}JLo_A4j*yNWyC=2R5h`D`aVa5rMu zL4cju$R?y6Ng4podk}ap-baaGo+--v5@RCh=C@7*WKM$^rHHkIPcdR2-!hlzy@EUE zu~Xp&hRl|X!eVwryK6n{=Ukwl3z`$UvGj;_JE}h{9jb50v z3BYICp045Zm$B0qzU&EGec>yfu+A60N&JYQ65M3B&ASOtwEGh6X`>#iEo;UkT$m0(%@kgA(pKuy~ zhlPJ&3jab0|AwuaFrze7)a`gm-Hm6}emv&|bjS}?J)o*T2q?pc%lN5qhF?F!YqTP& z_ThCBG{zk-;Z6LUWd8*%+yw0%bZZ!hzk^pbWOZF{*$^iU-}V_nzWXe1qSH5r+1c*d nAry|_m)`SNxWacY(XX-{z1G~q`_KP(F?e4J-U9@_jxGNMN5v%* literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/alarm/Alarm.class b/代码/TimeBetter-master/bin/classes/com/timebetter/alarm/Alarm.class new file mode 100644 index 0000000000000000000000000000000000000000..7092f5151571cfd9c1e4e3a8e741d89a285015d6 GIT binary patch literal 6134 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/bean/TaskBean.class b/代码/TimeBetter-master/bin/classes/com/timebetter/bean/TaskBean.class new file mode 100644 index 0000000000000000000000000000000000000000..ca512df7cfd0bd69077992c5dc77ba3e91661e2f GIT binary patch literal 4574 zcma);ZF3t}703T8%huD{PDC8nX;RXrq_z}SZ9+?0Cu(I|PPdV5Vas-$KB#MZ?Q9}T zLYDGC2x$l*4JB=9fffn_Z+OQGn8Ad!GkgGM_y~Q&cVLD$F#OM5*;=nxOzfGx_uM`A z-rqgh`*|WYz0dEwyBsOd(q^CbMDma;6$zG3%C4X^0duvuD*-VZ>>w*JV>)b?2vN zje;>f)qLH@p=xEruG^Jz(Q)aOb&Hu?cBW9A$Ysui@fh)C<)T@#YCKCgKVwYK7=^_! z9^cx%TC*!PyM9eW%$O*SO;6@?*#hyN;DEhaWXP%|t4@O0Og5j*6pG`S#n~{P0ua!;b*7A=$@zn0BaE&;HG?E?(VN%0hRX}RX*UXIz+%}3F&cu+% zObFlB(BFnu$1DmOdKj3oN~y74Hp(m3RSkWEuDzNyIb_Is^EwuAj**f}m6Vg%8X=tL zCf+h0ZP=w1s}{wZcsqo*b|`_fsE#7uVJTmhBA;HBjg4jim0mQrj$#o@audsK(0Esi zuym|~IU254oOv4d4f?DWgN;ieTx7Af;>MWiC}EvfUv2PMC*2WfM%xvW=7@Xs=8y!b zqN6J3l7!nr>0&K1KQs)qO&#vNZdRohc5pF;0!rpunig&e%>JEaa;>^mDlhC@faa>!8gWc$5)C{SD1aaeYrm633+XeI3K-lHR*Io^^UZ(2;U_Kh*J@Z(AdxPU7$Ao#;l( zlKJ`O_rQ5C^LLKyk@-7Ca*r&sb7+gCC7oL&tr0n;;nGt%rQ43qRvNWsYr+=sJ- z#6Byzf+rc@4t|yQV*s7#q7|YQK$v#aWyffDyX+p?dtCNj+Fx_o`)KcX+5NN!T=oH4 z2VM3d+Fy6shiO0MvX9XIhRZ%md(dSMk(r63*qJt}WzwjYDWh5@jB1%Ks%5gMmZ_pz zs=8|VU18hLSiFE2`TQ2G6kCmLXX4K|`3L3pGM^GK;AxETsXGohh10Y&r11)$GC57S z0Nbv_GM~zQ8)CpxvL>^$myVMB;8NA(5iQqLDJmu>u24`iVz&f|p8L-Ni$Spp=R4$Q- z#~xxjfQOh1;B+z``x1+b2mgvU9>DwyRvzL)2NvkHx9L?5U@95kJG}j(r}g6HU^3n_ z5Zr#X&-JP^8Q(Y1x&7)uYtt9IlJNtwYhTyyZTnq*p=7*Y`Gt1-9dh}Flkr2!FTC6D zu*)x!j2~8hk==erU4GGI{HXGa?)E$4@{1+oN0eX83F%4h`lN?^ru75>K85?J-yTEMm{qI&o3NoBMlAJ4#_XyIxZ{J5C}ehyTsJ zWAsQ%4oh)fPaNCCjl}RKZYBnTo4A$e>)gccL|@k??j-s`o4A|k3vc3HqA#+EOrkHk zqo9w=N%_+#ht2vcz91j?gIxE5R0vXS10vrI0r?PXe0tUX zh7^jU*N)n6_=0?d<>us;+9#PyUXUvUx!MLqu3A8T>I-ty3v%5T~2$Aa}hWpZkLR${*ye7v#4D`CS_j NQC|W1T$RVK{|8#1Ikf-) literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/constant/DayStyle.class b/代码/TimeBetter-master/bin/classes/com/timebetter/constant/DayStyle.class new file mode 100644 index 0000000000000000000000000000000000000000..d58285ada4262f3c75a1734e8875b1132a58df9f GIT binary patch literal 2168 zcma)8O>Y}j6ur-5&x|K_Y)^=rI;Et67TcwD3Ew0E+I)~SZbF%mLb_^w`;t`h|M!fPIbgq z?8X*XsNE(;Lx-H_+=f%Lw~>Xvwao8$K8?~o@BGH-NUuGJFuFTR8>eOz_bnIJ>k4Hu znIJhy+9L#~fGO2wT6U3*(tdoS&8R=1+qeGt7`5p-TfBjC@fxFS;JR-sJN28M(r)kl z$Y}7;?zG)nKak$6Tix2^HKje8!9fOs0BM(8fig0eR-Z$ks5YFYQ=kfZt4 z0%lpS1f#-MG1``ASJyAuxAsf3AKM*XMv1VIQ7peIsnm*`B}RSw`)DU41E|v@;X6Ms zWMfXV#_ymR&aBhg^pNM$4dH}@oWR+z+^trX&pM(>N%+W%eOBC5I)RQVxEUGBiMC>O zlr+*|jbj}l1GujTCqg)h{r(=D3gI;NGa+mO4}`GTeZj<52tJcGex{cfic#|ws~9t1 zvx=(uhE>$ex2&RWj$6gFYEI&*neSS~2MF+UJ0+VJM{Wk1*GFkepr}b?+mFMi=p-zs z$qbTEA$(poKTa2Ds*}Vyu!$tp?$3Yt$Oh5yplKA1pgKddo#+|7MYNIonpD%+ z!52u8wd{}x-K4>~8ii`2x$J|3AIj@_qJE_QwLSX%prV$sRr z=zY?1Q5d?)qq2i_L^)7igYr6#)4*kQX^3v&QfL_+O1@!p{C4aWF{4SELVaHAHata zPX@s*-TdS`C+9zxukVjf0H@f^BgJswg#kAzkghaFM%)W^Y=kzvKN8CCS&H+>Fw_>} zMQ~r}Ilpxm(lZR{Nw?2XAO2;=CQ^ES&QMM&$!9A3rF2kWDD(qz9KULh!5NIYcaIPE z0|zCBLlubUW*qy?4(E-y(}=HZq&2q%EgG=XZl5vaE|ga0lKLJUPZ=`3a3+gLW4(kj zDh$=3((+~*xH6gu*Ozv*&=dYtM9T7SFk_xn%+MJAV{_W1I1ZPQC$E(?tgT$7W!J_& zXdb#}3VX;RN0d*mXy>qv)IHI5yLiV G3OheRF=dJX literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/constant/GoalConstant.class b/代码/TimeBetter-master/bin/classes/com/timebetter/constant/GoalConstant.class new file mode 100644 index 0000000000000000000000000000000000000000..ae211f64af50dde863411030ef725478cb9d7c8a GIT binary patch literal 467 zcma)&%Syvg5QhITX{){1i`TjnMAU@=w~A0|TZ^%Qv~*ie;z3VI6G%^eFIR#KAHata z=fnzGy7`%Jn3;cOzP>*`0bJpzgbl(;m@FKv7BY}p%hU;zc&SCKok1d^?ixz435~gU z6;34LXU7ZXGSq~!-x)p3`a^#_A<&Re`|FsBXeBN7Awngq8uz;1=+30r^|x_yKlHPV z#YKJ3f9(0Qf!A?O5eUT_6)Sy9u+Gk>1iPC&$ucbLR8dERPL)-P&FICcMX={4^*PF86s`^rpg=HGB>K7eCh&1`6+jRJ~HC36%unYVIW zX0GJ8%3RCwHh1z7Xs|YUf|D^&xOhkFEgQMZY7D@Jd#u$gE?^%AOoT($4YYp%NtIhy literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/constant/MenuItemId.class b/代码/TimeBetter-master/bin/classes/com/timebetter/constant/MenuItemId.class new file mode 100644 index 0000000000000000000000000000000000000000..4847f16522ab092a548b47c09bf141c761e7a0f2 GIT binary patch literal 741 zcmaixOOFyk6otDJr)fMD$TE%l5aW)kvy0>0T z^fCx1b4_TdGz#aVa2Z?Ph2Y*JMXE(cHT3GtDKDND{(#M kgkHu#;ms{hZnDT{TR#ZVghQ{M`GIk4LOArBNox#2pk+g{UY^=eM1d(*P(49sCDd?`IYoN$xY&VI1H zy4$v$?w#&{VdY9lp{^OsqhpUDWk>fs2NT6S){ti?x62Y%c@{bAe(0<`))xhMi=1GD3o&Ofg%K4V5zqtBr9=LtF9f{n@GK~HfB{E5?e}~zE`g* z^@0cBp%AmCQMS3_X0+ezKeO|X{rk`TF92sat)js2E=uP{7SH8GW|>?VQJO3>kz@uJ z%b&dmsG`Kso{Ae`%tUf+c$2A&GKQLOx)|tLM3W zl`5_a`MK@q8JgptXyA=}ey&7}MBKi#LesH)>fUs{aKlOgh7LD_i_rCW*z+!jj>Rn! z=D7{GZP(_ZZw)Pzhkf%ZpvJ0VFybSh^gDL&=sYxi%cTb^U*jaszA+R(d>k{Bdg*sr zLlLhVc!2|kmJ=t^UCk$Q!Np`I8M;myiP=~zV#N>1QuZTWGQ4;GXU|_~wjfnYLgUSk^>`Wp#13$uWoZoZzw8*^vB?kVk1A7afD+cMypW9-~I)7 Cuzbk? literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/dao/DatabaseHelper.class b/代码/TimeBetter-master/bin/classes/com/timebetter/dao/DatabaseHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..cd254867fee43651736a19c3a45d75a3b20cd3a4 GIT binary patch literal 3116 zcmb7GTT@e46#h0wa_OO31f+^J;4NG<)~Z#bwjl&afdrC>pl#y`+2GM|PCPj%^j>?v zU#HXezIUe3!I^fZ@9lr+Q(yYtcc*LZlbb*tJDJ&QoxRsy-@5PoasQX!0Gzlhl{$o5Y9NZVJ<`j+GFW> zG#k%lqnR;U2FK$$0ub0Wluk`<+U=}JXD&@lMANg47dq61Ee@&(BdO?k;{_LC<8DU< zVKg31XB)-al>SZIzVmZM!!(?W0^35p(*mBDRgiv=XBxJn*@xW%ff70GhMP~G)Zm5B zhrI%Sxo|<{c`z{?Os2BI_)H>`%>*62d^5yL&L{*E$!vTio(@i?6YP0#EIvD+&L};S zvl-0BXR_{=saHQsR@rb2%goicST?5@rR`L8x|d3}VcCYWQrk7=b5tp%qI6_!&z2>r zJGp|sQm*Zh-29TWWY?uix-HF``d)Tyq~=1K-L{@aFzwTH3Z=E;();JjpZ`9 zWE2b1_TiAg-iHJ(fF2yt5JIm&^Z814+C!VmuXoyyejN2;Kw$rdw#ZA}3}==W7j=7O zka!Kp;GXi^%aazN(4A7Jq^5HC% zPc^^~q?{!q8qTw%hx#k-165wLn|wZeUPDybnTe&+@mxBZ9P=S2;IFD1V5zu-jApceEwmfNNRZK2*xK14WONez#2UMI=mE%VAkX$=~Deq=e+mjt@D z3iXJk7dg%>cA6K`pT(?(D{QEy`ZSiJE=Xqi;6)8D@qu3*439@ge8@Gpsj5!b(89n1 za~d9JPO=H}0>Q0J7?ry1OvrLsU!V?_Y=&erByMQ9$!INZ|JUpgSk$n?g|Ia2WSJe~ zhAERvi+O2h^?XtC;IroR;kTqbzV>e1q?s9{`%mUS-s>L;YF<-)JYP6-BWvXoTZmUfvY6;;Q72ZsF-Ae(%a8MA2;5q5uF{Na!hzI_+(dhw3H;cDz3 zen-Q5JVd;5SkfD*etxvk%ftGqW^z~ zae=r|ng$u#o27Taq(|*8!uSlw@jbm{KakXqwD&Vk;dh+DpE!%ZaSs0=g8MilJh+Hk z3XKxOQ^m~@u2Igm(|(|@f8c1l=N`&+n*wATFi7?csk z(gD1JS1Z-^8r7CZp}k%~i<1VHYU%4=MWTvBw&1d%#Khw@>9{>CLK#woO85?z>TfZJDt+lTk@0l^4-h>t38 zZxEP=;Ccur=mJc+B<~WFNMHXtKCWZ#Q9U+In3oB2hA?Ld^9p77s>1DaHP&!@D!7D# hPw6hZ*F%|ZrnolYbNXt+7xG3)&!Bs8}#k3oW(wg|kWSz;>2hy4g_r z3H$)QbjDAhGg_VK=uAIAKa}JD-h>S;;c2EX48z{LH|L)7I}i8Vy!`j?7XUuMBLiIm znTo$@h0dld%P^FIRkeNVmL1wk7Xqk=&F_lMoP9< z4Sc7{ZOtuK?TPDz(ptS+;;^fzD3I8Y?v@M$hD(Q7ysd>O-ZN8i9nT481-eHHYXY%( zzbcauIBg=1gqpo&!axtllH&M}lH}N)d0t+K=BsM8#eZ)jTL5!dzTE8~E7Gp+?I0@YUzzv<%K|@k2;%?652it%ewJp%ck7!T zD?eG|nXQD5@3Esq^X92A)&sx3HOI6iHtcP-b8hs5sto3yDVHCZ_(nCNxNbxOsa3xo zROEuAZlJTfSD(5*CRLxo5Sv#wZ{9AX)D6a2O5I-^d-#{+o4_f)O>k77r1%{s|9gMq zOBc@Ync}FPF$$j5tDrEives6MquLxF{S$rdZ3(^Dqqmq%0rX>lf=RaLcetYLeowWE zD*F%852@fHO+QC(1DDD19Ol^gL<3i*V}Bt(5c`FKO{M`l1FAknj`Qe4hR-WhulPRH z-(@k1F}_hX##`=XG0B?dLR}!# zMdA!n`6WVKJ`(Dq2PxloV-qn@-Pn-5mmK$sEEXwt?&bUz0&`<#4yfmBWhWQfsSRQ^k_QJc0>z-Je}{SVf_xX=Iq literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/date/DateUtils.class b/代码/TimeBetter-master/bin/classes/com/timebetter/date/DateUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..e9a66cafa79d9ab70857ad380b3ef4e2099c1ae5 GIT binary patch literal 10643 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/mail/DataForm.class b/代码/TimeBetter-master/bin/classes/com/timebetter/mail/DataForm.class new file mode 100644 index 0000000000000000000000000000000000000000..6e8cbc933289e4a10b0c2024d06b2d1c4b8eb7a9 GIT binary patch literal 7333 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$AuthenticationErrorException.class b/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$AuthenticationErrorException.class new file mode 100644 index 0000000000000000000000000000000000000000..fafee6363fb3f037bf91e89be3e66c3f38ecd85d GIT binary patch literal 719 zcmbtR%T60X5UgGd3mfx(gb?21z(ZoCT%8aFheSk%i;3^!rDYFV&!U+zMER>+K;pm$ zB8Ti@W~-~VtG4^+ue*ByZ?G97BD~9rPU>}so9sQ?w4-#Mem;@2&h|=Y zy!D~$+ibkfl-GqhvbL~C-!i@oC`O4ed!epWnk&;v`vhUivDGSXuyrE*di;?YS>!;&OCL>PIijrIqG#qHXkhG%VCT&rfzm7NBmR4vXq!33saO#Wru*Of7i z8KGM2YelAV{hiNG*g4f=!rb=GK<~P@+O#SOhA>w~f_cL3p!Xv`@I~LHmu9l24WD*9 zO}1wtB4MUy*--N1f**?|-`0-szV=^}uE_X2VgAW9grr_{ZN{H;h%r65zx^;wLiyMj zw$)rY$1cV?Vf|lu2+Pmy9vdJToh%Pa7{-X)v7iW}@+OJ!Le8>O4n-Boo$T)2V0`Zu tvp;&eg-{C&9b$~Ccqw?{w-SqZB`EMqcrAS*EDMUTg4JF%IIKy6u?LktzB>Q_ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$GMailSyncState.class b/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$GMailSyncState.class new file mode 100644 index 0000000000000000000000000000000000000000..55e46703ee501af257e52521ecaa1ea9c797ef8c GIT binary patch literal 1469 zcmbW1ZBNrs6vzM9J+vDI#zc@OMM2yKGKYWm@kaMz392Wd+#|t=j?y_?c*HRcG+$H#C(YrCl;wnp|^P zEyobhid*>tp>7li`?9+`FZMRGc}?A5=-*NcYALJjsijh}#31Lgg`6sm`qaYi_G~$; z?W#J%(yRZ-K+aTawqtv148B;r%u{N-v1A0oU>H_#4I>P}O!vx2OuMLF_gvfAPv_(1 z5Z%45Ab_9@iNk~fiG$4Hh60&Gh{G)fAr4^r7DH5PRLxr1bZyRJGYlVwsRr+z-K4Y+&05Q%#d0iu`QC)Fj8zFM z43VCikD8uUSMU&z7(%A&nn%^f`y)!Yw=>1cfmQX=`JQI|-lA?XNFuS~TL!h)t=rJ} zrT<1=c1FQtJY`tvjhL&M&1SkMjq_Jrl*C0$QVi>jmRq$pZQk0U-XU1zcd1(4-giu| z<NB&V(h20g-VoFpA(OnGPaC@rH;#6Z7APuV6+r>N~;JV~h$I^9vXkFc}aq zCE#XIz_ftdl7JZjcVq!`0%DQQy?8|WM$vt3jOvEJjd9%wv@xX{!8WFKLuzA2H{>?v zbR$Aras3$cpD3p*xJS=0Szr;bi5A5!KcRu`R*<5;@Xkny`Nv% zt)S6N(Z{jVfK_TIcOPkE-gxOtoEaIO?6z;>6b}|Y(n%+cPBeC&LWp$uq#Gkaclf)) gQIw*esrNPx2?dL0upF1s2vxm;e9( literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$GeneralErrorException.class b/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$GeneralErrorException.class new file mode 100644 index 0000000000000000000000000000000000000000..f4cf6c5332b14191ee7d24344dcca87da8a07deb GIT binary patch literal 900 zcmbVKO>fgc5Pg#`Q#++!l+se5g#t+mSn8o5jJSkS8M$0i!g=GY(naFwh!e>XC za}~?IW2vPP$&oRcIU2?CvsIaPP$8^+66eBCgdX@80m5=FjS@*$nw)_j!Z!qZM_6oU zI=4dGu1JQm$`Xo?2(?#AEBl(zYDAZW9cz>x1T&t~Gn0K0y+j7hE}_!S`qD)i*XwZM z5tbsQ<@;gUljgKQ5muutW*vgnuswBF?3v05FQWhJJ0O(Pd{B`8rIq`%g!P%grDVcE zBNDoAGS&CvOk1g~&l9n7WP@;SO0(-?6So~~5jL(!tz#Q^2nz#gCj;a9jj%bxH=QHP zj_ruBd8G(Kl^YBD+(k%mJK500@~tWcxiY&C&x*bY^-%L#v=fo%GI#KZu=B5pvbMRq zgk7+_Vi~Z7Dr$T?Y?W}0f0hD|&pLZTMin@xwg2Qh7Qc=`OMJQv1RbJA&#}z*&IE=P ztg^)kSi=n_DPHTiIi=m0(tc!gg=1c8fBPG5J)J}S5-tT}>ed8$LG9r#?v1HEF1uR@ ZVZB9>GQaP$Rl)=8@$E8-@DPu&@CVYO*NFfC literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$StateChangeListener.class b/代码/TimeBetter-master/bin/classes/com/timebetter/mail/GMailService$StateChangeListener.class new file mode 100644 index 0000000000000000000000000000000000000000..8b20ede48111f5e3bec11ac95b55e6189bbf776e GIT binary patch literal 441 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/mail/PrefStore.class b/代码/TimeBetter-master/bin/classes/com/timebetter/mail/PrefStore.class new file mode 100644 index 0000000000000000000000000000000000000000..eef4598379893d83e9a603381215ebf4b914b6d9 GIT binary patch literal 4941 zcmb7HX?q)I6+L6wmMu+WTXpQjOX3i>wVe>B0onwoX%$%xawXeHUQ$y!8Ovj55^2UA zjU1<>Kualfg92SBG%bNZSyE_OQma5e@_}E#Z{g`fIqzsBjU(Aj{6W&4x%a&Hp1ZyN z_y0cn7{D=n>_>xy{*0L$we_5~q}jG+jpkH6J33=&D{0%bG(Q?8v|muy)zPeKtd34E zUC=VNgtnPfY(hy)pNUT?bLm)0LO4;?O52uhtd2?86*Y~#ts3^cnk{H8Xq6Dinyb2@ z6!MxS;Vuu%OeCFNm`;tiK$Z|HX|1XG{3X*`E^G48SSmIZi^i0>I5pdN1YOlE&B$m< zL8oH70~t?7W|WEP#CR;#g0O_3o>SM96*Idmj_oh$Ohu=Y@u@S)Y&;p8o|{$DvFP;F zc)A6%`qcfC&{I~Z7xYmHzWa{yv$LvI4U|ZW!W&3vKB*hJ zeTwQs!}Agvqvo;}fDgxId=Xz_y(V-+n=0g%G;3B}%4(us&5W9zS1n!0?!!j=yv_{o zPwdzfEbPuz%}$?JEp1t}N~!*6cxou28q1ccFORZVY|XGo*#Wk;VUG>hys5Dt3*cd# z_9G%;une!idx9lbIF&nHze$>Ilb%`JBIcN(Uf!S zNkh$%oX_tRM@^pxn1Hy92XQKhN09U*A>lwdfHDs?(aM;@G^<}Q>C6iW$A@Z%NbQs1 z+DD!sW-22itmn6cmDV`8`gVwHQ3Nt8V*+P5SJJkcxtLVf+|t z7H4IA6)Ev+QO1n0ZDUNSa#_rYsnnLg^~sU#9jT3PcwR88$T$a;)vYb-4CV09ZPe6Y zjJl>Z7DNV|=5%G~Gc)7b$XLND6SP*SBxvR~6Lh;rIBw}OF5n`2m`#@xfw6}dIl(HG z?=aXbf;Kt4M`}vBrnJgIGmFeboTGojo&0TjzA7?*f>!oX9z3>1l&Y#5?Bm^a;uJoG z371qi;$jBRXja;p**ld~Jb(>6>BnVG!fM~dITD=y{RXZ`@UM&IIK3j_-g?J+s=>A6 zoY=rOWqb?Yrq{Z=T^-)y{LI^AsYB0m=jzMVXajf_&-wA)E&IIGc{09-?~4R*qD9C= z<4}A!D)e8F@uE1SIjb3~_Ia)gu}8~fO1dDeU|CVxaTrI*H|xB5q=YWPzq?6iON%tE zW%7ddpU8L>uMyi(;i+A9qK^+VqTSR;l{TsegG-&y6WpDjorXzq;Ll|I9B+|tVP+aE z?RqCp4o?!9VcZ__d;q_|Fa5Z-mDbC7mWYgB;W|?xDB>y*z9;o;R%{rSIDN|CH!|ME zZ|M`8tmM-}by%3ZgGMjae3IKgl238>i^%^V;|AVi_89qT)68nBQ9t-aQRE_rReRo+ zwx3jsVlZX!fs8-nFT`gQ75sXEEZ$Kd0da>ZMM1AJbld5;an)AEsUOPNM3Dt#X*qM9 zTZ`Mb+GFk=^v(`Un*}SQP3Yo+5UN~)j|fx_q_|;dR+P83yv7tZmnJI?aPW&;NE`N| z3C)!Jlp4@NIpC3l*n?djImGwv9=U_>@AAlQXcZi!^9iGq00Nie1F7aKT7#N{@YNF?+fVUZ{Du>c|Ri_<+sG|rjZZv zzy}TmC-^A{0lM*Je##{UjNv4uR&itCldZ;^c<6n;Y(Ulc#1`Xm#2jO8Y1jAx@-GhA zHL{7Xgj=K{CVjXSyF0K}0yhlOR1w{|ilxH+(lJ`aHo* zcp!qVA9Ie5)JjU`D_AiXD@?3~HzD)u(fW{+9?0-k$aX@0ZJQWF^<$j!pjC-_3}1I+ zTwyq(-undGMLaGcc{m(8RK$`G3x|u~mRP8!Ka57|rq~H-*2^qdN#f8ZF5SdaRkTvv=NOa9NpKD!EIG(sC2JQs#CK0S zakt_b*zOrusUsLZ<~#W=?iuO5iSInv*REbeYhU}5*U{0}9&vszUPqJf#U4s?6dR)31@DXhq@OS)!-{N1r46jxHY;OHO DI#NQ- literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/receiver/AlarmReceiver.class b/代码/TimeBetter-master/bin/classes/com/timebetter/receiver/AlarmReceiver.class new file mode 100644 index 0000000000000000000000000000000000000000..27b63377c1064bf5fd5bb3f3e7f4d25df53bb906 GIT binary patch literal 1154 zcmb7DTTc@~6#fQ^Tb9Mr2`vH?Jh0@!JpzU z@Y%#5@xezQ{7uGqcDp3dCPuQ!nVGX^=6vV-&iVD{`wsw{*wQe>u;O^#f|6a)5=sfb z;0s5{Q`%S^?ssd^Nkfcbk-Kf*lkI}zxk|XI@Y45q+u_IRGK}HYwsfU>!7!XkHyL6j zuPt;8W7NP1ZZRZm>5A$}wHNX?qUuG`TN>bL5Pvck-BF&HgWRMTSw&jX*GL zrR;vBr2z4nDh~Xpgq0N2O&v*0YA_jQ`Y-ol3`}8~5*-L-IZApi!&EA5AM#UP=y3O- zP*=Wm4~lWzVb~zt`6F`oSj}^~aVpivyk%Rp-Thkmb*0{@S&hnGb^lelVO4A$bGWNv zo?)W@NdxzApQsfdPI!k{nND5Fy4N}sjw+_#>R7;{hKCIEeWdX~$)27D9$|@LOt=Br zp~MV3H|OgLfT-+rGme#;6<)9GzOl=3tT8PAo3D~pEtQF)1*8pRkYF&{^7u*#TG*0j zieYX*;!Ev`K^dyeFgp+w^#R2MQU&6ggEcaY*A;i(@A9LlPxZQY;yYqThMjzEWb%QG zSOkp%jTbiJxQzta;PO{`GDhom z_8b${+)q5snKS2@{RCq@o4de+&sfTt%hx^0oVgl$;_KN9q=KBolnGeHDA@#oo1k41 zCVjJ*#4=>C L6tzj7Aw2mD`^zRX literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/receiver/PlanBetterReceiver.class b/代码/TimeBetter-master/bin/classes/com/timebetter/receiver/PlanBetterReceiver.class new file mode 100644 index 0000000000000000000000000000000000000000..aea9f6d92b279e94043095739ec8f34675c14ecb GIT binary patch literal 4580 zcmb_gYj9L&8GgRamBHNSQldxg4yWKq- zK&Vuu6`_rPhF8l^+hH&N$BWN5^rdKRRPNj{egh&Nv(VEnO|Uy2CA9fnA|+OIs+|+r!PS z5q(VeQR}d;&rHV>!+rsGTQZR`^@Q24$FqhL6#~oYP*aLxwnI&N#Egx_%%e>ON~tZ_ z(<)zc0z92J>J@lo_QQEufrksc4!3lK0=vT9z3st{ zy-qwVu;zY9-S3n@P2s0tPbkn63b*d=Y3~YzLoJ<7EE1@UB{D|Z3`ccSCp`)e6nYSz z<@6);xZreHA0nf|qseG&=%_&XrdT3oZWbu1t?L&kZA(TC7fP^P#bPWGsOpL(jGpZ1 zppg#ggK-H(wAW%0W`ur{Nh4jp!mN*kAosjoNI=)dt+$_-efXJtv zX^ZQb3`2HelYnAUVK^3*YBsC*EVhs$jFCYHj+kjuWPYKSxtkrV3(5nnD%wE$J5$-b zG+mgsG$nmM+)L)LR7p*pDz+j>O?oui5!Z)_&Z632-TltFupQkBx&#)?%vLVdDtge% zE6wUNjg?e-Kb1BGcBFQXw4>~aU+MqqqD>{?OrnDv!(q`>?VL|BW39FjvdXo zFo3-Z_6W?)yE-MUVjrF)A#A*75F!U&UC@cok#|;}68b3b)BwUNo&s|t*=WlNteVxs zqGUJ`AuOq6CMHQ7mKvSlWpv3$BCJblIWbHT%U~)UOQy*(Ct~?677jzoI&p}ur}Q*m z2?e7pKKc0aPluI?T_L9<^KB#9blPX@oS*FM?*#hBW?oZXlX>4)^3qsHDJTSffx@|6;!^;X@;wxdP zlNHyuLr-UThayHw(oMzJtfzpqN|3mES?nm)@Q{eP#00 zrOEL#lP_HO__ec>r!TwkO7{)A)^y? zr`)=a)W3Mjg=uUoH!VFGx+8cu7TRf>g+>%8mCc3?U_Sv2(nN(hnz9wJR9WQe)>FBz z!qu0|rXxm2O!gfMihJKC$yh7}%MxECC#q3~a;_Av9M;-Zu&(5Hcfs1j^_+tBT&^D~ zSkL2ne!+SH*VP56nU z;Z?n5m+z*>#g<0R!$>c}+o;X8CTgQL&x(Di_I2$W*YV1L4csLQI18cI2gZfcs4cL> z?lfpM{||_W)psRUYUz6SI4F~BSb3(g^5n7dXwz7Ev}vq7+7wnEO=3k1EUY}5 z#LAt+%3FC68ZC@SEM*qPQDrUf!OxS&kIqQ^+`{XY_#L=P>Yf*K#XOu7w;VeiAwCKv zAX~)&_AS5?vT-RYunZcO;}L#YM*h}uY$SIdCwu+mZYOuPVl}!s_Od>MB7-$J&Sv{L{;m5WJL~h1W*l*J;FzNm#~s}qcj6gGKTbHF zMATuhxnLC#D^MeEdaeq{+4qSDs|07`xWe3&IduGxm7|2%*AS;GC?&!l;7$CPvpx6& zenRBRi1u&rHs#8R^-cVgqe8^rA);@w93H2RcQ~sc`fuQ8{OV#3UctNEtHjI9#m_lY znGX{axCS>-EyH#Eg0lf?x*_cny?@$viQ(UDyF~IM+b(hZlWmu1{?WEeOmEwEiR^o} zUE=#L4oSO2`AzytyW&0Smmau@_$mC79(ahA?SY3UK`m9EV6%d?cd;981wz4g1@+ue zm}6^LE95AM-oJ1{!MSqBT?SlQC<`pCxr+nv6mAwNpoULyR6)G*E}xD6CQGB1sq&eo Mm`C}a9S45>A6p}`xc~qF literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/service/AlertService$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/service/AlertService$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2347246303fd53cd036b627279504a2451eec947 GIT binary patch literal 801 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 baADw&+*}}+=41mK8EO+-oUM$$ja|?$gO;NZ literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/service/PlanBetterInit.class b/代码/TimeBetter-master/bin/classes/com/timebetter/service/PlanBetterInit.class new file mode 100644 index 0000000000000000000000000000000000000000..4f1090994be56eadebee1350f1c91f6dd3101722 GIT binary patch literal 6873 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 RM{E;4e9Ai{0!W+-@gJr72vh(7 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/AlwaysMarqueeTextView.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/AlwaysMarqueeTextView.class new file mode 100644 index 0000000000000000000000000000000000000000..670385661f427b2646710f228921f014823b2752 GIT binary patch literal 864 zcmbV~%}(1u6ot|3(0r-G-E-Hj(n2ZCX$2??XI1O$zPlL13 zRNYQKtMoc!?(@tHWY>j5*j90rCOQhHI=W;N+#eFEpLDFvDdFuw_g)kxvEkSR=XRW# zljeZnoF@_cSi(vT%cv6ST^;k6Y&_(&uZANgG`dNsMgx^HU1y7v&3Sz*eC`4KHOSdaR-@49i+8Ssih(9&W3BILG=! z*s288bJ+Vrwt%@MOhWMr8)9X#n0S8x>xVYz>efHVs zJ9~e7pCg}N|KMW)>+vrYB?_7%Rx)gxNn^yYZ6h6?FpZ<(Zfn9w_av;NDm)76^;9%% znbGi3Ga57O@D4qZFw(~rsL5_UX{2=pOZ#SYVrhLWZbmX;cdAptqGZ2*Y_DbOwrQoh zQn7@gK@8hZU43yUlbYVYm|CeP+tE zH!Emt$?qJoxHM%GJlkV-XX}sxPd5z&P>LE2m8eotr(p2{Py?t%y{Ii#P}GGPk!vLpd~&t<+EfEx_KL8dhPof)yFV9*{Ff2Ge>fGis%ijsr5= zQ~F54h!R`Nut2QpGgHQctJt#8@YWl2*o*2^8ri^n!j~zENG~0K}c+uUeu&Wm z*=ilR5;aB#?Bn8{T2k<4LNQ>ZR4tu;^PH!J))Z7HZ=zuZZ57grR!Fr9S}BzJ&5S!# zpm9L~F*Rxy3{^AZj7VP>q|5Gri^?6SMB(=8WOIk^yGEUa6aEW@dNk}n2M1?HpN4*!s+yhJYsTVafJkPx7-C{GmuI8lWV%Q@TYCf8 zg8>zLnXNO~k)PHuDArZla(CQ=9F>G6E*^ZMjqqwE_u6VYNBpkPxm5OWRbDbvlD z@Z9w2Y#o*(Kdj+F>e`O4INT$p3?9=oFpvLO^Fk&m58z{4Kt$_&uVy1 z!s^NB6Rh)6>&B28qEclp`U4EVNK{}C}e9;c-t z6YpsFg>c$GQ?tbSuQa@i_vm>iQpN${0xiqbuf>a3=G?IJ9Vd!eTvah$>{fNXtKm2J zfQ54`Z8(|ap1{i!NG50TTMZwHLdBSsadS;H1i&X6K9#ttX(MA>X`XvoK7=Kf&ioSJE0!F(njMy}*Dqo{ktjrrbo8 z`DfBv$vPggHIV!4x8TF}Tnn;b07?k;&OYjaq*Gs5^P zkqWAHIaKH1;XfcuR87-Zf19wH8J$XksiH%wv4Xu-gw@J8uBEfYMIm>aJgjgYRyYTX zAaFMwUP@^9pd$w`%vRxgZ|Dk^y~9okBr-lnxY{wTxe7Vce9B=1B@+J4)RxHjLJf@e zY+M75w3TrU6~xb%2j|1R1R@)6L}$)cA&}fh?a77GCpCIdhwTLj>vN$G$SW#mwZmZ| zpwY^1{yyYQ6xebJ_&|XT4MW&R6dvry0oR5yNuo;inryp@;mvI{(%~uX@V001Nc;QH zvxqj4*ReNQo7z5w*pJ;}KzIV;(|**$eW zp(b&h)+9!gI6-Zx>L>ASC)>+8ew;lIQ5?f}*z-z^i1Q)Sr)oX87Gzr z7TcrFneKL1<EcW31bR>=V8t}#YSvUr9x zcz&aota$MXUheR@or@i669e7h7p3y@n%A;;Jt%`^KS6{|t#VFWM$jGoH0YnK`Pt!75mK`J0&3gpaM>~U^CPh{S-dTZ zO_N#tQaVe$S-ij08&tgsdot*gZx&PgT!|y#_``jon#ITBJeOQU2(tea4?D>}0-R#x zPV-85nlA&nOf)h5WIj(xQMs;{`&~8;U9P% z|Hd0m5Jp`G=7VsJ#QL2Rgljos(Y+3dBna2=dnX7L_zZu*9~r=Ue1bnw<|Cpk{>+|A zT<_v9?D>gmH#PstKW7L5SD^F;fdvYPrXox3G180vM^h#EoN6Wb8~)B#9_i-^_Ma&G EKUCP=)c^nh literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/DateWidgetDayCell$OnItemClick.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/DateWidgetDayCell$OnItemClick.class new file mode 100644 index 0000000000000000000000000000000000000000..e7e60b1c9dfde33957e938003537a4dc6f5591f0 GIT binary patch literal 298 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/HistoryGoalGalleryFlow.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/HistoryGoalGalleryFlow.class new file mode 100644 index 0000000000000000000000000000000000000000..efa920b833f0782ed66d2dcd5c3b5a0c518ced9f GIT binary patch literal 3937 zcmbVO{Z|}U8GbJ8?7%VvLRbg^k{Cz>3ubLvNh}F1*#bc!iGU?FH0bao&R zzpAYyTD2U%ja6%{#*g~Z+CYz<uKn>O>FxsbKfg=9F@tFSjeYA%ntzUkYp)9=jZ zECn^JP$A>fuA5h=$*0^UYmNa^mP1Gi(bKkL`+W*69VORkmvfGvOi8=!_jXPyL{e_X zilH1e2C87_*sIX^2rMzwVxO4RE0lM1PF8|@GoT?Vz5NDsR7mfDfl5@w*lRJ+ih~M= z3YI@E8%R%hrc;=6y?n5n!hmDW=Bx~HbW97Jni1Qv&M)R?EpI|*6zWFYw3(YUJzL(3 zgAqS#7Zkcj9zPQ#QV$4N_P5jhASVhZA5B<^$wlAJCHsBfvu785Yupkpg~VgR&QS%; zUza(?AtqU76x^xy){=RXDR7h@Fm1#||}~+$s6q&S}~5sDbCuAHxNF zR>wt!qdQPPYO#SaDLyTovrMm&izf_x4iySj6H^xlu8#Ikj16BFr7-AuyQwJ7tg2Ryg6?PuLAV*2Cm|oLcPCPxxw^V+s~T|3IkhAJh-~| zF$oC-J&TNvG}Uq4Tr!h6)0t0>nts-Rg*l!!<}9m8)JiF9X-N#vKo+`eU{vP30kmEJMTpOm4(iw1g-l-e&CaNrUa zMWwPt>*g}-N<;nEV#UBMNnWI2F7d>@fG-;O627cZNv(0Op1sTiqocF5qtZLfdBAKg8U?ZIM?r zYe_xI+HV;6rVMFJx1Wui{THaCT728UckmiF6UZcI`aF-K9fN~|os-dL|HI3ZKe79s zf$!r7-gzzw^YcJfuG^$3dVwG1-n{z<#&M|^?snL5EH9Na3k9p7 z`D9`wNo3YyN`IH_Vj%;CTj28M^hrQj^=j)ABXrn5cuE6IMrl(4;oN|7St0%9EUmI z5PIbM5x&tk+R)B;68C5^?jqv~-nK+n_XeK$D1rAgd^Pqma3ce^qKN?x1c48SE=z&i zih&sh9q1%1fsiOdc!^|12%()2S~t-3Q82WU+-lSj!+v5o$iFrm3NR!>pCt_KB@FFF z42+16GZp2;aU97a8fg{LXo>gG_%=IbbO>%$29E@;C1*4!x>ooEp5%yRv5(f0#b~0L zN!!X)EEs))YmNmT!puZV;G+B%uAmQvr*;L>^dOMLu0WpN9Z1uIK#mhg@)1Bj82~Ah zQ@FUPa|ACNZb+=-B>$hu@Np)i<)nXY3)!9^>nAA1rzpY`+YmMsHyV>Wy6Ckh;GJba zFK78bq~*5x3h6$%&4+<=7$%AcK8??WK2)4mfm{S!0Ya54yBH zTDU&0(LqFZTpoy`kD3F&!Ze(rp8Kf6=cvVgRziw9ejZ&Ipt1&W7DG5s{4?CaRkkK~ zkmJZwWP?Ca!d0GkI4zjSxy~gMDK&Mqm;|6;XM!H516`ae{vKrb4IIfiHPAL`R zG%wB~%{iKAG^tA@Hn4CXQ;Fu5)_7zC-j*oB#EsG2ILmn=fc12^ssyVJKIa8i9TwRW zmDgd3Jvlwr^ zud1qhbsgV|2b{l&gB)wR9oKKyW9>$I?Nmi*(^x?p>9($}v)00 z&yn(F5`KsLzD9-*)65N&0Kj3ZlCAm#d|0M)|S}GkgIxeue%UpA+41Wxsf5M;H%IDK7_zT`e G<^KR9{ad^M literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog$1.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..99ee597a22de9cccaba35555492df52fdca278fc GIT binary patch literal 877 zcma)4%We}f6g^JTOfwy5nwEq|c@$Eb1c?!>kb+QA0IAZHE?Q;p%vg!bj2(@gl;1+) zA+g{C_$b76k~UJ?MJ-vjkMBMA9v}bx_xlfk*XVdCFzm%T3$4t=Kv*mCa4N-FcrYGm zCElkZw;v==^|1NMLy4h!%BMU`xf+H?gHsV(4`qfOu995KWS-k6g65Ixr852!Nn?c) zIm6nNr_FRu#;_Hgr||JOoTFWa@>{8-eaFyfT^G>qGn9Hd5fw1p3gBVYM-l4*DyT9P zTP|Qdl1hA@WCM|(@IfjVYLSk4+UL1+=LJ}@BWW1g(GBHOcb=Y$VyG|Mn?0A4+->)L z+{Jwl_o(Dmc>x}{CcQ+OOd2Z9rVN`GGM79I{;{6qvG^oi_w_4YymTgz(2pukwUKIg zDC|fl9-cDn-bhY>CUzM%%t)X0CdTUQP#D99RBnGME!K+6vtiGzUu`#9ntyC_s(TIM z90(2+S>8*zF~WFgQK9qaxKK&$U-}|=LZ%jJu7Fi*&RhDV1)3H3gs#!<4V@k0cV7HJ z(D{Yi-)1oz4x8P$>;`Id4k*W=o7ke2;STBxmVH_s%WCI4f}dzy=Gdm%4`&?pdEA17 jGO$fIuFFT1U%+GP87N@~&+wdfHNsY~hj!V0(AoG8Dm2tU literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog$2.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/IphoneAlertDialog$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e0ec962158f464f4c30667cf3ee489fb86f060af GIT binary patch literal 877 zcma)4U2oGc6g_TBvu1&H-RSscgLZ3+M5H|-6``R3(xi+%4E5bjtkzpV~}fK-FDB% z13dEZkR-3$3-H(t>7~+)q#WcoPr-<)tl@6I4Ws2o%w3fe(-pOeDFsYdLK1>fILf6TitX zC6UDV*&pD~G0xsmN{S@hB|AH_bFqFvqwB97+RK0%M{BDfk-sN5KP*69zp=E zDw@&4(2+JRzEvq@xwC6zi=07A+c~3{F&tCs7sjACG+l`3rdjwhlXifIWYt{~3P(-3&AB7|)z z(5Z;Gs^Qpd2s4DCaY@l?e#%u`_q=eCtBnz_$u)1~rqhhd`r;brP$ z4PF=MXB51+HM+SF7C;cgSW@v)c5+a59I@rKmSn5{lJv%Iqp>LOn!@k)Yn?}-%A0P1 zLKXe?qAs}%btQX-(2iYka(u&-k$SJqjBCSHjQqmbR236(E#@oJoC^3?ij6ej6{VJ2rB1v~u|_3Msp-i$y)IQYwLK<;W) z>_Q#&W^H4HV9_$T^VcIOsZ%^6Ma2D+}nBe6n_GB#TR;(=0)11D+i@3&kM9S_!;;#|N3Ssi24EB zrCW1)E`mciB6IDiK=t|%HI7Nf<0?*|MIe%}_4xv@E$d75^b~tJq??x0);OksC~Paj z%_T>05@C5^n~F1NXQ1VU!*0RsVxXU`_Z;h>NUtm--R`yZglSk#AiKJ{8USBmbm0XB z-Hb?)%*c$MFzotKGiCI%ELHTNmzmbpcfNl}U{A4cYXlg>vxrG>FA6lfcKgL~t(3(2 zB>GhJV}MDMGaQe@ze+utUzO%53TW)!BIkxOHoH{!?DX`NX~Ry_zc7X|s$j$qipSjb z9uzNv-73^QGI}*eBYm(~BS9<%aYbS=A+XOUW!Cb0D7>WNWxOI#P814u3Y_whFHrrE zctjJ}kg?6AY3Zqan(xzpU{lHBLCo)_zP=Rvp zRgZz|2A;y$h)tfb_?;)o@vm~GX$ckWd~G|s0&QX$RjolSs8&`lp=P`(P*a+!=A#7z z53#$ow7Q0eYm3)+^fvCMji;#FLA?f3`R zpu2egfhq1vXvMFHa~Gg3KOzAGL0WMi)08Ns)_X{D7osH#n1M;lC*jbR8z`eC14wZf zCVv!ZSd4ZU8DzbP(vng)P1*?NYkcPT+$y<`FoX2~p+&sOkoC!kH8WuSO@TmxaS87< z9bCfu%@V$Vn?y%xDriO!Fv(`*4HBpU9LEsBx$HV$=b3;H z@e$=~2=~WyNRWT4>re?kasMw_rAnc&wo8OqB{J?lAh_)3=~FV5;4^&AbthHs=NH%) S9U7kmFfm` z25aO@9NTl`z<%nDxEmQrGZbcMJC@Svd7L2~4MkYGpxmuR$*+lhBczCK8OoK#^s_F5 z-thZ81BO)-29~qXkTa2i#h_IbA=eU;KgQ!851#)!Dztpp@w!eRR6GTB)h0t}VbxNd z+SGzrGGse`9Ju^ms5$fVHk~UcsP>(7JwFt3@W7*?-#4(wP+Vk#i31$cK)&pd?~Nh3 z%=-*RrAbSTWHzPbLBn&xkcTMJ@EYwUFw0UN(0`_AXOJayg>F|ADn6q}?`=sGs&WY~l?%~DHZ!e-)hLN3n<*;J@ui|8qAV~0*1yV%DO-Be4e G0IfgZFOB{H literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/ResizeLayout.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/ResizeLayout.class new file mode 100644 index 0000000000000000000000000000000000000000..f89ffd5ff0830fec01e094da6582d4a4f98a76c2 GIT binary patch literal 2364 zcma)64RaG!6g{s^nh=&kV?!xvZHgdi8i)l1YH1a!Ks6MbVzE^zo8;LnZg=ZuLjgbV zYsTN>3^b06{s4cJ5FChT|)!1%bn?M?`%l$F3&Q7ez-EjkZkWkn!sw_4(%i6nPmTfH& zxfRo1F+EG(!^MbSv+4>*imy_h(Z_;7?or#}7sjS=?!|$3ZZ&+%E?o2}Yq{a;Wi6VB z7&!?h%N&~ABdzpHZZI3Jv&_nvuQ5luN`Bb|{#usaGH?PXV_?dM{+q~44a=@-FOD+` z{m&*sOWAOxQ>tcF;u;NQm)(#C?BO^kDov?k7nu@?qU?+e!Yd4rrVz%j{{8m;tj&g3SW zcrDla7%3TsWEjppL3*``(Z|UA7Ti9<@o->$kaqUczJdL;JV=XUNZ}3cA8gsfQ5@qN zE#plbr#JDMQ4>+?Op8W`_Bz%` zO$jx8MkKje$LB<%*E+r+ityq06Na+G70Gw06-p}F#O*Mcav01|5X_J;uC`RM z9YgYtplCZ9yNi8);C+(9=h;V21kC4JUOUW7aIqCIFX3zM3G)&>B4J))&V{)kpD0Sq zZ!V1C*YMOdV`ySKq<=r8KOE2>7W&_iVvvjP2qYJQ@ZD4o27*q};As*)!{;>4<7`)r hOm`?x;~~$9*wgrdsE5yweCxqa_?dHpdrO@8`xnE#1Q`GT literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/bin/classes/com/timebetter/view/SymbolButton$symbol.class b/代码/TimeBetter-master/bin/classes/com/timebetter/view/SymbolButton$symbol.class new file mode 100644 index 0000000000000000000000000000000000000000..827b4a265ecffbef377734ce1bb105451efc7cc6 GIT binary patch literal 1212 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 literal 0 HcmV?d00001 diff --git a/代码/TimeBetter-master/gen/com/timebetter/activity/BuildConfig.java b/代码/TimeBetter-master/gen/com/timebetter/activity/BuildConfig.java new file mode 100644 index 0000000..50f11f7 --- /dev/null +++ b/代码/TimeBetter-master/gen/com/timebetter/activity/BuildConfig.java @@ -0,0 +1,6 @@ +/** Automatically generated file. DO NOT MODIFY */ +package com.timebetter.activity; + +public final class BuildConfig { + public final static boolean DEBUG = true; +} \ No newline at end of file diff --git a/代码/TimeBetter-master/gen/com/timebetter/activity/R.java b/代码/TimeBetter-master/gen/com/timebetter/activity/R.java new file mode 100644 index 0000000..7e35b0f --- /dev/null +++ b/代码/TimeBetter-master/gen/com/timebetter/activity/R.java @@ -0,0 +1,483 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.timebetter.activity; + +public final class R { + public static final class anim { + public static final int my_scale_action=0x7f040000; + public static final int popup_window_bottom=0x7f040001; + public static final int popup_window_top=0x7f040002; + public static final int push_left_in=0x7f040003; + public static final int push_left_in_slowly=0x7f040004; + public static final int push_left_out=0x7f040005; + public static final int push_left_out_slowly=0x7f040006; + public static final int push_right_in=0x7f040007; + public static final int push_right_in_slowly=0x7f040008; + public static final int push_right_out=0x7f040009; + public static final int push_right_out_slowly=0x7f04000a; + } + public static final class array { + public static final int gmail_time=0x7f060000; + public static final int gmail_time_value=0x7f060001; + } + public static final class attr { + } + public static final class color { + public static final int Green=0x7f070008; + public static final int Red=0x7f070007; + public static final int alarm_btn_bg=0x7f070013; + public static final int alarm_line=0x7f070012; + public static final int app_title=0x7f07000c; + public static final int black=0x7f070004; + public static final int blue=0x7f070000; + public static final int days_color=0x7f070009; + public static final int grey=0x7f070001; + public static final int guide_title_color=0x7f070011; + public static final int help_bg=0x7f070019; + public static final int orange=0x7f070005; + public static final int pls_talk_normal=0x7f070002; + public static final int save_button=0x7f07000a; + public static final int search_hint=0x7f070003; + public static final int status_done=0x7f070016; + public static final int status_error=0x7f070018; + public static final int status_idle=0x7f070015; + public static final int status_sync=0x7f070017; + public static final int title=0x7f07000b; + public static final int white=0x7f070006; + public static final int white_special=0x7f070014; + public static final int widget_days=0x7f07000e; + public static final int widget_silver=0x7f07000f; + public static final int widget_text=0x7f070010; + public static final int widget_title=0x7f07000d; + } + public static final class dimen { + public static final int day_container_width=0x7f080003; + public static final int expanded_height=0x7f080001; + public static final int normal_height=0x7f080000; + public static final int task_item_name_width=0x7f080006; + public static final int widget_font_size=0x7f080002; + public static final int widget_task_height=0x7f080005; + public static final int widget_task_width=0x7f080004; + } + public static final class drawable { + public static final int add_task_btn_normal=0x7f020000; + public static final int add_task_btn_pressed=0x7f020001; + public static final int add_task_dialog_icon=0x7f020002; + public static final int alert=0x7f020003; + public static final int bg_add_task_btn=0x7f020004; + public static final int bg_quick_dial=0x7f020005; + public static final int calendar_bg=0x7f020006; + public static final int chatfrom_bg=0x7f020007; + public static final int chatfrom_bg_focused=0x7f020008; + public static final int chatfrom_bg_normal=0x7f020009; + public static final int chatto_bg=0x7f02000a; + public static final int chatto_bg_focused=0x7f02000b; + public static final int chatto_bg_normal=0x7f02000c; + public static final int clock=0x7f02000d; + public static final int custom_button=0x7f02000e; + public static final int custom_button1=0x7f02000f; + public static final int dialog=0x7f020010; + public static final int dialog_divider_horizontal_light=0x7f020011; + public static final int droid_widget=0x7f020012; + public static final int droid_widget_focused=0x7f020013; + public static final int droid_widget_normal=0x7f020014; + public static final int droid_widget_pressed=0x7f020015; + public static final int droidman_closed=0x7f020016; + public static final int droidman_down_closed=0x7f020017; + public static final int droidman_down_open=0x7f020018; + public static final int droidman_open=0x7f020019; + public static final int edit_text=0x7f02001a; + public static final int face_gallery_bg=0x7f02001b; + public static final int focused=0x7f02001c; + public static final int goal1=0x7f02001d; + public static final int goal2=0x7f02001e; + public static final int goal3=0x7f02001f; + public static final int goal_bg=0x7f020020; + public static final int goal_delete=0x7f020021; + public static final int goal_edit=0x7f020022; + public static final int goal_edit_img=0x7f020023; + public static final int goal_empty=0x7f020024; + public static final int goal_full=0x7f020025; + public static final int h1=0x7f020026; + public static final int h2=0x7f020027; + public static final int h3=0x7f020028; + public static final int h4=0x7f020029; + public static final int h5=0x7f02002a; + public static final int h6=0x7f02002b; + public static final int h7=0x7f02002c; + public static final int heart_message=0x7f02002d; + public static final int history_flag=0x7f02002e; + public static final int ic_clock_alarm_selected=0x7f02002f; + public static final int ic_done=0x7f020030; + public static final int ic_error=0x7f020031; + public static final int ic_idle=0x7f020032; + public static final int ic_syncing=0x7f020033; + public static final int icon=0x7f020034; + public static final int im_my_del_btn=0x7f020035; + public static final int im_other_del_btn=0x7f020036; + public static final int img0002=0x7f020037; + public static final int img0003=0x7f020038; + public static final int img0004=0x7f020039; + public static final int img0005=0x7f02003a; + public static final int img0006=0x7f02003b; + public static final int img0007=0x7f02003c; + public static final int img0008=0x7f02003d; + public static final int layoutbg=0x7f02003e; + public static final int mm_chat_listitem=0x7f02003f; + public static final int mm_trans=0x7f020040; + public static final int mmtitle_bg=0x7f020041; + public static final int nofocused=0x7f020042; + public static final int notepad=0x7f020043; + public static final int option_normal=0x7f020044; + public static final int option_selected=0x7f020045; + public static final int popupview_down=0x7f020046; + public static final int popupview_up=0x7f020047; + public static final int recommend_bg=0x7f020048; + public static final int shape_selector=0x7f020049; + public static final int sms_embeded_text_editor_bg=0x7f02004a; + public static final int sms_insert=0x7f02004b; + public static final int sms_send_button_bg=0x7f02004c; + public static final int sms_send_button_bg_disabled=0x7f02004d; + public static final int sms_send_button_bg_normal=0x7f02004e; + public static final int sms_send_button_bg_pressed=0x7f02004f; + public static final int star1=0x7f020050; + public static final int star2=0x7f020051; + public static final int star3=0x7f020052; + public static final int star4=0x7f020053; + public static final int task_today_bg=0x7f020054; + public static final int task_tomorrow_bg=0x7f020055; + public static final int task_yesterday_bg=0x7f020056; + public static final int textfield_disabled=0x7f020057; + public static final int textfield_disabled_selected=0x7f020058; + public static final int textfield_pressed=0x7f020059; + public static final int theme_checked=0x7f02005a; + public static final int theme_checked_disable=0x7f02005b; + public static final int theme_checked_pressed=0x7f02005c; + public static final int tomorrowtask_love=0x7f02005d; + public static final int txt_msg_bg=0x7f02005e; + public static final int wifisms_insert_normal_bg=0x7f02005f; + public static final int wifisms_insert_pressed_bg=0x7f020060; + public static final int yesterday_delete_btn_bg=0x7f020061; + } + public static final class id { + public static final int HistoryGoalGallery=0x7f0c0030; + public static final int addTask=0x7f0c004e; + public static final int body=0x7f0c002f; + public static final int bugdroid=0x7f0c000e; + public static final int cancel=0x7f0c002d; + public static final int cb_time_alert=0x7f0c0008; + public static final int cb_tomorrow_time_alert=0x7f0c0019; + public static final int chatting_history_lv=0x7f0c0023; + public static final int current_goal_listview=0x7f0c0013; + public static final int details_error=0x7f0c003a; + public static final int details_sync=0x7f0c0036; + public static final int details_sync_label=0x7f0c0039; + public static final int details_sync_progress=0x7f0c0037; + public static final int details_sync_progress_indet=0x7f0c0038; + public static final int dialog_message=0x7f0c002c; + public static final int dialog_title=0x7f0c002b; + public static final int dp_tomorrow_task_date=0x7f0c0016; + public static final int edit_goal_dialog_et=0x7f0c0014; + public static final int et_task_info=0x7f0c0000; + public static final int et_task_position=0x7f0c0002; + public static final int et_tomorrow_task_info=0x7f0c0015; + public static final int goal_clear_btn=0x7f0c001c; + public static final int goal_content_textview=0x7f0c001e; + public static final int goal_edit_btn=0x7f0c001b; + public static final int goal_edit_popup_view=0x7f0c001a; + public static final int goal_rank_img=0x7f0c001d; + public static final int heart_content_itv=0x7f0c0021; + public static final int heart_state_iv=0x7f0c0022; + public static final int heart_time_tv=0x7f0c0020; + public static final int history_gallery=0x7f0c002a; + public static final int history_task_listview=0x7f0c0029; + public static final int linearLayout1=0x7f0c0018; + public static final int myCursor=0x7f0c001f; + public static final int ok=0x7f0c002e; + public static final int past_goal_popwindow_button=0x7f0c0032; + public static final int past_goal_popwindow_imageview=0x7f0c0031; + public static final int send_button=0x7f0c0026; + public static final int sms_button_insert=0x7f0c0024; + public static final int status_icon=0x7f0c0033; + public static final int status_label=0x7f0c0035; + public static final int sync_button=0x7f0c0034; + public static final int task_alert_dialog_confirm_btn=0x7f0c003c; + public static final int task_alert_dialog_content=0x7f0c003b; + public static final int task_rank_first=0x7f0c0004; + public static final int task_rank_fourth=0x7f0c0007; + public static final int task_rank_group=0x7f0c0003; + public static final int task_rank_second=0x7f0c0005; + public static final int task_rank_third=0x7f0c0006; + public static final int task_repeat=0x7f0c0009; + public static final int task_repeat_days_button=0x7f0c000c; + public static final int task_repeat_days_date=0x7f0c000a; + public static final int task_repeat_days_total=0x7f0c000b; + public static final int textView_datematter=0x7f0c004f; + public static final int textView_datemattermessage=0x7f0c0050; + public static final int textView_daysleft=0x7f0c0052; + public static final int textView_future=0x7f0c004c; + public static final int textView_futuremessage=0x7f0c004d; + public static final int textView_history=0x7f0c0027; + public static final int textView_history_date=0x7f0c0028; + public static final int textView_today=0x7f0c0044; + public static final int textView_today_date=0x7f0c0045; + public static final int textView_tomorrow_day=0x7f0c0051; + public static final int textView_yesterday=0x7f0c005d; + public static final int textView_yesterday_date=0x7f0c005e; + public static final int text_editor=0x7f0c0025; + public static final int tip_bubble=0x7f0c000d; + public static final int tip_callout=0x7f0c0010; + public static final int tip_footer=0x7f0c000f; + public static final int tip_header=0x7f0c0011; + public static final int tip_message=0x7f0c0012; + public static final int today_add_task_btn=0x7f0c0046; + public static final int today_repeat_days=0x7f0c003f; + public static final int today_star_rank=0x7f0c0040; + public static final int today_task_complete_state=0x7f0c0043; + public static final int today_task_info=0x7f0c003e; + public static final int today_task_listview=0x7f0c0047; + public static final int today_task_time_position_textview=0x7f0c0041; + public static final int today_task_widget=0x7f0c0048; + public static final int today_time_alert=0x7f0c0042; + public static final int tomorrow_item_textView_datematter=0x7f0c0049; + public static final int tomorrow_item_textView_daysleft=0x7f0c004a; + public static final int tomorrow_item_textView_tomorrow_day=0x7f0c004b; + public static final int tomorrow_task_listview=0x7f0c0053; + public static final int tomorrow_widget_date=0x7f0c0057; + public static final int tomorrow_widget_days=0x7f0c0056; + public static final int tomorrow_widget_event=0x7f0c0058; + public static final int tomorrow_widget_layout_inside=0x7f0c0054; + public static final int tomorrow_widget_title=0x7f0c0055; + public static final int tp_task_time=0x7f0c0001; + public static final int tp_tomorrow_task_time=0x7f0c0017; + public static final int viewFlipper=0x7f0c003d; + public static final int yesterday_star_rank=0x7f0c005a; + public static final int yesterday_task_edit_btn=0x7f0c005c; + public static final int yesterday_task_info=0x7f0c0059; + public static final int yesterday_task_listview=0x7f0c005f; + public static final int yesterday_task_time_position_textview=0x7f0c005b; + } + public static final class layout { + public static final int about_layout=0x7f030000; + public static final int add_task_dialog_layout=0x7f030001; + public static final int bubble=0x7f030002; + public static final int current_goal_layout=0x7f030003; + public static final int droid=0x7f030004; + public static final int edit_goal_dialog=0x7f030005; + public static final int edit_tomorrow_task_dialog_layout=0x7f030006; + public static final int goal_edit_popup_window=0x7f030007; + public static final int goal_item=0x7f030008; + public static final int goal_layout=0x7f030009; + public static final int heart_item_from=0x7f03000a; + public static final int heart_item_to=0x7f03000b; + public static final int heart_layout=0x7f03000c; + public static final int help_layout=0x7f03000d; + public static final int history_oneday=0x7f03000e; + public static final int iphone_alert_dialog_layout=0x7f03000f; + public static final int past_goal_layout=0x7f030010; + public static final int past_goal_popwindow=0x7f030011; + public static final int status=0x7f030012; + public static final int task_alert_layout=0x7f030013; + public static final int task_main_layout=0x7f030014; + public static final int task_notify_layout=0x7f030015; + public static final int today_task_item=0x7f030016; + public static final int today_task_layout=0x7f030017; + public static final int today_task_widget_layout=0x7f030018; + public static final int tomorrow_task_item=0x7f030019; + public static final int tomorrow_task_layout=0x7f03001a; + public static final int tomorrow_task_widget_in=0x7f03001b; + public static final int tomorrow_task_widget_layout=0x7f03001c; + public static final int yesterday_task_item=0x7f03001d; + public static final int yesterday_task_layout=0x7f03001e; + } + public static final class plurals { + public static final int status_done_details=0x7f0a0000; + } + public static final class string { + /** 关于 + */ + public static final int about_string=0x7f090036; + public static final int about_title=0x7f090007; + /** 对话框 + */ + public static final int add_task_dialog_title=0x7f09001a; + /** button text + */ + public static final int add_task_label=0x7f090019; + public static final int alarm_notify_text=0x7f090072; + public static final int app_name=0x7f090000; + public static final int cancel_dialog_text=0x7f09001d; + public static final int current_goal_intro=0x7f090026; + public static final int delete_dialog_text=0x7f090035; + public static final int edit_goal_dialog_cancel=0x7f090034; + public static final int edit_goal_dialog_et_hint=0x7f090032; + public static final int edit_goal_dialog_ok=0x7f090033; + public static final int edit_goal_dialog_title=0x7f090030; + public static final int edit_goal_dialog_tv=0x7f090031; + public static final int edit_task_dialog_title=0x7f09001b; + public static final int err_communication_error=0x7f090071; + public static final int err_could_not_create_folder=0x7f09006f; + public static final int err_sync_requires_login_info=0x7f090070; + /** Tab + */ + public static final int goal_tab_current_text=0x7f090027; + public static final int goal_tab_past_text=0x7f090028; + public static final int heart_list_view_empty=0x7f090038; + public static final int help_goal=0x7f090075; + public static final int help_history=0x7f090077; + public static final int help_main_string=0x7f090073; + public static final int help_setup=0x7f090078; + public static final int help_task=0x7f090074; + public static final int help_tips=0x7f090076; + public static final int help_title=0x7f090006; + public static final int help_widget=0x7f090079; + public static final int history_task_list_view_empty=0x7f09003a; + public static final int label_history=0x7f090018; + /** label + */ + public static final int label_today=0x7f090015; + public static final int label_tomorrow=0x7f090016; + public static final int label_yesterday=0x7f090017; + public static final int limit_title=0x7f090003; + public static final int long_title=0x7f090004; + public static final int menu_about=0x7f09000e; + public static final int menu_delete_location=0x7f090011; + public static final int menu_exit=0x7f09000f; + public static final int menu_help=0x7f09000d; + public static final int menu_limit=0x7f09000a; + public static final int menu_long=0x7f09000b; + public static final int menu_modify_location=0x7f090010; + public static final int menu_setup=0x7f09000c; + /** 菜单项名称 + */ + public static final int menu_task=0x7f090008; + public static final int menu_time=0x7f090009; + public static final int menu_widget=0x7f090012; + public static final int pager_footer=0x7f09003e; + public static final int planbetter_widget_title=0x7f090025; + public static final int save_task_dialog_text=0x7f09001c; + public static final int setting_one=0x7f090040; + public static final int setting_three=0x7f090042; + public static final int setting_two=0x7f090041; + public static final int setup_title=0x7f090005; + public static final int status_auth_failure=0x7f090054; + public static final int status_auth_failure_details=0x7f090055; + public static final int status_calc=0x7f090056; + public static final int status_calc_details=0x7f090057; + public static final int status_canceled=0x7f090058; + public static final int status_canceled_details=0x7f090059; + public static final int status_done=0x7f09004f; + public static final int status_done_details_max_per_sync=0x7f090050; + public static final int status_done_details_noitems=0x7f090051; + public static final int status_idle=0x7f090048; + public static final int status_idle_details=0x7f090049; + public static final int status_idle_details_never=0x7f09004a; + public static final int status_login=0x7f09004d; + public static final int status_login_details=0x7f09004e; + public static final int status_sync=0x7f09004b; + public static final int status_sync_details=0x7f09004c; + public static final int status_unknown_error=0x7f090052; + public static final int status_unknown_error_details=0x7f090053; + public static final int task_alert_dialog_confirm=0x7f09002f; + /** 闹钟提示对话框 + */ + public static final int task_alert_dialog_title=0x7f09002e; + public static final int task_item_long_click_menu_delete=0x7f09002b; + public static final int task_item_long_click_menu_edit=0x7f09002a; + public static final int task_item_long_click_menu_pull=0x7f09002c; + /** menu + */ + public static final int task_item_long_click_menu_title=0x7f090029; + /** 帮助 + + \tPlanBetter计划更好点是一个时间管理软件,这个软件专注于历史、今天和未来,通过自身目标的设立和鼓励自己的心语督促自己利用好每一天的时间去使自己计划更好点,达到自己想要的目标。 + 整个软件共有任务、目标、心语、历史、设置这几个主要菜单项\n\n + \t1 + 任务;任务专注于昨天、今天和未来。滑动屏幕可以进行昨天、今天和未来的切换。快捷回顾昨天的时间安排状况,并且通过帕累托原则将任务划分轻重缓急,合理安排今天,并有闹钟提醒、重复任务、widget桌面提示等功能,采用倒数日的方式规划明天,就是任务项的特色所在。\n\n + \t2 + 目标:目标分为两部分,当前目标和历史目标。当前目标显示的你当前的三个目标,当你对当前目标进行修改的时候,这些目标选项自动保存至历史目标。这个设计是为了让使用这个软件的人时刻牢记自己的目标,为未来奋斗。\n\n + \t3 心语:心语即自己的心路历程,你可以写下任何你想说的话,软件会保存这些内容,鼓励自己一步步向前。\n\n + \t4 历史:历史的主界面是个日历,点击这个日历,可以快捷的查看你当天的任务完成状况,让你不错过你的每一段历史。\n\n + \t5 设置: + + edittext + 今天活动列表为空时默认显示内容 + */ + public static final int task_list_view_empty=0x7f090037; + public static final int task_long_click_menu_delete=0x7f09007b; + public static final int task_long_click_menu_edit=0x7f09007a; + public static final int task_long_click_menu_pull=0x7f09007c; + public static final int task_long_click_menu_title=0x7f09007d; + /** notifycation + */ + public static final int task_notification=0x7f09002d; + public static final int task_position_title=0x7f090014; + public static final int task_rank_first_text=0x7f09001e; + public static final int task_rank_fourth_text=0x7f090021; + public static final int task_rank_second_text=0x7f09001f; + public static final int task_rank_third_text=0x7f090020; + public static final int task_time_alert_text=0x7f090022; + public static final int task_time_pull_dialog_title=0x7f090024; + public static final int task_time_repeat_dialog_title=0x7f090023; + /** 任务信息 + */ + public static final int task_time_title=0x7f090013; + /** activity标题 + */ + public static final int task_title=0x7f090001; + public static final int time_title=0x7f090002; + public static final int today_task_widget_name=0x7f09003d; + public static final int tomorrow_task_list_view_empty=0x7f090039; + public static final int tomorrow_task_widget_name=0x7f09003f; + public static final int tts_pause=0x7f09003c; + public static final int ui_dialog_invalid_imap_folder_msg=0x7f09006c; + public static final int ui_dialog_invalid_imap_folder_title=0x7f09006b; + public static final int ui_dialog_missing_credentials_msg=0x7f090068; + public static final int ui_dialog_missing_credentials_title=0x7f090067; + public static final int ui_dialog_need_first_manual_sync_msg=0x7f09006e; + public static final int ui_dialog_need_first_manual_sync_title=0x7f09006d; + public static final int ui_dialog_sync_data_reset_msg=0x7f09006a; + public static final int ui_dialog_sync_data_reset_title=0x7f090069; + public static final int ui_imap_folder_desc=0x7f090063; + public static final int ui_imap_folder_label=0x7f090062; + public static final int ui_imap_folder_label_dialog_msg=0x7f090064; + public static final int ui_login_desc=0x7f09005d; + public static final int ui_login_dialog_msg=0x7f09005e; + public static final int ui_login_label=0x7f09005c; + public static final int ui_max_items_per_sync_desc=0x7f090066; + public static final int ui_max_items_per_sync_label=0x7f090065; + public static final int ui_password_desc=0x7f090060; + public static final int ui_password_dialog_msg=0x7f090061; + public static final int ui_password_label=0x7f09005f; + public static final int ui_settings_label=0x7f09005b; + public static final int ui_status_label=0x7f09005a; + public static final int ui_sync_button_label_canceling=0x7f090047; + public static final int ui_sync_button_label_done=0x7f090044; + public static final int ui_sync_button_label_error=0x7f090045; + public static final int ui_sync_button_label_idle=0x7f090043; + /** TODO(chstuder): Rename the following string resource. + */ + public static final int ui_sync_button_label_syncing=0x7f090046; + public static final int yesterday_task_list_view_empty=0x7f09003b; + } + public static final class style { + public static final int ChattingUISplit=0x7f0b0000; + public static final int ChattingUIText=0x7f0b0001; + public static final int MMTheme_Basic=0x7f0b0003; + public static final int MMTitleStyle=0x7f0b0002; + public static final int TipText=0x7f0b0004; + public static final int TipText_Footer=0x7f0b0007; + public static final int TipText_Header=0x7f0b0005; + public static final int TipText_Message=0x7f0b0006; + } + public static final class xml { + public static final int main_screen=0x7f050000; + public static final int today_task_widget_build=0x7f050001; + public static final int tomorrow_task_widget_build=0x7f050002; + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/AboutActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/AboutActivity.java new file mode 100644 index 0000000..c31122a --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/AboutActivity.java @@ -0,0 +1,17 @@ +package com.timebetter.activity; + +import com.timebetter.activity.R; + +import android.app.Activity; +import android.os.Bundle; + +public class AboutActivity extends Activity { + + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + setContentView(R.layout.about_layout); + setTitle("TimeBetter "); + + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/CurrentGoalActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/CurrentGoalActivity.java new file mode 100644 index 0000000..1457ef9 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/CurrentGoalActivity.java @@ -0,0 +1,398 @@ +package com.timebetter.activity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.ContentValues; +import android.content.DialogInterface; +import android.database.Cursor; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.view.animation.AnimationUtils; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.PopupWindow; +import android.widget.TextView; +import android.widget.Toast; + +import com.timebetter.activity.R; +import com.timebetter.bean.GoalBean; +import com.timebetter.constant.GoalConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; + +/** + * ǰĿ + * + * + * + */ +public class CurrentGoalActivity extends Activity { + + private ListView goalListView = null; + private List> goalItemList = null; + private GoalListViewAdapter goalAdapter = null; + private Cursor goalCur; + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + setContentView(R.layout.current_goal_layout); + + initGoalAdapter(); + goalListView = (ListView) findViewById(R.id.current_goal_listview); + goalListView.setAdapter(goalAdapter); + + } + + private void initGoalAdapter() { + initGoalItemList(); + goalAdapter = new GoalListViewAdapter(); + } + + private void initGoalItemList() { + goalItemList = new ArrayList>(); + + String firstGoal = ""; + String secondGoal = ""; + String thirdGoal = ""; + + goalCur = DatabaseUtil.query(CurrentGoalActivity.this, GoalBean.TABLE_NAME, new String[]{GoalBean.GOAL_CONTENT,GoalBean.GOAL_FLAG}, + GoalBean.GOAL_FLAG+"!="+GoalConstant.FORMER_GOAL, null, null, null, GoalBean.GOAL_FLAG+" ASC"); + + for(goalCur.moveToFirst();!goalCur.isAfterLast();goalCur.moveToNext()) { + + switch(goalCur.getInt(goalCur.getColumnIndex(GoalBean.GOAL_FLAG))) { + case GoalConstant.RANK_FIRST: + firstGoal = goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT)); + break; + case GoalConstant.RANK_SECOND: + secondGoal = goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT)); + break; + case GoalConstant.RANK_THIRD: + thirdGoal = goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT)); + break; + } + + } + DatabaseUtil.closeDatabase(); + + Map map1 = new HashMap(); + map1.put(GoalBean.GOAL_CONTENT, firstGoal); + map1.put(GoalBean.GOAL_FLAG, GoalConstant.RANK_FIRST); + goalItemList.add(0, map1); + + Map map2 = new HashMap(); + map2.put(GoalBean.GOAL_CONTENT, secondGoal); + map2.put(GoalBean.GOAL_FLAG, GoalConstant.RANK_SECOND); + goalItemList.add(1, map2); + + Map map3 = new HashMap(); + map3.put(GoalBean.GOAL_CONTENT, thirdGoal); + map3.put(GoalBean.GOAL_FLAG, GoalConstant.RANK_THIRD); + goalItemList.add(2, map3); + } + + public class GoalListViewAdapter extends BaseAdapter { + + private View popupView; + private PopupWindow popup; + + private Button goalEditBtn; + private Button goalClearBtn; + + private int goalFlag = GoalConstant.FORMER_GOAL; + private int curPosition = 0; + private boolean isEmpty = true; + + final class GoalListItemView { + public ImageView goalRankImg; // Ŀ꼶ͼƬ + public TextView goalContent; // Ŀ + public ImageView myCursor; // ͷͼƬ + } + + public GoalListViewAdapter() { + initPopupWindow(); + } + + private void initPopupWindow() { + popupView = LayoutInflater.from(CurrentGoalActivity.this).inflate( + R.layout.goal_edit_popup_window, null); + popup = new PopupWindow(popupView, + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + popup.setOutsideTouchable(true); + goalEditBtn = (Button) popupView.findViewById(R.id.goal_edit_btn); + goalClearBtn = (Button) popupView.findViewById(R.id.goal_clear_btn); + } + + public int getCount() { + // TODO Auto-generated method stub + return goalItemList.size(); + } + + public Object getItem(int arg0) { + // TODO Auto-generated method stub + return goalItemList.get(arg0); + } + + public long getItemId(int position) { + // TODO Auto-generated method stub + return Integer.parseInt(goalItemList.get(position).get(GoalBean.GOAL_FLAG).toString()); + } + + public View getView(final int position, View convertView, ViewGroup parent) { + // TODO Auto-generated method stub + GoalListItemView listItemView = null; + if (convertView == null) { + listItemView = new GoalListItemView(); + convertView = LayoutInflater.from(CurrentGoalActivity.this) + .inflate(R.layout.goal_item, null); + // ȡؼ + listItemView.goalContent = (TextView) convertView + .findViewById(R.id.goal_content_textview); + listItemView.goalRankImg = (ImageView) convertView + .findViewById(R.id.goal_rank_img); + listItemView.myCursor = (ImageView) convertView + .findViewById(R.id.myCursor); + // ÿؼconvertView + convertView.setTag(listItemView); + } else { + listItemView = (GoalListItemView) convertView.getTag(); + } + + // + listItemView.goalContent.setText(goalItemList.get(position) + .get(GoalBean.GOAL_CONTENT).toString()); + + // ȼͼƬ goalRank + switch (Integer.parseInt(goalItemList.get(position) + .get(GoalBean.GOAL_FLAG).toString())) { + case GoalConstant.RANK_FIRST: + listItemView.goalRankImg + .setBackgroundResource(R.drawable.goal1); + break; + case GoalConstant.RANK_SECOND: + listItemView.goalRankImg + .setBackgroundResource(R.drawable.goal2); + break; + case GoalConstant.RANK_THIRD: + listItemView.goalRankImg + .setBackgroundResource(R.drawable.goal3); + break; + } + + listItemView.myCursor.setOnClickListener(new OnClickListener() { + + private View editGoalDialogView; + private EditText goalEditText; + + @Override + public void onClick(View view) { + // TODO Auto-generated method stub + curPosition = position; + goalFlag = position + 1; + final String goalContent = goalItemList.get(position).get(GoalBean.GOAL_CONTENT).toString(); + isEmpty = goalContent.equals("") ? true : false; + Log.d("debug", "curPosition="+position); + + if (popup.isShowing()) { + popup.dismiss(); + } else { + if(isEmpty) { + goalClearBtn.setBackgroundResource(R.drawable.goal_empty); + } else { + goalClearBtn.setBackgroundResource(R.drawable.goal_full); + } + ((LinearLayout) (popupView + .findViewById(R.id.goal_edit_popup_view))) + .setBackgroundResource(R.drawable.popupview_down); + popup.setAnimationStyle(R.anim.popup_window_bottom); + popup.update(); + popup.showAsDropDown(view); + goalEditBtn.startAnimation(AnimationUtils.loadAnimation( + CurrentGoalActivity.this, R.anim.my_scale_action)); + goalClearBtn.startAnimation(AnimationUtils.loadAnimation( + CurrentGoalActivity.this, R.anim.my_scale_action)); + + goalEditBtn.setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // TODO Auto-generated method stub + popup.dismiss(); + editGoalDialogView = LayoutInflater.from( + CurrentGoalActivity.this).inflate( + R.layout.edit_goal_dialog, null); + goalEditText = (EditText) editGoalDialogView + .findViewById(R.id.edit_goal_dialog_et); + if(!isEmpty) { + goalEditText.setText(goalContent); + } + new AlertDialog.Builder(CurrentGoalActivity.this) + .setTitle(R.string.edit_goal_dialog_title) + .setIcon(android.R.drawable.ic_menu_edit) + .setView(editGoalDialogView) + .setPositiveButton( + R.string.edit_goal_dialog_ok, + new DialogInterface.OnClickListener() { + + @Override + public void onClick( + DialogInterface dialog, + int which) { + // TODO Auto-generated + // method stub + // 水ť + // ȡ + String content = goalEditText + .getText() + .toString() + .trim() + .replaceAll("\r", + "") + .replaceAll("\t", + "") + .replaceAll("\n", + "") + .replaceAll("\f", + ""); + if (content.equals("")) { + Toast.makeText(CurrentGoalActivity.this, "Ŀ겻Ϊ", Toast.LENGTH_SHORT).show(); + } else { + // + ContentValues values = new ContentValues(); + values.put(GoalBean.GOAL_CONTENT,content); + values.put(GoalBean.DATE,DateUtils.now()); + values.put(GoalBean.GOAL_FLAG,goalFlag); + Log.d("debug","goalFlag="+goalFlag+" curPosition="+curPosition); + if(isEmpty) { + //뵽ݿ + long id = DatabaseUtil.insert(CurrentGoalActivity.this, GoalBean.TABLE_NAME, GoalBean.ID, values); + if(id != -1) { + //listview + Map map = goalItemList.get(curPosition); + map.put(GoalBean.GOAL_CONTENT, content); + goalItemList.set(curPosition, map); + goalAdapter.notifyDataSetChanged(); + Toast.makeText(CurrentGoalActivity.this, "ĿѾȷ,ҪúŬŶ", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(CurrentGoalActivity.this, "ݿʧ", Toast.LENGTH_SHORT).show(); + } + } else { + //޸IJ + ContentValues former = new ContentValues(); + former.put(GoalBean.GOAL_FLAG, GoalConstant.FORMER_GOAL); + int rows = DatabaseUtil.update(CurrentGoalActivity.this, GoalBean.TABLE_NAME, former, + GoalBean.GOAL_FLAG+"="+goalFlag, null); + long id = DatabaseUtil.insert(CurrentGoalActivity.this, GoalBean.TABLE_NAME, GoalBean.ID, values); + if(id != -1 && rows > 0) { + Map map = goalItemList.get(curPosition); + map.put(GoalBean.GOAL_CONTENT, content); + goalItemList.set(curPosition, map); + goalAdapter.notifyDataSetChanged(); + Toast.makeText(CurrentGoalActivity.this, "ĿѾȷ,ǰĿʷĿв鿴", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(CurrentGoalActivity.this, "ݿʧ", Toast.LENGTH_SHORT).show(); + } + } + } + } + }) + .setNegativeButton( + R.string.edit_goal_dialog_cancel, + new DialogInterface.OnClickListener() { + + @Override + public void onClick( + DialogInterface dialog, + int which) { + // TODO Auto-generated + // method stub + + } + }).create().show(); + + } + }); + + goalClearBtn.setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // TODO Auto-generated method stub + popup.dismiss(); + showCustomMessage("ȷɾ","ȷɾĿ?"); + } + }); + } + } + }); + + return convertView; + } + + private void showCustomMessage(String pTitle, final String pMsg) { + final Dialog lDialog = new Dialog(CurrentGoalActivity.this, + android.R.style.Theme_Translucent_NoTitleBar); + lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + lDialog.setContentView(R.layout.iphone_alert_dialog_layout); + ((TextView) lDialog.findViewById(R.id.dialog_title)).setText(pTitle); + ((TextView) lDialog.findViewById(R.id.dialog_message)).setText(pMsg); + ((Button) lDialog.findViewById(R.id.cancel)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // CANCEL + lDialog.dismiss(); + } + }); + ((Button) lDialog.findViewById(R.id.ok)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks OK + lDialog.dismiss(); + //Ŀ + if(isEmpty) { + //Ϊ + Toast.makeText(CurrentGoalActivity.this, "ĿΪ޷ɾ", Toast.LENGTH_SHORT).show(); + } else { + //Ϊ + ContentValues values = new ContentValues(); + values.put(GoalBean.GOAL_FLAG, GoalConstant.FORMER_GOAL); + int rows = DatabaseUtil.update(CurrentGoalActivity.this,GoalBean.TABLE_NAME,values,GoalBean.GOAL_FLAG+"="+goalFlag,null); + if(rows > 0) { + //ˢlistview + Map map = goalItemList.get(curPosition); + map.put(GoalBean.GOAL_CONTENT, ""); + goalItemList.set(curPosition, map); + goalAdapter.notifyDataSetChanged(); + Toast.makeText(CurrentGoalActivity.this, "Ŀɾɹ,ʷĿв鿴", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(CurrentGoalActivity.this, "ݿֶʧ", Toast.LENGTH_SHORT).show(); + } + } + } + }); + lDialog.show(); + + } + + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/HelpActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/HelpActivity.java new file mode 100644 index 0000000..f1e2563 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/HelpActivity.java @@ -0,0 +1,17 @@ +package com.timebetter.activity; + +import com.timebetter.activity.R; + +import android.app.Activity; +import android.os.Bundle; + +public class HelpActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + + setContentView(R.layout.help_layout); + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/HistoryActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/HistoryActivity.java new file mode 100644 index 0000000..961508f --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/HistoryActivity.java @@ -0,0 +1,504 @@ +package com.timebetter.activity; + +import java.util.ArrayList; +import java.util.Calendar; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.DisplayMetrics; +import android.view.GestureDetector; +import android.view.GestureDetector.OnGestureListener; +import android.view.Gravity; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.LinearLayout.LayoutParams; + +import com.timebetter.activity.R; +import com.timebetter.constant.DayStyle; +import com.timebetter.constant.MenuItemId; +import com.timebetter.constant.MotionEventConstant; +import com.timebetter.view.DateWidgetDayCell; +import com.timebetter.view.DateWidgetDayHeader; +import com.timebetter.view.SymbolButton; + +public class HistoryActivity extends Activity implements OnGestureListener { + private ArrayList days = new ArrayList(); + // private SimpleDateFormat dateMonth = new SimpleDateFormat("MMMM yyyy"); + private Calendar calStartDate = Calendar.getInstance(); + private Calendar calToday = Calendar.getInstance(); + private Calendar calCalendar = Calendar.getInstance(); + private Calendar calSelected = Calendar.getInstance(); + LinearLayout layContent = null; + + Button btnPrev = null; + Button btnToday = null; + Button btnNext = null; + + private int iFirstDayOfWeek = Calendar.MONDAY; + private int iMonthViewCurrentMonth = 0; + private int iMonthViewCurrentYear = 0; + public static final int SELECT_DATE_REQUEST = 111; + private int iDayCellSize = 42;// ԭֵ38 + private int iDayHeaderHeight = 24;// ԭֵ24 + private int cellpadding = 8; + private int iTotalWidth = (iDayCellSize * 7); + +// private int mYear = 0; +// private int mMonth = 0; +// private int mDay = 0; + + private GestureDetector mGestureDetector; + + @Override + public void onCreate(Bundle icicle) { + DisplayMetrics metric = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metric); + int width = metric.widthPixels; // Ļȣأ +// int height = metric.heightPixels; // Ļ߶ȣأ + + iDayCellSize = (width - 30) / 7; + iTotalWidth = (iDayCellSize * 7); + iDayHeaderHeight = iDayCellSize; + + super.onCreate(icicle); + iFirstDayOfWeek = Calendar.MONDAY; +// mYear = calSelected.get(Calendar.YEAR); +// mMonth = calSelected.get(Calendar.MONTH); +// mDay = calSelected.get(Calendar.DAY_OF_MONTH); + setContentView(generateContentView()); + calStartDate = getCalendarStartDate(); + DateWidgetDayCell daySelected = updateCalendar(); + if (daySelected != null) + daySelected.requestFocus(); + + mGestureDetector = new GestureDetector(this); + + } + + @Override + public void onStart() { + super.onStart(); + + } + + private LinearLayout createLayout(int iOrientation) { + LinearLayout lay = new LinearLayout(this); + lay.setLayoutParams(new LayoutParams( + android.view.ViewGroup.LayoutParams.FILL_PARENT, + android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); + lay.setOrientation(iOrientation); + return lay; + } + + private Button createButton(String sText, int iWidth, int iHeight) { + Button btn = new Button(this); + btn.setText(sText); + btn.setLayoutParams(new LayoutParams(iWidth, iHeight)); + return btn; + } + + /* buttonȺandriodԴϵͳͼ */ + private void generateTopButtons(LinearLayout layTopControls) { + final int iHorPadding = 24; + final int iSmallButtonWidth = 60; + btnToday = createButton("", iTotalWidth - iSmallButtonWidth + - iSmallButtonWidth, + android.view.ViewGroup.LayoutParams.WRAP_CONTENT); + btnToday.setPadding(iHorPadding, btnToday.getPaddingTop(), iHorPadding, + btnToday.getPaddingBottom()); + btnToday.setBackgroundResource(android.R.drawable.btn_default_small); + + SymbolButton btnPrev = new SymbolButton(this, + SymbolButton.symbol.arrowLeft); + btnPrev.setLayoutParams(new LayoutParams(iSmallButtonWidth, + android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); + btnPrev.setBackgroundResource(android.R.drawable.btn_default_small); + + SymbolButton btnNext = new SymbolButton(this, + SymbolButton.symbol.arrowRight); + btnNext.setLayoutParams(new LayoutParams(iSmallButtonWidth, + android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); + btnNext.setBackgroundResource(android.R.drawable.btn_default_small); + + // set events + btnPrev.setOnClickListener(new Button.OnClickListener() { + public void onClick(View arg0) { + setPrevViewItem();/* һµʾ */ + } + }); + btnToday.setOnClickListener(new Button.OnClickListener() { + public void onClick(View arg0) { + + setTodayViewItem();/* ʾϢ */ + String s = calToday.get(Calendar.YEAR) + "" + + (calToday.get(Calendar.MONTH) + 1) + ""; + btnToday.setText(s); + } + }); + btnNext.setOnClickListener(new Button.OnClickListener() { + public void onClick(View arg0) { + setNextViewItem();/* һµʾ */ + } + }); + + /* ָؼĻλãˮƽ */ + layTopControls.setGravity(Gravity.CENTER_HORIZONTAL); + layTopControls.addView(btnPrev); + layTopControls.addView(btnToday); + layTopControls.addView(btnNext); + } + + /* ͼ */ + private View generateContentView() { + LinearLayout layMain = createLayout(LinearLayout.VERTICAL); + layMain.setPadding(cellpadding, cellpadding, cellpadding, cellpadding); + layMain.setBackgroundResource(R.drawable.calendar_bg); + LinearLayout layTopControls = createLayout(LinearLayout.HORIZONTAL); + + layContent = createLayout(LinearLayout.VERTICAL); + layContent.setPadding(5, 0, 5, 0);/* 20,0,20,0 */ + generateTopButtons(layTopControls); + generateCalendar(layContent); + + layMain.addView(layTopControls);/* ͷѡ */ + layMain.addView(layContent);/* ݲ */ + + return layMain; + } + + /* һʾ */ + private View generateCalendarRow() { + LinearLayout layRow = createLayout(LinearLayout.HORIZONTAL); + for (int iDay = 0; iDay < 7; iDay++) { + DateWidgetDayCell dayCell = new DateWidgetDayCell(this, + iDayCellSize, iDayCellSize + 10);// ޸Ĺ + dayCell.setItemClick(mOnDayCellClick); + days.add(dayCell); + layRow.addView(dayCell); + } + return layRow; + } + + /* ͷһ */ + private View generateCalendarHeader() { + LinearLayout layRow = createLayout(LinearLayout.HORIZONTAL); + for (int iDay = 0; iDay < 7; iDay++) { + DateWidgetDayHeader day = new DateWidgetDayHeader(this, + iDayCellSize, iDayHeaderHeight); + final int iWeekDay = DayStyle.getWeekDay(iDay, iFirstDayOfWeek); + day.setData(iWeekDay); + layRow.addView(day); + } + return layRow; + } + + /* ϲ˵ */ + private void generateCalendar(LinearLayout layContent) { + layContent.addView(generateCalendarHeader()); + days.clear(); + for (int iRow = 0; iRow < 6; iRow++) { + layContent.addView(generateCalendarRow()); + } + } + + /* õʼʱ */ + private Calendar getCalendarStartDate() { + calToday.setTimeInMillis(System.currentTimeMillis()); + calToday.setFirstDayOfWeek(iFirstDayOfWeek); + + if (calSelected.getTimeInMillis() == 0) { + calStartDate.setTimeInMillis(System.currentTimeMillis()); + calStartDate.setFirstDayOfWeek(iFirstDayOfWeek); + } else { + calStartDate.setTimeInMillis(calSelected.getTimeInMillis()); + calStartDate.setFirstDayOfWeek(iFirstDayOfWeek); + } + + UpdateStartDateForMonth(); + + return calStartDate; + } + + private DateWidgetDayCell updateCalendar() { + DateWidgetDayCell daySelected = null; + boolean bSelected = false; + final boolean bIsSelection = (calSelected.getTimeInMillis() != 0); + final int iSelectedYear = calSelected.get(Calendar.YEAR); + final int iSelectedMonth = calSelected.get(Calendar.MONTH); + final int iSelectedDay = calSelected.get(Calendar.DAY_OF_MONTH); + calCalendar.setTimeInMillis(calStartDate.getTimeInMillis()); + for (int i = 0; i < days.size(); i++) { + final int iYear = calCalendar.get(Calendar.YEAR); + final int iMonth = calCalendar.get(Calendar.MONTH); + final int iDay = calCalendar.get(Calendar.DAY_OF_MONTH); + final int iDayOfWeek = calCalendar.get(Calendar.DAY_OF_WEEK); + DateWidgetDayCell dayCell = days.get(i); + // check today + boolean bToday = false; + if (calToday.get(Calendar.YEAR) == iYear) + if (calToday.get(Calendar.MONTH) == iMonth) + if (calToday.get(Calendar.DAY_OF_MONTH) == iDay) + bToday = true; + // check holiday + boolean bHoliday = false; + if ((iDayOfWeek == Calendar.SATURDAY) + || (iDayOfWeek == Calendar.SUNDAY)) + bHoliday = true; + if ((iMonth == Calendar.JANUARY) && (iDay == 1)) + bHoliday = true; + + dayCell.setData(iYear, iMonth, iDay, bToday, bHoliday, + iMonthViewCurrentMonth); + bSelected = false; + if (bIsSelection) + if ((iSelectedDay == iDay) && (iSelectedMonth == iMonth) + && (iSelectedYear == iYear)) { + bSelected = true; + } + dayCell.setSelected(bSelected); + if (bSelected) + daySelected = dayCell; + calCalendar.add(Calendar.DAY_OF_MONTH, 1); + } + layContent.invalidate(); + return daySelected; + } + + private void UpdateStartDateForMonth() { + iMonthViewCurrentMonth = calStartDate.get(Calendar.MONTH); + iMonthViewCurrentYear = calStartDate.get(Calendar.YEAR); + calStartDate.set(Calendar.DAY_OF_MONTH, 1); + UpdateCurrentMonthDisplay(); + // update days for week + int iDay = 0; + int iStartDay = iFirstDayOfWeek; + if (iStartDay == Calendar.MONDAY) { + iDay = calStartDate.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY; + if (iDay < 0) + iDay = 6; + } + if (iStartDay == Calendar.SUNDAY) { + iDay = calStartDate.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY; + if (iDay < 0) + iDay = 6; + } + calStartDate.add(Calendar.DAY_OF_WEEK, -iDay); + } + + private void UpdateCurrentMonthDisplay() { + String s = calStartDate.get(Calendar.YEAR) + "" + + (calStartDate.get(Calendar.MONTH) + 1) + "";// dateMonth.format(calCalendar.getTime()); + btnToday.setText(s); +// mYear = calCalendar.get(Calendar.YEAR); + } + + private void setPrevViewItem() { + iMonthViewCurrentMonth--; + if (iMonthViewCurrentMonth == -1) { + iMonthViewCurrentMonth = 11; + iMonthViewCurrentYear--; + } + calStartDate.set(Calendar.DAY_OF_MONTH, 1); + calStartDate.set(Calendar.MONTH, iMonthViewCurrentMonth); + calStartDate.set(Calendar.YEAR, iMonthViewCurrentYear); + UpdateStartDateForMonth(); + updateCalendar(); + + } + + public boolean onTouchEvent(MotionEvent event) { + return mGestureDetector.onTouchEvent(event); + } + + private void setTodayViewItem() { + calToday.setTimeInMillis(System.currentTimeMillis()); + calToday.setFirstDayOfWeek(iFirstDayOfWeek); + calStartDate.setTimeInMillis(calToday.getTimeInMillis()); + calStartDate.setFirstDayOfWeek(iFirstDayOfWeek); + UpdateStartDateForMonth(); + updateCalendar(); + } + + private void setNextViewItem() { + iMonthViewCurrentMonth++; + if (iMonthViewCurrentMonth == 12) { + iMonthViewCurrentMonth = 0; + iMonthViewCurrentYear++; + } + calStartDate.set(Calendar.DAY_OF_MONTH, 1); + calStartDate.set(Calendar.MONTH, iMonthViewCurrentMonth); + calStartDate.set(Calendar.YEAR, iMonthViewCurrentYear); + UpdateStartDateForMonth(); + updateCalendar(); + + } + + private DateWidgetDayCell.OnItemClick mOnDayCellClick = new DateWidgetDayCell.OnItemClick() { + public void OnClick(DateWidgetDayCell item) { + calSelected.setTimeInMillis(item.getDate().getTimeInMillis()); + + item.setSelected(true); + updateCalendar(); + + int year = calSelected.get(Calendar.YEAR); + int month = calSelected.get(Calendar.MONTH) + 2; + int day = calSelected.get(Calendar.DAY_OF_MONTH); + int x = year * 10000 + month * 100 + day; + + Intent intent = new Intent(HistoryActivity.this, + HistoryOnedayActivity.class); + intent.putExtra("today", x); + startActivity(intent); + } + }; + + public boolean onDown(MotionEvent e) { + // TODO Auto-generated method stub + return false; + } + + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) { + // һ + if (e2.getX() - e1.getX() > MotionEventConstant.getFlingMinDistance() + && Math.abs(velocityX) > MotionEventConstant + .getFlingMinVelocity()) { + Message mes = new Message(); + mes.what = SET_PREV_VIEW; + handler.sendMessage(mes); + } + // 󻬶 + else if (e1.getX() - e2.getX() > MotionEventConstant + .getFlingMinDistance() + && Math.abs(velocityX) > MotionEventConstant + .getFlingMinVelocity()) { + Message mes = new Message(); + mes.what = SET_NETX_VIEW; + handler.sendMessage(mes); + } + + return true; + } + + public static final int SET_NETX_VIEW = 1; + public static final int SET_PREV_VIEW = 2; + + private Handler handler = new Handler() { + + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + switch(msg.what) { + case SET_NETX_VIEW: + setNextViewItem();/* һµʾ */ + break; + case SET_PREV_VIEW: + setPrevViewItem();/* һµʾ */ + break; + } + } + + }; + + public void onLongPress(MotionEvent e) { + // TODO Auto-generated method stub + + } + + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, + float distanceY) { + // TODO Auto-generated method stub + return false; + } + + public void onShowPress(MotionEvent e) { + // TODO Auto-generated method stub + + } + + public boolean onSingleTapUp(MotionEvent e) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // TODO Auto-generated method stub + switch (item.getItemId()) { + case MenuItemId.MENU_ITEM_TASK: + Intent ht_intent = new Intent(HistoryActivity.this, + TaskActivity.class); + startActivity(ht_intent); + break; + // Ŀ + case MenuItemId.MENU_ITEM_TIME: + Intent tg_intent = new Intent(HistoryActivity.this, + HelpActivity.class); + startActivity(tg_intent); + break; + // + case MenuItemId.MENU_ITEM_LIMIT: + Intent tt_intent = new Intent(HistoryActivity.this, + HelpActivity.class); + startActivity(tt_intent); + break; + // + case MenuItemId.MENU_ITEM_SETUP: + Intent ti_intent = new Intent(HistoryActivity.this, + SetupActivity.class); + startActivity(ti_intent); + break; + // + case MenuItemId.MENU_ITEM_HELP: + Intent tx_intent = new Intent(HistoryActivity.this, + HelpActivity.class); + startActivity(tx_intent); + break; + // + case MenuItemId.MENU_ITEM_ABOUT: + Intent ty_intent = new Intent(HistoryActivity.this, + AboutActivity.class); + startActivity(ty_intent); + break; + } + return true; + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // TODO Auto-generated method stub + MenuItem menu_task = menu.add(0, MenuItemId.MENU_ITEM_TASK, 0, + R.string.menu_task); + menu_task.setIcon(android.R.drawable.ic_menu_agenda); + + MenuItem menu_goal = menu.add(0, MenuItemId.MENU_ITEM_TIME, 0, + R.string.menu_time); + menu_goal.setIcon(android.R.drawable.ic_menu_directions); + + MenuItem menu_tips = menu.add(0, MenuItemId.MENU_ITEM_LIMIT, 0, + R.string.menu_limit); + menu_tips.setIcon(android.R.drawable.ic_menu_compass); + + MenuItem menu_setup = menu.add(0, MenuItemId.MENU_ITEM_SETUP, 0, + R.string.menu_setup); + menu_setup.setIcon(android.R.drawable.ic_menu_preferences); + + MenuItem menu_help = menu.add(0, MenuItemId.MENU_ITEM_HELP, 0, + R.string.menu_help); + menu_help.setIcon(android.R.drawable.ic_menu_help); + + MenuItem menu_about = menu.add(0, MenuItemId.MENU_ITEM_ABOUT, 0, + R.string.menu_about); + menu_about.setIcon(android.R.drawable.ic_menu_info_details); + + return true; + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/HistoryOnedayActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/HistoryOnedayActivity.java new file mode 100644 index 0000000..e855a9c --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/HistoryOnedayActivity.java @@ -0,0 +1,554 @@ +package com.timebetter.activity; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.view.Window; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.Gallery; +import android.widget.ImageSwitcher; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.Toast; +import android.widget.RelativeLayout.LayoutParams; +import android.widget.TextView; +import android.widget.ViewSwitcher.ViewFactory; + +import com.timebetter.activity.R; +import com.timebetter.bean.TaskBean; +import com.timebetter.constant.TaskConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; + +public class HistoryOnedayActivity extends Activity implements ViewFactory, + OnItemSelectedListener { + private View historyView = null; // ͼ + private List> historyTaskItemList = null; // ListϢ + private ListView historyTaskList = null; // Ϣбͼ + private static HistoryTaskListViewAdapter historyAdapter = null; // бͼadapter + private Cursor historyTaskCur; + private TextView listEmptyView; + private TextView historyDate; + + private static final int REFRESH_LAYOUT = 0; + + //ImageSwitcher mSwitcher; + Resources r; + int today; + int tyear; + int tmonth; + int tday; + + private Integer[] HistoryOnebgIds = { R.drawable.h1, R.drawable.h2, + R.drawable.h3, R.drawable.h4, R.drawable.h5, R.drawable.h6, + R.drawable.h7 }; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + historyView = LayoutInflater.from(HistoryOnedayActivity.this).inflate( + R.layout.history_oneday, null); + setContentView(historyView); + + setTitle("ImageShowActivity"); + Intent intent = getIntent(); + today = intent.getIntExtra("today", 0); + tyear = today / 10000; + tmonth = today / 100 - tyear * 100; + tday = today % 100; + initViews(today); + + Gallery g = (Gallery) findViewById(R.id.history_gallery); + // Ϊͼָһ + g.setAdapter(new ImageAdapter(this)); + // Ӧ ͼбѡijͼ ¼ + g.setSelection(10); + g.setOnItemSelectedListener(this); + r = this.getResources(); + + } + + private Handler handler = new Handler() { + + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + switch(msg.arg1) { + case REFRESH_LAYOUT: + refreshHistoryLayout(msg.arg2); + break; + } + } + + }; + + + private void initViews(int date) { + int year = date / 10000; + int month = date / 100 - year * 100; + int day = date % 100; + String currentDate = DateUtils.formatDate(year, month, day); + + String dateStr = getWeekDayFormat(date);// õFormatyyyymmdd + int weekday = getIntWeekDay(dateStr);// õܼ + String WeekDay = getStringWeekDay(weekday);// õַܼ + String dateString = getStringday(date) + " " + WeekDay; + + /*õһպڵʱ*/ + historyDate = (TextView) historyView + .findViewById(R.id.textView_history_date); + historyDate.setText(dateString); + + // ʼͼ + historyTaskList = (ListView) historyView + .findViewById(R.id. history_task_listview); + initHistoryAdapter(currentDate); + + historyTaskList.setAdapter(historyAdapter); + + listEmptyView=new TextView(this); + listEmptyView.setText(R.string.history_task_list_view_empty); + listEmptyView.setGravity(Gravity.CENTER); + listEmptyView.setTextSize(20); //С + listEmptyView.setTextColor(0xffffffff); + addContentView(listEmptyView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); + historyTaskList.setEmptyView(listEmptyView); + } + + private void refreshHistoryLayout(int date) { + int year = date / 10000; + int month = date / 100 - year * 100; + int day = date % 100; + String currentDate = DateUtils.formatDate(year, month, day); + + String dateStr = getWeekDayFormat(date);// õFormatyyyymmdd + int weekday = getIntWeekDay(dateStr);// õܼ + String WeekDay = getStringWeekDay(weekday);// õַܼ + String dateString = getStringday(date) + " " + WeekDay; + + historyDate.setText(dateString); + + historyTaskItemList.clear(); + initHistoryListItem(currentDate); + historyAdapter.notifyDataSetChanged(); + } + + private void initHistoryAdapter(String date){ + historyTaskItemList = new ArrayList>(); + initHistoryListItem(date); + historyAdapter = new HistoryTaskListViewAdapter(); + } + + private void initHistoryListItem(String date) { + // ѯݿ,ȡϢ + historyTaskCur = DatabaseUtil.query(HistoryOnedayActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.DATETIME + " LIKE ?", + new String[] {date + "%" }, null, null, TaskBean.ID + + " ASC"); + + // Ϣ + + for (historyTaskCur.moveToFirst(); !historyTaskCur.isAfterLast(); historyTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(historyTaskCur); + historyTaskItemList.add(map); + } + + DatabaseUtil.closeDatabase(); + } + + public void onItemSelected(AdapterView parent, View v, int position, long id) { + int curdate = Countday(today, position); + Message mes = new Message(); + mes.arg1 = REFRESH_LAYOUT; + mes.arg2 = curdate; + handler.sendMessage(mes); + } + + public void onNothingSelected(AdapterView parent) { + } + + public View makeView() { + ImageView i = new ImageView(this); + i.setBackgroundColor(0xFF000000); + i.setScaleType(ImageView.ScaleType.FIT_CENTER); + i.setLayoutParams(new ImageSwitcher.LayoutParams( + LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + return i; + } + + public class ImageAdapter extends BaseAdapter { + private Context mContext; + + public ImageAdapter(Context c) { + mContext = c; + } + + public int getCount() { + return 21; + } + + public Object getItem(int position) { + return position; + } + + public long getItemId(int position) { + return position; + } + + // getView̬һImageView,ȻsetLayoutParamssetImageResource + // setBackgroundResourceֱ趨ͼƬСͼƬԴļͼƬͼƬʾǰ + // ĻʱͻᱻԶصṩҪʾImageView + public View getView(int position, View convertView, ViewGroup parent) { + ImageView i = new ImageView(mContext); + + Bitmap newb = Bitmap.createBitmap(120, 70, Config.ARGB_8888); + + Canvas canvasTemp = new Canvas(newb); + Paint pt = new Paint(); + canvasTemp.drawColor(Color.TRANSPARENT); + + pt.setColor(Color.WHITE); + pt.setTypeface(null); + pt.setAntiAlias(true); + pt.setShader(null); + pt.setFakeBoldText(true); + pt.setTextSize(20); + + int curdate = Countday(today, position); + String dateStr = getWeekDayFormat(curdate);// õFormatyyyymmdd + int weekday = getIntWeekDay(dateStr);// õܼ + String WeekDay = getStringWeekDay(weekday);// õַܼ + + canvasTemp.drawText(WeekDay, 30, 30, pt); + pt.setTextSize(14); + + String date = getStringday(curdate); + canvasTemp.drawText(date, 5, 50, pt); + + i.setImageBitmap(newb); + + i.setAdjustViewBounds(true); + i.setLayoutParams(new Gallery.LayoutParams( + LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); + // i.setBackgroundResource(R.drawable.bg); + i.setBackgroundResource(HistoryOnebgIds[weekday - 1]);// ܼʾͬı + return i; + } + + + + + } + + public int Countday(int today, int position) { + String DateStr = getWeekDayFormat(today); + SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd"); + + Date date = null; + int selday = 0; + try { + date = f.parse(DateStr);// String תΪϸʽ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.DATE, position - 10); + + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH); + int day = calendar.get(Calendar.DAY_OF_MONTH); + selday = year * 10000 + month * 100 + day; + System.out.println(selday); + } catch (Exception e) { + e.printStackTrace(); + } + + return selday; + } + + /* εڵõַ */ + public String getStringday(int today) { + int year = today / 10000; + int month = today / 100 - year * 100; + int day = today % 100; + + String date = year + "" + month + "" + day + ""; + + return date; + } + + /* õʽַ */ + public String getWeekDayFormat(int today) { + int year = today / 10000; + int month = today / 100 - year * 100; + int day = today % 100; + String dateStr; + + String xmonth; + String xday; + if (month < 10) + xmonth = "0" + month; + else + xmonth = month + ""; + if (day < 10) + xday = "0" + day; + else + xday = day + ""; + + dateStr = year + xmonth + xday; + + return dateStr; + } + + /* õʽַ */ + public String getWeekDayFormat2(int today) { + int year = today / 10000; + int month = today / 100 - year * 100; + int day = today % 100; + String dateStr; + + String xmonth; + String xday; + if (month < 10) + xmonth = "0" + month; + else + xmonth = month + ""; + if (day < 10) + xday = "0" + day; + else + xday = day + ""; + + dateStr = year + "-"+xmonth +"-"+ xday; + + return dateStr; + } + + /* һܼ */ + public String getStringWeekDay(int weekday) { + String weekday1 = ""; + if (weekday == 1) + weekday1 = ""; + else if (weekday == 2) + weekday1 = "һ"; + else if (weekday == 3) + weekday1 = "ܶ"; + else if (weekday == 4) + weekday1 = ""; + else if (weekday == 5) + weekday1 = ""; + else if (weekday == 6) + weekday1 = ""; + else if (weekday == 7) + weekday1 = ""; + + return weekday1; + } + + /* õܼ */ + public int getIntWeekDay(String DateStr) { + SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd"); + + Date date = null; + int weekDay = 0; + try { + date = f.parse(DateStr);// String תΪϸʽ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + weekDay = calendar.get(Calendar.DAY_OF_WEEK); + System.out.println(weekDay); + } catch (Exception e) { + e.printStackTrace(); + } + // System.out.println(":"+DateStr+" "+weekDay); + return weekDay; + } + + private class HistoryTaskListViewAdapter extends BaseAdapter{ + + private int taskId = 0; + private int curPosition = 0; + + final class TaskListItemView { + public TextView taskInfo; // + public TextView taskTimeAndPositionInfo; // ʱ͵صϢ + public Button taskEditBtn; // ༭ť + public ImageView taskStarRank; // ȼͼƬ + } + + public int getCount() { + // TODO Auto-generated method stub + return historyTaskItemList.size(); + } + + public Object getItem(int arg0) { + // TODO Auto-generated method stub + return historyTaskItemList.get(arg0); + } + + public long getItemId(int position) { + // TODO Auto-generated method stub + return Integer.parseInt(historyTaskItemList.get(position).get(TaskBean.ID).toString()); + } + + public View getView(final int position, View convertView, + ViewGroup parent) { + // TODO Auto-generated method stub + TaskListItemView listItemView = null; + if (convertView == null) { + listItemView = new TaskListItemView(); + convertView = LayoutInflater.from(HistoryOnedayActivity.this).inflate(R.layout.yesterday_task_item, + null); + // ȡؼ + listItemView.taskInfo = (TextView) convertView + .findViewById(R.id.yesterday_task_info); + listItemView.taskTimeAndPositionInfo = (TextView) convertView + .findViewById(R.id.yesterday_task_time_position_textview); + listItemView.taskEditBtn = (Button) convertView + .findViewById(R.id.yesterday_task_edit_btn); + listItemView.taskStarRank = (ImageView) convertView + .findViewById(R.id.yesterday_star_rank); + // ÿؼconvertView + convertView.setTag(listItemView); + } else { + listItemView = (TaskListItemView) convertView.getTag(); + } + + // + listItemView.taskInfo.setText((String) historyTaskItemList.get( + position).get(TaskBean.TASK_NAME)); + + // ʱ͵صϢ + String positionName = (String) historyTaskItemList.get(position).get( + TaskBean.POSITION_NAME); + String timeAndPosition = "ʱ:" + + DateUtils.getTaskTime((String) historyTaskItemList.get( + position).get(TaskBean.DATETIME)); + if (!positionName.equals("")) { + timeAndPosition += (" ص:" + positionName); + } + listItemView.taskTimeAndPositionInfo.setText(timeAndPosition); + + Log.d("debug", + "position = " + + position + + " timeAlertFlag = " + + (String) historyTaskItemList.get(position).get( + TaskBean.TIME_ALERT_FLAG)); + + + + // ȼͼƬ taskStarRank + switch (Integer.parseInt(historyTaskItemList.get(position) + .get(TaskBean.PRIORITY).toString())) { + case TaskConstant.RANK_FOURTH: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star1); + break; + case TaskConstant.RANK_THIRD: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star2); + break; + case TaskConstant.RANK_SECOND: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star3); + break; + case TaskConstant.RANK_FIRST: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star4); + break; + } + + if (TaskConstant.TASK_NOT_COMPLETE == Integer + .parseInt(historyTaskItemList.get(position) + .get(TaskBean.IF_COMPLETE).toString())) { + listItemView.taskTimeAndPositionInfo.setTextColor(0xff000000); + listItemView.taskInfo.setTextColor(0xff000000); + } else { + listItemView.taskTimeAndPositionInfo.setTextColor(0xff808080); + listItemView.taskInfo.setTextColor(0xff808080); + } + + listItemView.taskEditBtn.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + taskId = Integer.parseInt(historyTaskItemList + .get(position).get(TaskBean.ID).toString()); + curPosition = position; + // + showCustomMessage("ȷɾ", "ȷɾ˻"); + + } + }); + return convertView; + } + + private void showCustomMessage(String pTitle, final String pMsg) { + final Dialog lDialog = new Dialog(HistoryOnedayActivity.this, + android.R.style.Theme_Translucent_NoTitleBar); + lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + lDialog.setContentView(R.layout.iphone_alert_dialog_layout); + ((TextView) lDialog.findViewById(R.id.dialog_title)) + .setText(pTitle); + ((TextView) lDialog.findViewById(R.id.dialog_message)) + .setText(pMsg); + ((Button) lDialog.findViewById(R.id.cancel)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // CANCEL + lDialog.dismiss(); + } + }); + ((Button) lDialog.findViewById(R.id.ok)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // OK + lDialog.dismiss(); + // ɾ + DatabaseUtil.delete(HistoryOnedayActivity.this, TaskBean.TABLE_NAME, TaskBean.ID+"="+taskId, null); + + Toast.makeText(HistoryOnedayActivity.this, "ɾɹ", + Toast.LENGTH_SHORT).show(); + // ˢб + historyTaskItemList.remove(curPosition); + historyAdapter.notifyDataSetChanged(); + } + }); + lDialog.show(); + + } + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/PastGoalActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/PastGoalActivity.java new file mode 100644 index 0000000..841e1e5 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/PastGoalActivity.java @@ -0,0 +1,416 @@ +package com.timebetter.activity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PorterDuff.Mode; +import android.graphics.PorterDuffXfermode; +import android.graphics.Shader.TileMode; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.view.Window; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.PopupWindow; +import android.widget.TextView; +import android.widget.Toast; + +import com.timebetter.activity.R; +import com.timebetter.bean.GoalBean; +import com.timebetter.constant.GoalConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.view.HistoryGoalGalleryFlow; + +/** + * ʷĿ + * + * + * + */ +public class PastGoalActivity extends Activity { + private ImageView popupView; + private ImageView popupButton; + HistoryGoalGalleryFlow galleryFlow; + private PopupWindow popup; + private List> pastGoalItemList = null; + private int imagesize = 0; + private HistoryGoalAdapter adapter; + private static final int REFRESH_PASTACITVITY = 1; + private static final int REFRESH_ADAPTER = 2; + + private Handler handler = new Handler() { + + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + switch(msg.what) { + case REFRESH_PASTACITVITY: + init(); + break; + case REFRESH_ADAPTER: + Map map = pastGoalItemList.get(msg.arg1); + String id = map.get(GoalBean.ID).toString(); + Log.d("debug", "delete curViewId=" + id); + DatabaseUtil.delete(PastGoalActivity.this, GoalBean.TABLE_NAME, GoalBean.ID+"="+id, null); + Toast.makeText(PastGoalActivity.this, "Ŀɾɹ", + Toast.LENGTH_SHORT).show(); + pastGoalItemList.remove(msg.arg1); + adapter.notifyDataSetChanged(); + break; + } + } + + }; + + // ͼƬ + private Integer[] images = new Integer[] { R.drawable.img0002, + R.drawable.img0003, R.drawable.img0004, R.drawable.img0005, + R.drawable.img0006, R.drawable.img0007, R.drawable.img0008 }; + + private void init() { + setContentView(R.layout.past_goal_layout); + imagesize = images.length; + pastGoalItemList = new ArrayList>(); + initPopupWindow(); + initPastGoalItemList(); + + adapter = new HistoryGoalAdapter(this, images); + adapter.createReflectedImages(); // ӳͼƬ + + galleryFlow = (HistoryGoalGalleryFlow) findViewById(R.id.HistoryGoalGallery); + galleryFlow.setAdapter(adapter); + galleryFlow.setOnItemClickListener(new ItemClickListener()); // ӵ¼ + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + init(); + } + + private void initPastGoalItemList() { + + Cursor pastGoalCur = DatabaseUtil.query(PastGoalActivity.this, + GoalBean.TABLE_NAME, null, GoalBean.GOAL_FLAG + "=" + + GoalConstant.FORMER_GOAL, null, null, null, + GoalBean.ID + " ASC"); + + // Ϣ + + int i = 0; + for (pastGoalCur.moveToFirst(); !pastGoalCur.isAfterLast(); pastGoalCur + .moveToNext()) { + + Map map1 = new HashMap(); + map1.put(GoalBean.GOAL_CONTENT, + pastGoalCur.getString(pastGoalCur.getColumnIndex(GoalBean.GOAL_CONTENT))); + map1.put(GoalBean.DATE, pastGoalCur.getString(pastGoalCur.getColumnIndex(GoalBean.DATE))); + map1.put(GoalBean.ID, pastGoalCur.getInt(pastGoalCur.getColumnIndex(GoalBean.ID))); + map1.put(GoalBean.GOAL_FLAG, + pastGoalCur.getInt(pastGoalCur.getColumnIndex(GoalBean.GOAL_FLAG))); + pastGoalItemList.add(i, map1); + i++; + } + + DatabaseUtil.closeDatabase(); + } + + private void initPopupWindow() { + View view = LayoutInflater.from(PastGoalActivity.this).inflate( + R.layout.past_goal_popwindow, null); + popup = new PopupWindow(view, + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + popup.setOutsideTouchable(true); + + popupView = (ImageView) view.findViewById(R.id.past_goal_popwindow_imageview); + popupButton = (ImageView) view.findViewById(R.id.past_goal_popwindow_button); + } + + @Override + protected void onPause() { + if (popup.isShowing()) { + popup.dismiss(); + } + + super.onPause(); + } + + @Override + protected void onStop() { + if (popup.isShowing()) { + popup.dismiss(); + } + super.onStop(); + } + + @Override + protected void onDestroy() { + if (popup.isShowing()) { + popup.dismiss(); + } + super.onDestroy(); + } + + class ItemClickListener implements OnItemClickListener { + + public void onItemClick(AdapterView parent, View view, final int position, + long id) { + Log.d("historygoal", "this one is on item long clicked!" + position); + + Bitmap newb = Bitmap.createBitmap(120, 200, Config.ARGB_8888); + Canvas canvasTemp = new Canvas(newb); + + Paint pt = new Paint(); + canvasTemp.drawColor(Color.TRANSPARENT); + pt.setColor(Color.WHITE); + pt.setAntiAlias(true); + + Map map = pastGoalItemList.get(position); + String content = (String)map.get(GoalBean.GOAL_CONTENT); + String date = (String)map.get(GoalBean.DATE); + + pt.setTextSize(10); + canvasTemp.drawText(date, 10, 30, pt); + + pt.setTextSize(20); + int contentLength = content.length(); + int x = contentLength/5 + 1; + for(int i=0; i map = pastGoalItemList.get(position); + String content = (String)map.get(GoalBean.GOAL_CONTENT); + String date = (String)map.get(GoalBean.DATE); + + pt.setTextSize(30); + canvasTemp.drawText(date, 30, 60, pt); + + pt.setTextSize(40); + int contentLength = content.length(); + int x = contentLength/5 + 1; + for(int i=0; i 0) { + statusDetails = getResources().getQuantityString( + R.plurals.status_done_details, backedUpCount, + backedUpCount); + } else { + statusDetails = getString( + R.string.status_done_details_noitems); + progressMax = 1; + progressVal = 1; + } + + progressIndeterminate = false; + + status = STATUS_DONE; + } else { + statusLabel = getText(R.string.status_idle); + long lastSync = PrefStore.getLastSync(SetupActivity.this); + String lastSyncStr; + if (lastSync == PrefStore.DEFAULT_LAST_SYNC) { + lastSyncStr = + getString(R.string.status_idle_details_never); + } else { + lastSyncStr = new Date(lastSync).toLocaleString(); + } + statusDetails = getString(R.string.status_idle_details, + lastSyncStr); + status = STATUS_IDLE; + } + break; + case LOGIN: + statusLabel = getText(R.string.status_login); + statusDetails = getString(R.string.status_login_details); + progressIndeterminate = true; + status = STATUS_WORKING; + break; + case SYNC: + statusLabel = getText(R.string.status_sync); + statusDetails = getString(R.string.status_sync_details, + GMailService.getCurrentSyncedItems(), + GMailService.getItemsToSyncCount()); + progressMax = GMailService.getItemsToSyncCount(); + progressVal = GMailService.getCurrentSyncedItems(); + status = STATUS_WORKING; + break; + case GENERAL_ERROR: + statusLabel = getString(R.string.status_unknown_error); + statusDetails = getString(R.string.status_unknown_error_details, + GMailService.getErrorDescription()); + status = STATUS_ERROR; + break; + case CANCELED: + statusLabel = getString(R.string.status_canceled); + statusDetails = getString(R.string.status_canceled_details, + GMailService.getCurrentSyncedItems(), + GMailService.getItemsToSyncCount()); + status = STATUS_IDLE; + } // switch (newStatus) { ... } + + + int color; + TextView detailTextView; + int syncButtonText; + int icon; + + if (status == STATUS_IDLE) { + color = R.color.status_idle; + detailTextView = mSyncDetailsLabel; + syncButtonText = R.string.ui_sync_button_label_idle; + icon = R.drawable.ic_idle; + } else if (status == STATUS_WORKING) { + color = R.color.status_sync; + detailTextView = mSyncDetailsLabel; + syncButtonText = R.string.ui_sync_button_label_syncing; + icon = R.drawable.ic_syncing; + } else if (status == STATUS_DONE) { + color = R.color.status_done; + detailTextView = mSyncDetailsLabel; + syncButtonText = R.string.ui_sync_button_label_done; + icon = R.drawable.ic_done; + } else if (status == STATUS_ERROR) { + color = R.color.status_error; + detailTextView = mErrorDetails; + syncButtonText = R.string.ui_sync_button_label_error; + icon = R.drawable.ic_error; + } else { + Log.w(GMailConsts.TAG, "Illegal state: Unknown status."); + return; + } + + if (status != STATUS_ERROR) { + mSyncDetails.setVisibility(View.VISIBLE); + mErrorDetails.setVisibility(View.INVISIBLE); + if (progressIndeterminate) { + mProgressBarIndet.setVisibility(View.VISIBLE); + mProgressBar.setVisibility(View.GONE); + } else { + mProgressBar.setVisibility(View.VISIBLE); + mProgressBarIndet.setVisibility(View.GONE); + mProgressBar.setIndeterminate(progressIndeterminate); + mProgressBar.setMax(progressMax); + mProgressBar.setProgress(progressVal); + } + + } else { + mErrorDetails.setVisibility(View.VISIBLE); + mSyncDetails.setVisibility(View.INVISIBLE); + } + + mStatusLabel.setText(statusLabel); + mStatusLabel.setTextColor(getResources().getColor(color)); + mSyncButton.setText(syncButtonText); + mSyncButton.setEnabled(true); + detailTextView.setText(statusDetails); + mStatusIcon.setImageResource(icon); + + } + }); + } + } + + @Override + public void onClick(View v) { + if (v == mSyncButton) { + if (!GMailService.isWorking()) { + initiateSync(); + } else { + GMailService.cancel(); + // Sync button will be restored on next status update. + mSyncButton.setText(R.string.ui_sync_button_label_canceling); + mSyncButton.setEnabled(false); + } + } + } + + @Override + public View getView(View convertView, ViewGroup parent) { + if (mView == null) { + mView = getLayoutInflater().inflate(R.layout.status, parent, false); + mSyncButton = (Button) mView.findViewById(R.id.sync_button); + mSyncButton.setOnClickListener(this); + mStatusIcon = (ImageView) mView.findViewById(R.id.status_icon); + mStatusLabel = (TextView) mView.findViewById(R.id.status_label); + mSyncDetails = mView.findViewById(R.id.details_sync); + mSyncDetailsLabel = (TextView) mSyncDetails.findViewById(R.id.details_sync_label); + mProgressBar = (ProgressBar) mSyncDetails.findViewById(R.id.details_sync_progress); + mProgressBarIndet = + (ProgressBar) mSyncDetails.findViewById(R.id.details_sync_progress_indet); + mErrorDetails = (TextView) mView.findViewById(R.id.details_error); + update(); + } + return mView; + } + } + + @Override + protected Dialog onCreateDialog(final int id) { + String title; + String msg; + Builder builder; + switch (id) { + case DIALOG_MISSING_CREDENTIALS: + title = getString(R.string.ui_dialog_missing_credentials_title); + msg = getString(R.string.ui_dialog_missing_credentials_msg); + break; + case DIALOG_SYNC_DATA_RESET: + title = getString(R.string.ui_dialog_sync_data_reset_title); + msg = getString(R.string.ui_dialog_sync_data_reset_msg); + break; + case DIALOG_INVALID_IMAP_FOLDER: + title = getString(R.string.ui_dialog_invalid_imap_folder_title); + msg = getString(R.string.ui_dialog_invalid_imap_folder_msg); + break; + case DIALOG_NEED_FIRST_MANUAL_SYNC: + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // BUTTON1 == BUTTON_POSITIVE == "Yes" + if (which == DialogInterface.BUTTON1) { + startSync(); + } + } + }; + + builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.ui_dialog_need_first_manual_sync_title); + builder.setMessage(R.string.ui_dialog_need_first_manual_sync_msg); + builder.setPositiveButton(android.R.string.yes, dialogClickListener); + builder.setNegativeButton(android.R.string.no, dialogClickListener); + builder.setCancelable(false); + return builder.create(); + + default: + return null; + } + + return createMessageDialog(id, title, msg); + } + + private Dialog createMessageDialog(final int id, String title, String msg) { + Builder builder = new AlertDialog.Builder(this); + builder.setTitle(title); + builder.setMessage(msg); + builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dismissDialog(id); + } + }); + return builder.create(); + } + + + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (PrefStore.PREF_LOGIN_USER.equals(preference.getKey())) { + preference.setTitle(newValue.toString()); + SharedPreferences prefs = preference.getSharedPreferences(); + final String oldValue = prefs.getString(PrefStore.PREF_LOGIN_USER, null); + if (!newValue.equals(oldValue)) { + // We need to post the reset of sync state such that we do not interfere + // with the current transaction of the SharedPreference. + runOnUiThread(new Runnable() { + @Override + public void run() { + PrefStore.clearSyncData(SetupActivity.this); + if (oldValue != null) { + showDialog(DIALOG_SYNC_DATA_RESET); + } + } + }); + } + } else if (PrefStore.PREF_IMAP_FOLDER.equals(preference.getKey())) { + String imapFolder = newValue.toString(); + if (PrefStore.isValidImapFolder(imapFolder)) { + preference.setTitle(imapFolder); + } else { + runOnUiThread(new Runnable() { + @Override + public void run() { + showDialog(DIALOG_INVALID_IMAP_FOLDER); + } + }); + return false; + } + } else if (PrefStore.PREF_LOGIN_PASSWORD.equals(preference.getKey())) { + if (PrefStore.isLoginUsernameSet(this)) { + showDialog(DIALOG_NEED_FIRST_MANUAL_SYNC); + } + } else if (PrefStore.PREF_MAX_ITEMS_PER_SYNC.equals(preference.getKey())) { + updateMaxItemsPerSync((String) newValue); + if(newValue.equals("1")) + preference.setSummary("͵"); + else if(newValue.equals("2")) + preference.setSummary("ʷ"); + else if(newValue.equals("3")) + preference.setSummary("͵"); + else if(newValue.equals("4")) + preference.setSummary("Ŀ"); + else if(newValue.equals("5")) + preference.setSummary(""); + else + preference.setSummary("ñѡ"); + + } + return true; + } + + private void updateMaxItemsPerSync(String newValue) { +// Preference pref = getPreferenceManager().findPreference(PrefStore.PREF_MAX_ITEMS_PER_SYNC); + if (newValue == null) { + newValue = String.valueOf(PrefStore.getMaxItemsPerSync(this)); + } + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/TaskActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/TaskActivity.java new file mode 100644 index 0000000..e8368c6 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/TaskActivity.java @@ -0,0 +1,2592 @@ +package com.timebetter.activity; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; + +import android.app.Activity; +import android.app.AlarmManager; +import android.app.AlertDialog; +import android.app.DatePickerDialog; +import android.app.DatePickerDialog.OnDateSetListener; +import android.app.Dialog; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.ComponentName; +import android.content.ContentValues; +import android.content.DialogInterface; +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.GestureDetector; +import android.view.GestureDetector.OnGestureListener; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnCreateContextMenuListener; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.view.Window; +import android.view.animation.AnimationUtils; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.RadioGroup.OnCheckedChangeListener; +import android.widget.TextView; +import android.widget.TimePicker; +import android.widget.TimePicker.OnTimeChangedListener; +import android.widget.Toast; +import android.widget.ViewFlipper; + +import com.timebetter.activity.R; +import com.timebetter.alarm.Alarm; +import com.timebetter.bean.TaskBean; +import com.timebetter.constant.MenuItemId; +import com.timebetter.constant.MotionEventConstant; +import com.timebetter.constant.TaskConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; +import com.timebetter.receiver.PlanBetterReceiver; +import com.timebetter.widget.TodayTaskWidget; +import com.timebetter.widget.TomorrowTaskWidgetService; + +public class TaskActivity extends Activity implements OnGestureListener { + private ViewFlipper flipper = null; + private GestureDetector gestureDetector = null; + + private View todayView = null; // ͼ + private View yesterdayView = null; // ͼ + private View tomorrowView = null; // ͼ + + private Button todayAddTaskBtn = null; // ť + private Button tomorrowAddTaskBtn = null; // ť + + private TextView todayTaskTV = null; + + /* Ϣбͼбͼadapter */ + private List> todayTaskItemList = null; // ListϢ + private ListView todayTaskList = null; // Ϣбͼ + private static TodayTaskListViewAdapter todayAdapter = null; // бͼadapter + + /* δϢбͼбͼadapter */ + private List> tomorrowTaskItemList = null; // ListδϢ + private ListView tomorrowTaskList = null; // δϢбͼ + private static TomorrowTaskListViewAdapter tomorrowAdapter = null; // δбͼadapter + private TextView tomorrowTaskName = null; + private TextView tomorrowTaskDate = null; + private TextView tomorrowTaskLeftDay = null; + private String tomorrowTaskMessageID = null; + + /* Ϣбͼбͼadapter */ + private List> yesterdayTaskItemList = null; // ListϢ + private ListView yesterdayTaskList = null; // Ϣбͼ + private static YesterdayTaskListViewAdapter yesterdayAdapter = null; // бͼadapter + + private int index = START_INDEX; // ǰview + private static final int START_INDEX = 0; // һview + private static final int MIDDLE_INDEX = 1; + private static final int END_INDEX = 2; // һview + + private Cursor todayTaskCur; + private Cursor tomorrowTaskCur; + private Cursor yesterdayTaskCur; + + private int priority = TaskConstant.RANK_FIRST; + private int timeAlertValue = TaskConstant.NO_TIME_ALERT; + private String time = ""; + private int repeatDays = TaskConstant.INIT_REPEAT_DAYS; + + private TextView repeatDateTimeTV = null; + private TextView repeatDaysTV = null; + + private NotificationManager notificationManager; + private Notification notification; + private Intent notifyIntent; + private PendingIntent notifyPendingIntent; + + private int alarmHour; + private int alarmMinute; + private int initYear; + private int initMonth; + private int initDay; + + private TextView todayListEmptyView; + private TextView tomorrowListEmptyView; + private TextView yesterdayListEmptyView; + + private static final int REFRESH_TASKACTIVITY = 1; + private static final int REFRESH_FUTURE = 2; + private static final int INIT_TASKCTIVITY = 3; + + private boolean hasInit = false; + + private int todayClickViewId = 0; + private int todayClickPosition = 0; + + private int todayClickCompleteState = TaskConstant.TASK_NOT_COMPLETE; + + // private Typeface typeFace; + + @Override + public void onCreate(Bundle savedInstanceState) { + + super.onCreate(savedInstanceState); + + // ʼTaskActivityĽ + initUI(); + + // typeFace = + // Typeface.createFromAsset(getAssets(),"fonts/vavont-bolder.ttf"); + + setMyDateChangedAlarm(); + + // ʾ + notifyIntent = new Intent(TaskActivity.this, TaskNotifyActivity.class); + notifyPendingIntent = PendingIntent.getActivity(TaskActivity.this, 0, + notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT); + notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notification = new Notification(); + notification.icon = R.drawable.icon; + notification.tickerText = "һлͼ"; + notification.defaults = Notification.DEFAULT_LIGHTS; + notification.setLatestEventInfo(TaskActivity.this, "PlanBetter", + "ͼл", notifyPendingIntent); + + Timer timer = new Timer(); + timer.schedule(new NofifyTimeTask(), 1000); + // Ϣ + Message mes = new Message(); + mes.what = INIT_TASKCTIVITY; + handler.sendMessageDelayed(mes, 1000); + } + + private void setMyDateChangedAlarm() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + cal.add(Calendar.DAY_OF_MONTH, 1); + AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); + Intent intent = new Intent(PlanBetterReceiver.DATE_CHANGED); + PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, + PendingIntent.FLAG_CANCEL_CURRENT); + am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); + } + + private void startServiceToFreshTomorrowWidget() { + Intent intent = new Intent(this, TomorrowTaskWidgetService.class); + startService(intent); + } + + private void sendBroadcastToTodayWidget() { + Intent bcast = new Intent(this, TodayTaskWidget.class); + bcast.setAction(TodayTaskWidget.ACTION_NEXT_TIP); + sendBroadcast(bcast); + } + + private Handler handler = new Handler() { + + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + switch (msg.what) { + case REFRESH_TASKACTIVITY: + initUI(); + flipper.showNext(); + index++; + // γЧ + if (yesterdayTaskItemList.size() == 0) { + yesterdayListEmptyView.setVisibility(View.INVISIBLE); + } + if (todayTaskItemList.size() == 0) { + todayListEmptyView.setVisibility(View.VISIBLE); + } + break; + case REFRESH_FUTURE: + refreshFuture(); + break; + case INIT_TASKCTIVITY: + flipper.setInAnimation(AnimationUtils.loadAnimation( + TaskActivity.this, R.anim.push_left_in_slowly)); + flipper.setOutAnimation(AnimationUtils.loadAnimation( + TaskActivity.this, R.anim.push_left_out_slowly)); + flipper.showNext(); + index++; + + // γЧ + if (yesterdayTaskItemList.size() == 0) { + yesterdayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(TaskActivity.this, + R.anim.push_left_out_slowly)); + yesterdayListEmptyView.setVisibility(View.INVISIBLE); + } + if (todayTaskItemList.size() == 0) { + todayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(TaskActivity.this, + R.anim.push_left_in_slowly)); + todayListEmptyView.setVisibility(View.VISIBLE); + } + break; + } + } + + }; + + @Override + protected void onResume() { + // TODO Auto-generated method stub + super.onResume(); + if (hasInit) { + Message mes = new Message(); + mes.what = REFRESH_TASKACTIVITY; + handler.sendMessage(mes); + } + hasInit = true; + } + + private void refreshFuture() { + tomorrowTaskItemList = new ArrayList>(); + initTomorrowListItem(); + tomorrowAdapter.notifyDataSetChanged(); + } + + private void initUI() { + + setContentView(R.layout.task_main_layout); + + index = START_INDEX; + + initViews(); + + // ť + todayAddTaskBtn = (Button) todayView + .findViewById(R.id.today_add_task_btn); + todayAddTaskBtn.setOnClickListener(new AddTaskListener()); + todayTaskTV = (TextView) todayView + .findViewById(R.id.textView_today_date); + todayTaskTV.setText(DateUtils.timeDetail(DateUtils.TODAY)); + + // ť + tomorrowAddTaskBtn = (Button) tomorrowView.findViewById(R.id.addTask); + tomorrowAddTaskBtn.setOnClickListener(new AddTaskListener()); + + flipper = (ViewFlipper) findViewById(R.id.viewFlipper); + flipper.addView(yesterdayView); + flipper.addView(todayView); + flipper.addView(tomorrowView); + + gestureDetector = new GestureDetector(this); + + } + + private class NofifyTimeTask extends TimerTask { + @Override + public void run() { + notificationManager.notify(0, notification); + } + } + + private void registerAlarm(int id, int hourOfDay, int minute) { + // жʱǷϷ + if (DateUtils.checkTimeAlertable(hourOfDay, minute)) { + Intent intent = new Intent(Alarm.ALARM_REGISTRATION_DETAIL_ACTION); + Bundle bundle = new Bundle(); + bundle.putInt(Alarm.ID, id); + bundle.putInt(Alarm.HOUR, hourOfDay); + bundle.putInt(Alarm.MINUTE, minute); + intent.putExtra(Alarm.ALARM_REGISTRATION_BUNDLE_TAG, bundle); + sendBroadcast(intent); + } + } + + private void registerAlarm(int id, String datetime) throws ParseException { + if (DateUtils.checkTimeAlertable(datetime)) { + Intent intent = new Intent(Alarm.ALARM_REGISTRATION_SIMPLE_ACTION); + Bundle bundle = new Bundle(); + bundle.putInt(Alarm.ID, id); + bundle.putString(Alarm.DATETIME, datetime); + intent.putExtra(Alarm.ALARM_REGISTRATION_BUNDLE_TAG, bundle); + sendBroadcast(intent); + } + } + + private void cancelAlarm(int id) { + Intent intent = new Intent(Alarm.ALARM_CANCEL_ACTION); + intent.putExtra(Alarm.ID, id); + sendBroadcast(intent); + } + + /** + * + * + * + * + */ + private class AddTaskListener implements OnClickListener { + private int differDays = 1; + + public void onClick(View v) { + priority = TaskConstant.RANK_FIRST; + int[] nowHourAndMinute = DateUtils.getNowHourAndMinute(); + alarmHour = nowHourAndMinute[0]; + alarmMinute = nowHourAndMinute[1]; + time = DateUtils.formatTime(alarmHour, alarmMinute); + timeAlertValue = TaskConstant.NO_TIME_ALERT; + repeatDays = TaskConstant.INIT_REPEAT_DAYS; + + switch (index) { + // ǽ + case MIDDLE_INDEX: + int[] nowYearMonthDay = DateUtils.getNowDate(); + initYear = nowYearMonthDay[0]; + initMonth = nowYearMonthDay[1]; + initDay = nowYearMonthDay[2]; + // view + final View addTaskView = getViewById(R.layout.add_task_dialog_layout); + final EditText taskContent = (EditText) addTaskView + .findViewById(R.id.et_task_info); + final EditText taskPosition = (EditText) addTaskView + .findViewById(R.id.et_task_position); + TimePicker timePicker = (TimePicker) addTaskView + .findViewById(R.id.tp_task_time); + timePicker.setCurrentHour(alarmHour); + timePicker.setCurrentMinute(alarmMinute); + timePicker + .setOnTimeChangedListener(new OnTimeChangedListener() { + + @Override + public void onTimeChanged(TimePicker view, + int hourOfDay, int minute) { + time = DateUtils.formatTime(hourOfDay, minute); + alarmHour = hourOfDay; + alarmMinute = minute; + } + }); + RadioGroup rankGroup = (RadioGroup) addTaskView + .findViewById(R.id.task_rank_group); + final RadioButton rankFirst = (RadioButton) addTaskView + .findViewById(R.id.task_rank_first); + final RadioButton rankSecond = (RadioButton) addTaskView + .findViewById(R.id.task_rank_second); + final RadioButton rankThird = (RadioButton) addTaskView + .findViewById(R.id.task_rank_third); + final RadioButton rankFourth = (RadioButton) addTaskView + .findViewById(R.id.task_rank_fourth); + + rankGroup + .setOnCheckedChangeListener(new OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(RadioGroup group, + int checkedId) { + if (checkedId == rankFirst.getId()) { + priority = TaskConstant.RANK_FIRST; + } else if (checkedId == rankSecond.getId()) { + priority = TaskConstant.RANK_SECOND; + } else if (checkedId == rankThird.getId()) { + priority = TaskConstant.RANK_THIRD; + } else if (checkedId == rankFourth.getId()) { + priority = TaskConstant.RANK_FOURTH; + } + } + }); + + final CheckBox timeAlertCB = (CheckBox) addTaskView + .findViewById(R.id.cb_time_alert); + timeAlertCB + .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + + @Override + public void onCheckedChanged( + CompoundButton buttonView, boolean isChecked) { + if (timeAlertCB.isChecked()) { + timeAlertValue = TaskConstant.TIME_ALERT; + } else { + timeAlertValue = TaskConstant.NO_TIME_ALERT; + } + } + }); + + repeatDateTimeTV = (TextView) addTaskView + .findViewById(R.id.task_repeat_days_date); + repeatDaysTV = (TextView) addTaskView + .findViewById(R.id.task_repeat_days_total); + refreshRepeatDaysTextView(); + + Button setRepeatDaysBtn = (Button) addTaskView + .findViewById(R.id.task_repeat_days_button); + setRepeatDaysBtn.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + int[] dayInfo = DateUtils + .getDayInfoByRepeatDays(repeatDays); + // ڶԻ + DatePickerDialog dlg = new DatePickerDialog( + TaskActivity.this, dateListener, dayInfo[0], + dayInfo[1], dayInfo[2]); + dlg.setTitle(R.string.task_time_repeat_dialog_title); + dlg.show(); + } + }); + + // ½Ի + new AlertDialog.Builder(TaskActivity.this) + .setTitle(R.string.add_task_dialog_title) + .setIcon(R.drawable.add_task_dialog_icon) + .setView(addTaskView) + .setPositiveButton(R.string.save_task_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, + int which) { + String taskContentStr = taskContent + .getText().toString().trim(); + String taskPositionStr = taskPosition + .getText().toString().trim(); + if (taskContentStr.equals("")) { + Toast.makeText(TaskActivity.this, + "ƲΪ", + Toast.LENGTH_SHORT).show(); + } else { + String datetime = DateUtils.now() + + " " + time; + ContentValues values = new ContentValues(); + + values.put(TaskBean.TASK_NAME, + taskContentStr); + values.put(TaskBean.DATETIME, + datetime); + values.put( + TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + values.put(TaskBean.POSITION_NAME, + taskPositionStr); + values.put( + TaskBean.TIME_ALERT_FLAG, + timeAlertValue); + values.put(TaskBean.PRIORITY, + priority); + values.put(TaskBean.REPEAT_DAYS, + repeatDays); + values.put(TaskBean.IF_FUTURE, + TaskConstant.NOT_FUTURE); + values.put(TaskBean.PARENT, + TaskConstant.IS_PARENT); + + // DatabaseHelper helper = new + // DatabaseHelper(TaskActivity.this); + // SQLiteDatabase db = + // helper.getWritableDatabase(); + // long id = + // db.insert(TaskBean.TABLE_NAME,TaskBean.ID,values); + + long id = DatabaseUtil.insert( + TaskActivity.this, + TaskBean.TABLE_NAME, + TaskBean.ID, values); + if (id == -1) { + Toast.makeText( + TaskActivity.this, + "ݿʧ", + Toast.LENGTH_SHORT) + .show(); + } else { + + if (repeatDays > 1) { + // 㲥 + Intent insertData = new Intent( + PlanBetterReceiver.INSERT_DATA_ACTION); + Bundle bundle = new Bundle(); + bundle.putString( + TaskBean.TASK_NAME, + taskContentStr); + bundle.putString( + TaskBean.POSITION_NAME, + taskPositionStr); + bundle.putInt( + TaskBean.TIME_ALERT_FLAG, + timeAlertValue); + bundle.putInt( + TaskBean.PRIORITY, + priority); + bundle.putString( + TaskBean.DATETIME, + datetime); + bundle.putInt( + TaskBean.REPEAT_DAYS, + repeatDays); + bundle.putInt( + TaskBean.PARENT, + (int) id); + insertData + .putExtra( + PlanBetterReceiver.INSERT_DATA_INTENT_BUNDLE_TAG, + bundle); + sendBroadcast(insertData); + } + + Map map = new HashMap(); + map.put(TaskBean.TASK_NAME, + taskContentStr); + map.put(TaskBean.DATETIME, + datetime); + map.put(TaskBean.POSITION_NAME, + taskPositionStr); + map.put(TaskBean.PRIORITY, + priority + ""); + map.put(TaskBean.TIME_ALERT_FLAG, + timeAlertValue + ""); + map.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE + + ""); + map.put(TaskBean.ID, id + ""); + map.put(TaskBean.REPEAT_DAYS, + repeatDays + ""); + map.put(TaskBean.PARENT, + TaskConstant.IS_PARENT); + + refreshTodayTaskAfterInsert(map); + + // ע + if (timeAlertValue == TaskConstant.TIME_ALERT) + registerAlarm((int) id, + alarmHour, + alarmMinute); + sendBroadcastToTodayWidget(); + } + } + } + }) + .setNegativeButton(R.string.cancel_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, + int which) { + + } + + }).create().show(); + + break; + // δ + case END_INDEX: + int[] tomorrowYearMonthDay = DateUtils.getTomorrowDate(); + initYear = tomorrowYearMonthDay[0]; + initMonth = tomorrowYearMonthDay[1]; + initDay = tomorrowYearMonthDay[2]; + final View addTomorrowTaskView = getViewById(R.layout.edit_tomorrow_task_dialog_layout); + final EditText tomorrowtaskContent = (EditText) addTomorrowTaskView + .findViewById(R.id.et_tomorrow_task_info); + + DatePicker datePicker = (DatePicker) addTomorrowTaskView + .findViewById(R.id.dp_tomorrow_task_date); + datePicker.init(initYear, initMonth - 1, initDay, + new DatePicker.OnDateChangedListener() { + + @Override + public void onDateChanged(DatePicker view, + int year, + + int monthOfYear, int dayOfMonth) { + + initYear = year; + initMonth = monthOfYear + 1; + initDay = dayOfMonth; + + differDays = DateUtils.getDifferDays(year, + monthOfYear + 1, dayOfMonth); + if (differDays < 0) + Toast.makeText(TaskActivity.this, + "óɽԺʱ~", Toast.LENGTH_SHORT) + .show(); + + } + + }); + + TimePicker timePicker2 = (TimePicker) addTomorrowTaskView + .findViewById(R.id.tp_tomorrow_task_time); + timePicker2.setCurrentHour(alarmHour); + timePicker2.setCurrentMinute(alarmMinute); + + timePicker2 + .setOnTimeChangedListener(new OnTimeChangedListener() { + + @Override + public void onTimeChanged(TimePicker view, + int hourOfDay, int minute) { + time = DateUtils.formatTime(hourOfDay, minute); + alarmHour = hourOfDay; + alarmMinute = minute; + } + }); + + final CheckBox timeAlertCB2 = (CheckBox) addTomorrowTaskView + .findViewById(R.id.cb_tomorrow_time_alert); + + timeAlertCB2 + .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + + @Override + public void onCheckedChanged( + CompoundButton buttonView, boolean isChecked) { + if (timeAlertCB2.isChecked()) { + timeAlertValue = TaskConstant.TIME_ALERT; + alarmMinute = 0; + alarmHour = 0; + + } else { + timeAlertValue = TaskConstant.NO_TIME_ALERT; + alarmMinute = 0; + alarmHour = 0; + time = DateUtils.formatTime(alarmHour, + alarmMinute); + } + } + }); + + // ½Ի + new AlertDialog.Builder(TaskActivity.this) + .setTitle(R.string.edit_task_dialog_title) + .setIcon(android.R.drawable.ic_menu_edit) + .setView(addTomorrowTaskView) + .setPositiveButton(R.string.save_task_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, + int which) { + String taskContentStr = tomorrowtaskContent + .getText().toString().trim(); + + if (taskContentStr.equals("")) { + Toast.makeText(TaskActivity.this, + "ƲΪ", + Toast.LENGTH_SHORT).show(); + } else if (differDays < 0) { + Toast.makeText(TaskActivity.this, + "ʱòδ洢", + Toast.LENGTH_SHORT).show(); + } else { + String datetime = DateUtils + .formatDate(initYear, + initMonth, initDay) + + " " + time; + ContentValues values = new ContentValues(); + + values.put(TaskBean.TASK_NAME, + taskContentStr); + values.put(TaskBean.DATETIME, + datetime); + values.put( + TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + values.put(TaskBean.POSITION_NAME, + ""); + values.put( + TaskBean.TIME_ALERT_FLAG, + timeAlertValue); + values.put(TaskBean.PRIORITY, + TaskConstant.RANK_FOURTH); + values.put( + TaskBean.REPEAT_DAYS, + TaskConstant.INIT_REPEAT_DAYS); + values.put(TaskBean.IF_FUTURE, + TaskConstant.IS_FUTURE); + values.put(TaskBean.PARENT, + TaskConstant.IS_PARENT); + + long id = DatabaseUtil.insert( + TaskActivity.this, + TaskBean.TABLE_NAME, + TaskBean.ID, values); + if (id == -1) { + Toast.makeText( + TaskActivity.this, + "ݿʧ", + Toast.LENGTH_SHORT) + .show(); + } else { + + Map map = new HashMap(); + map.put(TaskBean.TASK_NAME, + taskContentStr); + map.put(TaskBean.DATETIME, + datetime); + map.put(TaskBean.POSITION_NAME, + ""); + map.put(TaskBean.PRIORITY, + TaskConstant.RANK_FOURTH + + ""); + map.put(TaskBean.TIME_ALERT_FLAG, + timeAlertValue + ""); + map.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE + + ""); + map.put(TaskBean.ID, id + ""); + map.put(TaskBean.REPEAT_DAYS, + TaskConstant.INIT_REPEAT_DAYS + + ""); + + // refreshYesterdayTaskAfterInsert(map); + refreshTomorrowTaskAfterInsert(map); + String taskid = id + ""; + refreshTomorrowMessageSendMessage( + taskid, taskContentStr, + datetime); + startServiceToFreshTomorrowWidget(); + } + } + } + }) + + .setNegativeButton(R.string.cancel_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, + int which) { + + } + + }).create().show(); + break; + } + } + + } + + private void refreshTomorrowMessageSendMessage(String id, String taskname, + String date) { + Message mes = new Message(); + mes.what = REFRESH_TOMORROW_MESSAGE; + Bundle bundle = new Bundle(); + bundle.putString(TaskBean.ID, id); + bundle.putString(TaskBean.TASK_NAME, taskname); + bundle.putString(TaskBean.DATETIME, date); + mes.setData(bundle); + refreshHandler.sendMessage(mes); + } + + private void refreshTomorrowMessageDelete() { + String id = null; + String taskName = null; + String dateStr = null; + int x = Integer.MAX_VALUE; + int size = tomorrowTaskItemList.size(); + /* ѰmapоǸ */ + for (int i = 0; i < size; i++) { + Map map = tomorrowTaskItemList.get(i); + String date = (String) map.get(TaskBean.DATETIME); + int[] yearMonthDay = DateUtils + .getYearMonthDayHourAndMinuteByDateTime(date); + int taskYear = yearMonthDay[0]; + int taskMonth = yearMonthDay[1]; + int taskDay = yearMonthDay[2]; + + String datetime = DateUtils + .formatDate(taskYear, taskMonth, taskDay); + + int differ = x + 1; + try { + differ = DateUtils.getDifferDays(datetime); + } catch (ParseException e) { + e.printStackTrace(); + } + + if (differ <= x) { + taskName = (String) map.get(TaskBean.TASK_NAME); + dateStr = (String) map.get(TaskBean.DATETIME); + id = (String) map.get(TaskBean.ID); + x = differ; + } + } + refreshTomorrowMessageSendMessage(id, taskName, dateStr); + } + + private void refreshRepeatDaysTextView() { + repeatDateTimeTV.setText(DateUtils.getDateByRepeatDays(repeatDays)); + repeatDaysTV.setText(DateUtils.getDayByRepeatDays(repeatDays)); + } + + private OnDateSetListener dateListener = new OnDateSetListener() { + + @Override + public void onDateSet(DatePicker view, int year, int monthOfYear, + int dayOfMonth) { + try { + repeatDays = DateUtils.getDifferDays(year + "-" + + (monthOfYear + 1) + "-" + dayOfMonth); + } catch (ParseException e) { + e.printStackTrace(); + } + if (repeatDays < -1) { + Toast.makeText(getApplicationContext(), "ֹڲڽ֮ǰ", + Toast.LENGTH_SHORT).show(); + repeatDays = 1; + } else if (repeatDays == -1) { + repeatDays = 1; + } else { + repeatDays++; + } + + refreshRepeatDaysTextView(); + } + }; + + private void deleteAfterTodayInfo(int position, int id) { + int parent = Integer.parseInt(todayTaskItemList.get(position) + .get(TaskBean.PARENT).toString()); + + String delSql = ""; + + // ɾparentcurViewIdparentparent,СǰڵĻ + if (parent == TaskConstant.IS_PARENT) { + delSql = "DELETE FROM " + TaskBean.TABLE_NAME + " WHERE " + + TaskBean.PARENT + "=" + id; + } else { + delSql = "DELETE FROM " + + TaskBean.TABLE_NAME + + " WHERE " + + TaskBean.PARENT + + "=" + + parent + + " AND " + + TaskBean.REPEAT_DAYS + + "<" + + todayTaskItemList.get(position).get(TaskBean.REPEAT_DAYS) + .toString(); + } + + DatabaseUtil.delete(TaskActivity.this, delSql); + } + + public class PullDateListener implements OnDateSetListener { + + private String formerDate; + private int id; + private int position; + + public PullDateListener(String date, int id, int position) { + this.formerDate = date; + this.id = id; + this.position = position; + } + + @Override + public void onDateSet(DatePicker view, int year, int monthOfYear, + int dayOfMonth) { + int pullDays = 0; + try { + pullDays = DateUtils.getDifferDays(year + "-" + + (monthOfYear + 1) + "-" + dayOfMonth); + } catch (ParseException e) { + e.printStackTrace(); + } + if (pullDays <= -1) { + Toast.makeText(getApplicationContext(), "Ƴڲڽ֮ǰ", + Toast.LENGTH_SHORT).show(); + } else { + // 滻µ + String newDate = year + "-" + (monthOfYear + 1) + "-" + + dayOfMonth; + String newDateTime = newDate + " " + formerDate.split(" ")[1]; + deleteAfterTodayInfo(position, id); + ContentValues values = new ContentValues(); + values.put(TaskBean.DATETIME, newDateTime); + values.put(TaskBean.REPEAT_DAYS, TaskConstant.INIT_REPEAT_DAYS); + values.put(TaskBean.IF_FUTURE, TaskConstant.IS_FUTURE); + values.put(TaskBean.PARENT, TaskConstant.IS_PARENT); + int rows = DatabaseUtil.update(TaskActivity.this, + TaskBean.TABLE_NAME, values, TaskBean.ID + "=" + id, + null); + if (rows > 0) { + + // ݿ³ɹ + Log.d("debug", "ʱƳٵ" + newDateTime); + Toast.makeText(TaskActivity.this, + "Ƴٻɹ,ԶΪ1,δͼнв鿴", Toast.LENGTH_SHORT) + .show(); + // ȡ + cancelAlarm(id); + todayTaskItemList.remove(position); + todayAdapter.notifyDataSetChanged(); + + todayTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.ID + "=" + id, + null, null, null, null); + + // õϢmap + for (todayTaskCur.moveToFirst(); !todayTaskCur + .isAfterLast(); todayTaskCur.moveToNext()) { + Map map = TaskBean + .generateTask(todayTaskCur); + refreshTomorrowTaskAfterInsert(map); + } + DatabaseUtil.closeDatabase(); + startServiceToFreshTomorrowWidget(); + sendBroadcastToTodayWidget(); + + } else { + Toast.makeText(TaskActivity.this, "ݿʧ", + Toast.LENGTH_SHORT).show(); + } + } + } + }; + + @Override + public boolean onContextItemSelected(MenuItem item) { + // TODO Auto-generated method stub + switch (item.getItemId()) { + case MenuItemId.TASK_ITEM_LONG_CLICK_MENU_EDIT: + // ༭¼ + todayTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.ID + "=" + + todayClickViewId, null, null, null, null); + Map map = null; + for (todayTaskCur.moveToFirst(); !todayTaskCur.isAfterLast(); todayTaskCur + .moveToNext()) { + map = TaskBean.generateTask(todayTaskCur); + } + + DatabaseUtil.closeDatabase(); + + final View editTaskView = getViewById(R.layout.add_task_dialog_layout); + final EditText taskContent = (EditText) editTaskView + .findViewById(R.id.et_task_info); + taskContent.setText(map.get(TaskBean.TASK_NAME).toString()); + final EditText taskPosition = (EditText) editTaskView + .findViewById(R.id.et_task_position); + taskPosition.setText(map.get(TaskBean.POSITION_NAME).toString()); + + int[] minuteAndHour = DateUtils.getHourAndMinuteByDateTime(map.get( + TaskBean.DATETIME).toString()); + + TimePicker timePicker = (TimePicker) editTaskView + .findViewById(R.id.tp_task_time); + timePicker.setCurrentHour(minuteAndHour[0]); + timePicker.setCurrentMinute(minuteAndHour[1]); + alarmHour = minuteAndHour[0]; + alarmMinute = minuteAndHour[1]; + timePicker.setOnTimeChangedListener(new OnTimeChangedListener() { + + @Override + public void onTimeChanged(TimePicker view, int hourOfDay, + int minute) { + // TODO Auto-generated method stub + time = DateUtils.formatTime(hourOfDay, minute); + // alarmHour = hourOfDay; + // alarmMinute = minute; + } + }); + + RadioGroup rankGroup = (RadioGroup) editTaskView + .findViewById(R.id.task_rank_group); + final RadioButton rankFirst = (RadioButton) editTaskView + .findViewById(R.id.task_rank_first); + final RadioButton rankSecond = (RadioButton) editTaskView + .findViewById(R.id.task_rank_second); + final RadioButton rankThird = (RadioButton) editTaskView + .findViewById(R.id.task_rank_third); + final RadioButton rankFourth = (RadioButton) editTaskView + .findViewById(R.id.task_rank_fourth); + + priority = Integer.parseInt(map.get(TaskBean.PRIORITY).toString()); + switch (priority) { + case TaskConstant.RANK_FIRST: + rankFirst.setChecked(true); + break; + case TaskConstant.RANK_SECOND: + rankSecond.setChecked(true); + break; + case TaskConstant.RANK_THIRD: + rankThird.setChecked(true); + break; + case TaskConstant.RANK_FOURTH: + rankFourth.setChecked(true); + break; + } + + rankGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + // TODO Auto-generated method stub + if (checkedId == rankFirst.getId()) { + priority = TaskConstant.RANK_FIRST; + } else if (checkedId == rankSecond.getId()) { + priority = TaskConstant.RANK_SECOND; + } else if (checkedId == rankThird.getId()) { + priority = TaskConstant.RANK_THIRD; + } else if (checkedId == rankFourth.getId()) { + priority = TaskConstant.RANK_FOURTH; + } + } + }); + + final CheckBox timeAlertCB = (CheckBox) editTaskView + .findViewById(R.id.cb_time_alert); + + timeAlertValue = Integer.parseInt(map.get(TaskBean.TIME_ALERT_FLAG) + .toString()); + if (timeAlertValue == TaskConstant.TIME_ALERT) { + timeAlertCB.setChecked(true); + } else { + timeAlertCB.setChecked(false); + } + + timeAlertCB + .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(CompoundButton buttonView, + boolean isChecked) { + // TODO Auto-generated method stub + if (timeAlertCB.isChecked()) { + timeAlertValue = TaskConstant.TIME_ALERT; + } else { + timeAlertValue = TaskConstant.NO_TIME_ALERT; + } + } + }); + + repeatDays = Integer.parseInt(map.get(TaskBean.REPEAT_DAYS) + .toString()); + + repeatDateTimeTV = (TextView) editTaskView + .findViewById(R.id.task_repeat_days_date); + repeatDaysTV = (TextView) editTaskView + .findViewById(R.id.task_repeat_days_total); + refreshRepeatDaysTextView(); + + Button setRepeatDaysBtn = (Button) editTaskView + .findViewById(R.id.task_repeat_days_button); + setRepeatDaysBtn.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + int[] dayInfo = DateUtils + .getDayInfoByRepeatDays(repeatDays); + // ڶԻ + DatePickerDialog dlg = new DatePickerDialog( + TaskActivity.this, dateListener, dayInfo[0], + dayInfo[1], dayInfo[2]); + dlg.setTitle(R.string.task_time_repeat_dialog_title); + dlg.show(); + } + }); + + // ½Ի + new AlertDialog.Builder(TaskActivity.this) + .setTitle(R.string.edit_task_dialog_title) + .setIcon(android.R.drawable.ic_menu_edit) + .setView(editTaskView) + .setPositiveButton(R.string.save_task_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, + int which) { + // TODO Auto-generated method stub + String taskContentStr = taskContent + .getText().toString().trim(); + String taskPositionStr = taskPosition + .getText().toString().trim(); + if (taskContentStr.equals("")) { + Toast.makeText(TaskActivity.this, + "ƲΪ", Toast.LENGTH_SHORT) + .show(); + } else { + String datetime = DateUtils.now() + " " + + time; + ContentValues values = new ContentValues(); + + values.put(TaskBean.TASK_NAME, + taskContentStr); + values.put(TaskBean.DATETIME, datetime); + values.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + values.put(TaskBean.POSITION_NAME, + taskPositionStr); + values.put(TaskBean.TIME_ALERT_FLAG, + timeAlertValue); + values.put(TaskBean.PRIORITY, priority); + values.put(TaskBean.REPEAT_DAYS, + repeatDays); + + deleteAfterTodayInfo( + todayClickPosition, + todayClickViewId); + int rows = DatabaseUtil.update( + TaskActivity.this, + TaskBean.TABLE_NAME, values, + TaskBean.ID + "=" + + todayClickViewId, + null); + + if (rows > 0) { + int parent = Integer + .parseInt(todayTaskItemList + .get(todayClickPosition) + .get(TaskBean.PARENT) + .toString()); + // ͹㲥̨֪ͨ޸ݿ + if (repeatDays > 1) { + // 㲥 + Intent insertData = new Intent( + PlanBetterReceiver.INSERT_DATA_AFTER_MODIFY); + Bundle bundle = new Bundle(); + bundle.putString( + TaskBean.TASK_NAME, + taskContentStr); + bundle.putString( + TaskBean.POSITION_NAME, + taskPositionStr); + bundle.putInt( + TaskBean.TIME_ALERT_FLAG, + timeAlertValue); + bundle.putInt( + TaskBean.PRIORITY, + priority); + bundle.putString( + TaskBean.DATETIME, + datetime); + bundle.putInt( + TaskBean.REPEAT_DAYS, + repeatDays); + bundle.putInt(TaskBean.PARENT, + (int) parent); + bundle.putInt( + TaskBean.CURVIEWID, + todayClickViewId); + insertData + .putExtra( + PlanBetterReceiver.INSERT_DATA_AFTER_MODIFY_INTENT_BUNDLE_TAG, + bundle); + sendBroadcast(insertData); + } + + Map map = new HashMap(); + map.put(TaskBean.TASK_NAME, + taskContentStr); + map.put(TaskBean.DATETIME, datetime); + map.put(TaskBean.POSITION_NAME, + taskPositionStr); + map.put(TaskBean.PRIORITY, priority + + ""); + map.put(TaskBean.TIME_ALERT_FLAG, + timeAlertValue + ""); + map.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE + + ""); + map.put(TaskBean.ID, + todayClickViewId + ""); + map.put(TaskBean.REPEAT_DAYS, + repeatDays + ""); + map.put(TaskBean.PARENT, parent + + ""); + + refreshTodayTaskAfterUpdate( + todayClickPosition, map); + Toast.makeText(TaskActivity.this, + "޸Ļɹ", + Toast.LENGTH_SHORT).show(); + cancelAlarm(todayClickViewId); + if (timeAlertValue == TaskConstant.TIME_ALERT) { + try { + registerAlarm( + todayClickViewId, + datetime); + } catch (ParseException e) { + // TODO Auto-generated catch + // block + e.printStackTrace(); + } + } + sendBroadcastToTodayWidget(); + } else { + Toast.makeText(TaskActivity.this, + "޸Ļʧ", + Toast.LENGTH_SHORT).show(); + } + } + } + }) + .setNegativeButton(R.string.cancel_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, + int which) { + // TODO Auto-generated method stub + + } + + }).create().show(); + + return true; + case MenuItemId.TASK_ITEM_LONG_CLICK_MENU_DELETE: + // ɾ¼ + deleteTodayTaskItem("ȷɾ", "ȷɾ"); + return true; + case MenuItemId.TASK_ITEM_LONG_CLICK_MENU_PULL: + // Ƴٻ¼ + if (todayClickCompleteState == TaskConstant.TASK_NOT_COMPLETE) { + // Ƴ + // ѯʱ + todayTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, + new String[] { TaskBean.DATETIME }, TaskBean.ID + "=" + + todayClickViewId, null, null, null, null); + String datetime = ""; + for (todayTaskCur.moveToFirst(); !todayTaskCur.isAfterLast(); todayTaskCur + .moveToNext()) { + datetime = todayTaskCur.getString(todayTaskCur + .getColumnIndex(TaskBean.DATETIME)); + } + DatabaseUtil.closeDatabase(); + int[] yearMonthAndDay = DateUtils + .getYearMonthAndDayByDateTime(datetime); + DatePickerDialog dlg = new DatePickerDialog(TaskActivity.this, + new PullDateListener(datetime, todayClickViewId, + todayClickPosition), yearMonthAndDay[0], + yearMonthAndDay[1] - 1, yearMonthAndDay[2]); + dlg.setTitle(R.string.task_time_pull_dialog_title); + dlg.show(); + } else { + Toast.makeText(TaskActivity.this, "޷Ƴ", + Toast.LENGTH_SHORT).show(); + } + return true; + } + return super.onContextItemSelected(item); + } + + private void deleteTodayTaskItem(String pTitle, final String pMsg) { + final Dialog lDialog = new Dialog(TaskActivity.this, + android.R.style.Theme_Translucent_NoTitleBar); + lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + lDialog.setContentView(R.layout.iphone_alert_dialog_layout); + ((TextView) lDialog.findViewById(R.id.dialog_title)).setText(pTitle); + ((TextView) lDialog.findViewById(R.id.dialog_message)).setText(pMsg); + ((Button) lDialog.findViewById(R.id.cancel)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // CANCEL + lDialog.dismiss(); + } + }); + ((Button) lDialog.findViewById(R.id.ok)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // OK + + lDialog.dismiss(); + // ɾ + Log.d("debug", "delete curViewId=" + todayClickViewId); + + deleteAfterTodayInfo(todayClickPosition, + todayClickViewId); + DatabaseUtil.delete(TaskActivity.this, + TaskBean.TABLE_NAME, TaskBean.ID + "=" + + todayClickViewId, null); + + Toast.makeText(TaskActivity.this, "ɾɹ", + Toast.LENGTH_SHORT).show(); + // ˢб + cancelAlarm(todayClickViewId); + todayTaskItemList.remove(todayClickPosition); + todayAdapter.notifyDataSetChanged(); + sendBroadcastToTodayWidget(); + } + }); + lDialog.show(); + } + + private void initViews() { + // ʼͼ + todayView = LayoutInflater.from(TaskActivity.this).inflate( + R.layout.today_task_layout, null); + initTodayAdapter(); + todayTaskList = (ListView) todayView + .findViewById(R.id.today_task_listview); + todayTaskList.setAdapter(todayAdapter); + todayListEmptyView = new TextView(this); + todayListEmptyView.setText(R.string.task_list_view_empty); + todayListEmptyView.setGravity(Gravity.CENTER); + todayListEmptyView.setTextSize(20); // С + todayListEmptyView.setTextColor(0xff000000); + addContentView(todayListEmptyView, new LayoutParams( + LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + todayTaskList.setEmptyView(todayListEmptyView); + + todayTaskList.setOnItemClickListener(new OnItemClickListener() { + + @Override + public void onItemClick(AdapterView parent, View view, + int position, long id) { + // TODO Auto-generated method stub + ContentValues values = new ContentValues(); + if (Integer.parseInt(todayTaskItemList.get(position) + .get(TaskBean.IF_COMPLETE).toString()) == TaskConstant.TASK_NOT_COMPLETE) { + values.put(TaskBean.IF_COMPLETE, TaskConstant.TASK_COMPLETE); + int rows = DatabaseUtil.update(TaskActivity.this, + TaskBean.TABLE_NAME, values, + TaskBean.ID + "=" + id, null); + if (rows > 0) { + // ³ɹ + Map map = todayTaskItemList + .get(position); + map.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_COMPLETE + ""); + todayTaskItemList.set(position, map); + todayAdapter.notifyDataSetChanged(); + // ȡ + cancelAlarm((int) id); + Toast.makeText(TaskActivity.this, "Ѿ", + Toast.LENGTH_SHORT).show(); + } else { + // ʧ + Toast.makeText(TaskActivity.this, "ݿʧ", + Toast.LENGTH_SHORT).show(); + } + } else { + values.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + int rows = DatabaseUtil.update(TaskActivity.this, + TaskBean.TABLE_NAME, values, + TaskBean.ID + "=" + id, null); + if (rows > 0) { + // ³ɹ + Map map = todayTaskItemList + .get(position); + map.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE + ""); + todayTaskItemList.set(position, map); + todayAdapter.notifyDataSetChanged(); + if (Integer.parseInt(todayTaskItemList.get(position) + .get(TaskBean.TIME_ALERT_FLAG).toString()) == TaskConstant.TIME_ALERT) { + String datetime = todayTaskItemList.get(position) + .get(TaskBean.DATETIME).toString(); + int[] val = DateUtils + .getHourAndMinuteByDateTime(datetime); + registerAlarm((int) id, val[0], val[1]); + } + Toast.makeText(TaskActivity.this, "δ", + Toast.LENGTH_SHORT).show(); + } else { + // ʧ + Toast.makeText(TaskActivity.this, "ݿʧ", + Toast.LENGTH_SHORT).show(); + } + } + } + }); + + todayTaskList.setOnItemLongClickListener(new OnItemLongClickListener() { + + @Override + public boolean onItemLongClick(AdapterView parent, View view, + int position, long id) { + // TODO Auto-generated method stub + todayClickViewId = (int) id; + todayClickPosition = position; + todayClickCompleteState = Integer.parseInt(todayTaskItemList + .get(position).get(TaskBean.IF_COMPLETE).toString()); + return false; + } + }); + + todayTaskList + .setOnCreateContextMenuListener(new OnCreateContextMenuListener() { + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + // TODO Auto-generated method stub + menu.setHeaderIcon(android.R.drawable.ic_menu_more); + menu.setHeaderTitle(R.string.task_long_click_menu_title); + menu.add(0, MenuItemId.TASK_ITEM_LONG_CLICK_MENU_EDIT, + 0, R.string.task_long_click_menu_edit); + menu.add(0, + MenuItemId.TASK_ITEM_LONG_CLICK_MENU_DELETE, 0, + R.string.task_long_click_menu_delete); + menu.add(0, MenuItemId.TASK_ITEM_LONG_CLICK_MENU_PULL, + 0, R.string.task_long_click_menu_pull); + } + }); + + // ʼͼ + tomorrowView = LayoutInflater.from(TaskActivity.this).inflate( + R.layout.tomorrow_task_layout, null); + tomorrowTaskName = (TextView) tomorrowView + .findViewById(R.id.textView_datematter); + tomorrowTaskDate = (TextView) tomorrowView + .findViewById(R.id.textView_datemattermessage); + tomorrowTaskLeftDay = (TextView) tomorrowView + .findViewById(R.id.textView_daysleft); + + initTomorrowAdapter(); + + tomorrowTaskList = (ListView) tomorrowView + .findViewById(R.id.tomorrow_task_listview); + tomorrowTaskList.setAdapter(tomorrowAdapter); + tomorrowTaskList.setOnItemClickListener(new OnItemClickListener() { + + @Override + public void onItemClick(AdapterView parent, View view, + int position, final long id) { + tomorrowTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.ID + "=" + id, + null, null, null, null); + Map map = null; + for (tomorrowTaskCur.moveToFirst(); !tomorrowTaskCur + .isAfterLast(); tomorrowTaskCur.moveToNext()) { + map = TaskBean.generateTask(tomorrowTaskCur); + } + DatabaseUtil.closeDatabase(); + String taskName = (String) map.get(TaskBean.TASK_NAME); + String dateStr = (String) map.get(TaskBean.DATETIME); + refreshTomorrowMessageSendMessage(id + "", taskName, dateStr); + } + + }); + tomorrowTaskList + .setOnItemLongClickListener(new OnItemLongClickListener() { + String tPosition; + String tpriority; + String trepeatDays; + int tViewPoition; + int tyear; + int tmonth; + int tday; + int thour; + int tminute; + int differDays = -1; + + @Override + public boolean onItemLongClick(AdapterView parent, + View view, int position, final long id) { + + tViewPoition = position; + + tomorrowTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.ID + "=" + + id, null, null, null, null); + Map map = null; + for (tomorrowTaskCur.moveToFirst(); !tomorrowTaskCur + .isAfterLast(); tomorrowTaskCur.moveToNext()) { + map = TaskBean.generateTask(tomorrowTaskCur); + } + + DatabaseUtil.closeDatabase(); + + tPosition = (String) map.get(TaskBean.POSITION_NAME); + trepeatDays = (String) map.get(TaskBean.REPEAT_DAYS); + final View editTaskView = getViewById(R.layout.edit_tomorrow_task_dialog_layout); + final EditText taskContent = (EditText) editTaskView + .findViewById(R.id.et_tomorrow_task_info); + taskContent.setText(map.get(TaskBean.TASK_NAME) + .toString()); + + int[] yearMonthDay = DateUtils + .getYearMonthDayHourAndMinuteByDateTime(map + .get(TaskBean.DATETIME).toString()); + tyear = yearMonthDay[0]; + tmonth = yearMonthDay[1]; + tday = yearMonthDay[2]; + tminute = yearMonthDay[4]; + thour = yearMonthDay[3]; + DatePicker datePicker = (DatePicker) editTaskView + .findViewById(R.id.dp_tomorrow_task_date); + datePicker.init(tyear, tmonth - 1, tday, + new DatePicker.OnDateChangedListener() { + + @Override + public void onDateChanged(DatePicker view, + int year, + + int monthOfYear, int dayOfMonth) { + + tyear = year; + tmonth = monthOfYear + 1; + tday = dayOfMonth; + + differDays = DateUtils.getDifferDays( + year, monthOfYear + 1, + dayOfMonth); + + if (differDays < 0) + Toast.makeText(TaskActivity.this, + "óɽԺʱ䣡", + Toast.LENGTH_SHORT).show(); + } + + }); + + TimePicker timePicker = (TimePicker) editTaskView + .findViewById(R.id.tp_tomorrow_task_time); + timePicker.setCurrentHour(thour); + timePicker.setCurrentMinute(tminute); + + timePicker + .setOnTimeChangedListener(new OnTimeChangedListener() { + + @Override + public void onTimeChanged(TimePicker view, + int hourOfDay, int minute) { + time = DateUtils.formatTime(hourOfDay, + minute); + thour = hourOfDay; + tminute = minute; + } + }); + + final CheckBox timeAlertCB = (CheckBox) editTaskView + .findViewById(R.id.cb_tomorrow_time_alert); + + timeAlertValue = Integer.parseInt(map.get( + TaskBean.TIME_ALERT_FLAG).toString()); + if (timeAlertValue == TaskConstant.TIME_ALERT) { + timeAlertCB.setChecked(true); + } else { + timeAlertCB.setChecked(false); + } + + timeAlertCB + .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + + @Override + public void onCheckedChanged( + CompoundButton buttonView, + boolean isChecked) { + if (timeAlertCB.isChecked()) { + timeAlertValue = TaskConstant.TIME_ALERT; + tminute = 0; + thour = 0; + } else { + timeAlertValue = TaskConstant.NO_TIME_ALERT; + } + } + }); + + // ½Ի + new AlertDialog.Builder(TaskActivity.this) + .setTitle(R.string.edit_task_dialog_title) + .setIcon(android.R.drawable.ic_menu_edit) + .setView(editTaskView) + .setPositiveButton( + R.string.save_task_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick( + DialogInterface dialog, + int which) { + String taskContentStr = taskContent + .getText().toString() + .trim(); + + if (taskContentStr.equals("")) { + Toast.makeText( + TaskActivity.this, + "ƲΪ", + Toast.LENGTH_SHORT) + .show(); + } else if (differDays < 0) { + Toast.makeText( + TaskActivity.this, + "òδ洢", + Toast.LENGTH_SHORT) + .show(); + } else { + String datetime = DateUtils + .formatDate(tyear, + tmonth, + tday) + + " " + time; + ContentValues values = new ContentValues(); + + values.put( + TaskBean.TASK_NAME, + taskContentStr); + values.put( + TaskBean.DATETIME, + datetime); + values.put( + TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + values.put( + TaskBean.POSITION_NAME, + tPosition); + values.put( + TaskBean.TIME_ALERT_FLAG, + timeAlertValue); + + int rows = DatabaseUtil + .update(TaskActivity.this, + TaskBean.TABLE_NAME, + values, + TaskBean.ID + + "=" + + id, + null); + + if (rows > 0) { + Map map = new HashMap(); + map.put(TaskBean.TASK_NAME, + taskContentStr); + map.put(TaskBean.DATETIME, + datetime); + map.put(TaskBean.POSITION_NAME, + tPosition); + map.put(TaskBean.PRIORITY, + tpriority + ""); + map.put(TaskBean.TIME_ALERT_FLAG, + timeAlertValue + + ""); + map.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE + + ""); + map.put(TaskBean.ID, id + + ""); + map.put(TaskBean.REPEAT_DAYS, + trepeatDays + + ""); + + refreshTomorrowTaskAfterUpdate( + tViewPoition, + map); + Toast.makeText( + TaskActivity.this, + "޸Ļɹ", + Toast.LENGTH_SHORT) + .show(); + + refreshTomorrowMessageSendMessage( + id + "", + taskContentStr, + datetime); + startServiceToFreshTomorrowWidget(); + } else { + Toast.makeText( + TaskActivity.this, + "޸Ļʧ", + Toast.LENGTH_SHORT) + .show(); + } + } + } + }) + .setNeutralButton(R.string.delete_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick( + DialogInterface dialog, + int which) { + final Dialog lDialog = new Dialog( + TaskActivity.this, + android.R.style.Theme_Translucent_NoTitleBar); + lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + lDialog.setContentView(R.layout.iphone_alert_dialog_layout); + ((TextView) lDialog + .findViewById(R.id.dialog_title)) + .setText("ȷɾ˻"); + ((TextView) lDialog + .findViewById(R.id.dialog_message)) + .setText("ɾɹ"); + ((Button) lDialog + .findViewById(R.id.cancel)) + .setOnClickListener(new OnClickListener() { + + public void onClick( + View v) { + lDialog.dismiss(); + } + }); + ((Button) lDialog + .findViewById(R.id.ok)) + .setOnClickListener(new OnClickListener() { + + public void onClick( + View v) { + + lDialog.dismiss(); + // ɾ + + int rows = DatabaseUtil + .delete(TaskActivity.this, + TaskBean.TABLE_NAME, + TaskBean.ID + + "=" + + id, + null); + if (rows > 0) { + Toast.makeText( + TaskActivity.this, + "ɾɹ", + Toast.LENGTH_SHORT) + .show(); + // ˢб + + tomorrowTaskItemList + .remove(tViewPoition); + tomorrowAdapter + .notifyDataSetChanged(); + String taskid = id + + ""; + if (tomorrowTaskMessageID + .equals(taskid)) + refreshTomorrowMessageDelete(); + startServiceToFreshTomorrowWidget(); + } + } + }); + lDialog.show(); + } + + }) + .setNegativeButton(R.string.cancel_dialog_text, + new DialogInterface.OnClickListener() { + + public void onClick( + DialogInterface dialog, + int which) { + + } + + }).create().show(); + return false; + } + }); + + tomorrowListEmptyView = new TextView(this); + tomorrowListEmptyView.setText(R.string.tomorrow_task_list_view_empty); + tomorrowListEmptyView.setGravity(Gravity.CENTER); + tomorrowListEmptyView.setTextSize(20); // С + tomorrowListEmptyView.setTextColor(0xff000000); + addContentView(tomorrowListEmptyView, new LayoutParams( + LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + tomorrowTaskList.setEmptyView(tomorrowListEmptyView); + // if(tomorrowTaskItemList.size() == 0) { + // tomorrowListEmptyView.setVisibility(View.INVISIBLE); + // } + + // ʼͼ + yesterdayView = LayoutInflater.from(TaskActivity.this).inflate( + R.layout.yesterday_task_layout, null); + initYesterdayAdapter(); + yesterdayTaskList = (ListView) yesterdayView + .findViewById(R.id.yesterday_task_listview); + yesterdayTaskList.setAdapter(yesterdayAdapter); + TextView yesterdayDate = (TextView) yesterdayView + .findViewById(R.id.textView_yesterday_date); + yesterdayDate.setText(DateUtils.timeDetail("yesterday")); + yesterdayListEmptyView = new TextView(this); + yesterdayListEmptyView.setText(R.string.yesterday_task_list_view_empty); + yesterdayListEmptyView.setGravity(Gravity.CENTER); + yesterdayListEmptyView.setTextSize(20); // С + yesterdayListEmptyView.setTextColor(0xff000000); + addContentView(yesterdayListEmptyView, new LayoutParams( + LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + yesterdayTaskList.setEmptyView(yesterdayListEmptyView); + + // ж + if (tomorrowTaskItemList.size() == 0) { + tomorrowListEmptyView.setVisibility(View.INVISIBLE); + } + if (todayTaskItemList.size() == 0) { + todayListEmptyView.setVisibility(View.INVISIBLE); + } + } + + // ʼϢList + private void initTodayListItem() { + // ѯݿ,ȡϢ + todayTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.DATETIME + " LIKE ?", + new String[] { DateUtils.now() + "%" }, null, null, TaskBean.ID + + " ASC"); + + // Ϣ + + for (todayTaskCur.moveToFirst(); !todayTaskCur.isAfterLast(); todayTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(todayTaskCur); + todayTaskItemList.add(map); + } + + DatabaseUtil.closeDatabase(); + } + + // ʼAdapter + private void initTodayAdapter() { + todayTaskItemList = new ArrayList>(); + initTodayListItem(); + todayAdapter = new TodayTaskListViewAdapter(); + } + + private void initTomorrowListItem() { + tomorrowTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.IF_FUTURE + "=" + + TaskConstant.IS_FUTURE + " AND " + TaskBean.PARENT + + "=" + TaskConstant.IS_PARENT, null, null, null, + TaskBean.ID + " ASC"); + int x = Integer.MAX_VALUE; + String taskName = null; + String dateStr = null; + String id = null; + // δϢ + for (tomorrowTaskCur.moveToFirst(); !tomorrowTaskCur.isAfterLast(); tomorrowTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(tomorrowTaskCur); + tomorrowTaskItemList.add(map); + Log.d("debug", "future map: δϢ"); + + String date = (String) map.get(TaskBean.DATETIME); + int[] yearMonthDay = DateUtils + .getYearMonthDayHourAndMinuteByDateTime(date); + int taskYear = yearMonthDay[0]; + int taskMonth = yearMonthDay[1]; + int taskDay = yearMonthDay[2]; + + String datetime = DateUtils + .formatDate(taskYear, taskMonth, taskDay); + + int differ = x + 1; + try { + differ = DateUtils.getDifferDays(datetime); + } catch (ParseException e) { + e.printStackTrace(); + } + + if (differ <= x) { + taskName = (String) map.get(TaskBean.TASK_NAME); + dateStr = (String) map.get(TaskBean.DATETIME); + id = (String) map.get(TaskBean.ID); + x = differ; + } + } + Log.d("debug", "initTomorrowListItem"); + DatabaseUtil.closeDatabase(); + + initTomorrowMessage(id, taskName, dateStr); + } + + private static final int REFRESH_TOMORROW_MESSAGE = 0; + + private Handler refreshHandler = new Handler() { + + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + // + switch (msg.what) { + case REFRESH_TOMORROW_MESSAGE: + Bundle bundle = msg.getData(); + initTomorrowMessage(bundle.getString(TaskBean.ID), + bundle.getString(TaskBean.TASK_NAME), + bundle.getString(TaskBean.DATETIME)); + break; + } + } + + }; + + private void initTomorrowMessage(String id, String name, String date) { + tomorrowTaskMessageID = id; + int taskYear; + int taskMonth; + int taskDay; + if (name == null) { + tomorrowTaskName.setText("롭"); + tomorrowTaskDate.setText(DateUtils.timeDetail("TOMORROW")); + tomorrowTaskLeftDay.setText("X"); + } else { + int[] yearMonthDay = DateUtils + .getYearMonthDayHourAndMinuteByDateTime(date); + + taskYear = yearMonthDay[0]; + taskMonth = yearMonthDay[1]; + taskDay = yearMonthDay[2]; + + String taskcontent = "" + name + "ʣ"; + + String datetime = DateUtils + .formatDate(taskYear, taskMonth, taskDay); + String weekDay = DateUtils.getWeekDay(datetime); + String daysmatter = "գ" + datetime + " " + weekDay; + + int differ = 0; + try { + differ = DateUtils.getDifferDays(datetime); + } catch (ParseException e) { + e.printStackTrace(); + } + + tomorrowTaskName.setText(taskcontent); + tomorrowTaskDate.setText(daysmatter); + tomorrowTaskLeftDay.setText(differ + ""); + } + } + + private void initTomorrowAdapter() { + tomorrowTaskItemList = new ArrayList>(); + initTomorrowListItem(); + tomorrowAdapter = new TomorrowTaskListViewAdapter(); + } + + private void refreshTodayTaskAfterInsert(Map map) { + // ˢб + todayTaskItemList.add(map); + todayAdapter.notifyDataSetChanged(); + } + + private void refreshTomorrowTaskAfterInsert(Map map) { + // ˢб + tomorrowTaskItemList.add(map); + tomorrowAdapter.notifyDataSetChanged(); + } + + // private void refreshYesterdayTaskAfterInsert(Map map) { + // // ˢб + // yesterdayTaskItemList.add(map); + // yesterdayAdapter.notifyDataSetChanged(); + // } + + private void refreshTodayTaskAfterUpdate(int position, + Map map) { + // + todayTaskItemList.set(position, map); + todayAdapter.notifyDataSetChanged(); + } + + private void refreshTomorrowTaskAfterUpdate(int position, + Map map) { + // + tomorrowTaskItemList.set(position, map); + tomorrowAdapter.notifyDataSetChanged(); + } + + private void initYesterdayAdapter() { + yesterdayTaskItemList = new ArrayList>(); + initYesterdayListItem(); + yesterdayAdapter = new YesterdayTaskListViewAdapter(); + } + + private void initYesterdayListItem() { + // ѯݿ,ȡϢ + yesterdayTaskCur = DatabaseUtil.query(TaskActivity.this, + TaskBean.TABLE_NAME, null, TaskBean.DATETIME + " LIKE ?", + new String[] { DateUtils.yesterday() + "%" }, null, null, + TaskBean.ID + " ASC"); + + // Ϣ + + for (yesterdayTaskCur.moveToFirst(); !yesterdayTaskCur.isAfterLast(); yesterdayTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(yesterdayTaskCur); + yesterdayTaskItemList.add(map); + + } + + DatabaseUtil.closeDatabase(); + } + + // ȡview + private View getViewById(int resourceId) { + LayoutInflater inflater = LayoutInflater.from(this); + return inflater.inflate(resourceId, null); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // TODO Auto-generated method stub + switch (item.getItemId()) { + //ʱ䶼ȥ + case MenuItemId.MENU_ITEM_TIME: + Intent tt_intent = new Intent(Intent.ACTION_MAIN); + tt_intent.setComponent(new ComponentName("com.android.settings","com.android.settings.UsageStats")); + //intent.setClassName("com.android.settings", "UsageStats"); + startActivity(tt_intent); + break; + // ʹʱ + case MenuItemId.MENU_ITEM_LONG: + Intent tg_intent = new Intent(TaskActivity.this, + HelpActivity.class); + startActivity(tg_intent); + break; + // ʹʱ + case MenuItemId.MENU_ITEM_LIMIT: + Intent tl_intent = new Intent(TaskActivity.this, + HelpActivity.class); + startActivity(tl_intent); + break; + // + case MenuItemId.MENU_ITEM_SETUP: + Intent ti_intent = new Intent(TaskActivity.this, + SetupActivity.class); + startActivity(ti_intent); + break; + // + case MenuItemId.MENU_ITEM_HELP: + Intent tx_intent = new Intent(TaskActivity.this, HelpActivity.class); + startActivity(tx_intent); + break; + // + case MenuItemId.MENU_ITEM_ABOUT: + Intent ty_intent = new Intent(); + ty_intent.setClass(TaskActivity.this, AboutActivity.class); + startActivity(ty_intent); + break; + } + return true; + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + + MenuItem menu_goal = menu.add(0, MenuItemId.MENU_ITEM_TIME, 0, + R.string.menu_time); + menu_goal.setIcon(android.R.drawable.ic_menu_directions); + + MenuItem menu_limit = menu.add(0, MenuItemId.MENU_ITEM_LIMIT, 0, + R.string.menu_limit); + menu_limit.setIcon(android.R.drawable.ic_menu_recent_history); + + MenuItem menu_long = menu.add(0, MenuItemId.MENU_ITEM_LONG, 0, + R.string.menu_long); + menu_long.setIcon(android.R.drawable.ic_lock_lock); + + MenuItem menu_setup = menu.add(0, MenuItemId.MENU_ITEM_SETUP, 0, + R.string.menu_setup); + menu_setup.setIcon(android.R.drawable.ic_menu_preferences); + + MenuItem menu_help = menu.add(0, MenuItemId.MENU_ITEM_HELP, 0, + R.string.menu_help); + menu_help.setIcon(android.R.drawable.ic_menu_help); + + MenuItem menu_about = menu.add(0, MenuItemId.MENU_ITEM_ABOUT, 0, + R.string.menu_about); + menu_about.setIcon(android.R.drawable.ic_menu_info_details); + + return true; + } + + public boolean onTouchEvent(MotionEvent event) { + return gestureDetector.onTouchEvent(event); + } + + public boolean onDown(MotionEvent e) { + // TODO Auto-generated method stub + return false; + } + + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) { + // TODO Auto-generated method stub + if (e1.getX() - e2.getX() > MotionEventConstant.getFlingMinDistance() + && Math.abs(velocityX) > MotionEventConstant + .getFlingMinVelocity()) { + + if (index != END_INDEX) { + // playSound(Sound.OPEN_SOUND); + this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, + R.anim.push_left_in)); + this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, + R.anim.push_left_out)); + this.flipper.showNext(); + index++; + + if (index != MIDDLE_INDEX) { + if (todayTaskItemList.size() == 0) { + todayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_left_out)); + todayListEmptyView.setVisibility(View.INVISIBLE); + } + } else { + if (yesterdayTaskItemList.size() == 0) { + yesterdayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_left_out)); + yesterdayListEmptyView.setVisibility(View.INVISIBLE); + } + if (todayTaskItemList.size() == 0) { + todayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_left_in)); + todayListEmptyView.setVisibility(View.VISIBLE); + } + } + if (index == END_INDEX) { + if (tomorrowTaskItemList.size() == 0) { + tomorrowListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_left_in)); + tomorrowListEmptyView.setVisibility(View.VISIBLE); + } + } + + return true; + } + } else if (e2.getX() - e1.getX() > MotionEventConstant + .getFlingMinDistance() + && Math.abs(velocityX) > MotionEventConstant + .getFlingMinVelocity()) { + if (index != START_INDEX) { + // playSound(Sound.OPEN_SOUND); + this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, + R.anim.push_right_in)); + this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, + R.anim.push_right_out)); + this.flipper.showPrevious(); + index--; + if (index != MIDDLE_INDEX) { + if (todayTaskItemList.size() == 0) { + todayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_right_out)); + todayListEmptyView.setVisibility(View.INVISIBLE); + } + if (yesterdayTaskItemList.size() == 0) { + yesterdayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_right_in)); + yesterdayListEmptyView.setVisibility(View.VISIBLE); + } + } else { + if (todayTaskItemList.size() == 0) { + todayListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_right_in)); + todayListEmptyView.setVisibility(View.VISIBLE); + } + if (tomorrowTaskItemList.size() == 0) { + tomorrowListEmptyView.startAnimation(AnimationUtils + .loadAnimation(this, R.anim.push_right_out)); + tomorrowListEmptyView.setVisibility(View.INVISIBLE); + } + } + return true; + } + } + return false; + } + + public void onLongPress(MotionEvent e) { + // TODO Auto-generated method stub + + } + + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, + float distanceY) { + return false; + } + + public void onShowPress(MotionEvent e) { + // TODO Auto-generated method stub + + } + + public boolean onSingleTapUp(MotionEvent e) { + // TODO Auto-generated method stub + return false; + } + + private class TodayTaskListViewAdapter extends BaseAdapter { + + final class TaskListItemView { + public TextView taskInfo; // + public ImageView timeAlert; // ʱͼƬ + public TextView taskTimeAndPositionInfo; // ʱ͵صϢ + public ImageView taskcompleteState; // ״̬ͼƬ + public ImageView taskStarRank; // ȼͼƬ + public TextView taskRepeatDays; // + } + + public int getCount() { + // TODO Auto-generated method stub + return todayTaskItemList.size(); + } + + public Object getItem(int arg0) { + // TODO Auto-generated method stub + return todayTaskItemList.get(arg0); + } + + public long getItemId(int position) { + // TODO Auto-generated method stub + return Integer.parseInt(todayTaskItemList.get(position) + .get(TaskBean.ID).toString()); + } + + public View getView(final int position, View convertView, + ViewGroup parent) { + // TODO Auto-generated method stub + TaskListItemView listItemView = null; + if (convertView == null) { + listItemView = new TaskListItemView(); + convertView = LayoutInflater.from(TaskActivity.this).inflate( + R.layout.today_task_item, null); + // ȡؼ + listItemView.taskInfo = (TextView) convertView + .findViewById(R.id.today_task_info); + listItemView.timeAlert = (ImageView) convertView + .findViewById(R.id.today_time_alert); + listItemView.taskTimeAndPositionInfo = (TextView) convertView + .findViewById(R.id.today_task_time_position_textview); + listItemView.taskcompleteState = (ImageView) convertView + .findViewById(R.id.today_task_complete_state); + listItemView.taskStarRank = (ImageView) convertView + .findViewById(R.id.today_star_rank); + listItemView.taskRepeatDays = (TextView) convertView + .findViewById(R.id.today_repeat_days); + // ÿؼconvertView + convertView.setTag(listItemView); + } else { + listItemView = (TaskListItemView) convertView.getTag(); + } + + // + listItemView.taskInfo.setText((String) todayTaskItemList.get( + position).get(TaskBean.TASK_NAME)); + + // + listItemView.taskRepeatDays.setText((String) todayTaskItemList.get( + position).get(TaskBean.REPEAT_DAYS)); + + // ʱ͵صϢ + String positionName = (String) todayTaskItemList.get(position).get( + TaskBean.POSITION_NAME); + String timeAndPosition = "ʱ:" + + DateUtils.getTaskTime((String) todayTaskItemList.get( + position).get(TaskBean.DATETIME)); + if (!positionName.equals("")) { + timeAndPosition += (" ص:" + positionName); + } + listItemView.taskTimeAndPositionInfo.setText(timeAndPosition); + + Log.d("debug", + "position = " + + position + + " timeAlertFlag = " + + (String) todayTaskItemList.get(position).get( + TaskBean.TIME_ALERT_FLAG)); + + // ʱͼƬǷʾ timeAlert + if (Integer.parseInt(((String) todayTaskItemList.get(position).get( + TaskBean.TIME_ALERT_FLAG))) == TaskConstant.NO_TIME_ALERT) { + listItemView.timeAlert.setVisibility(View.INVISIBLE); + Log.d("debug", "ʱѰťʾ"); + } else { + listItemView.timeAlert.setVisibility(View.VISIBLE); + } + + // ȼͼƬ taskStarRank + switch (Integer.parseInt(todayTaskItemList.get(position) + .get(TaskBean.PRIORITY).toString())) { + case TaskConstant.RANK_FOURTH: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star1); + break; + case TaskConstant.RANK_THIRD: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star2); + break; + case TaskConstant.RANK_SECOND: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star3); + break; + case TaskConstant.RANK_FIRST: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star4); + break; + } + + if (TaskConstant.TASK_NOT_COMPLETE == Integer + .parseInt(todayTaskItemList.get(position) + .get(TaskBean.IF_COMPLETE).toString())) { + listItemView.taskcompleteState + .setBackgroundResource(R.drawable.theme_checked); + listItemView.taskTimeAndPositionInfo.setTextColor(0xff000000); + listItemView.taskInfo.setTextColor(0xff000000); + } else { + listItemView.taskcompleteState + .setBackgroundResource(R.drawable.theme_checked_disable); + listItemView.taskTimeAndPositionInfo.setTextColor(0xff808080); + listItemView.taskInfo.setTextColor(0xff808080); + } + + return convertView; + } + } + + private class TomorrowTaskListViewAdapter extends BaseAdapter { + + private LayoutInflater layoutInflater; + + final class TaskListItemView { + public TextView taskInfo; // + public TextView leftday; + } + + public TomorrowTaskListViewAdapter() { + this.layoutInflater = LayoutInflater.from(TaskActivity.this); + } + + public int getCount() { + // TODO Auto-generated method stub + return tomorrowTaskItemList.size(); + } + + public Object getItem(int arg0) { + // TODO Auto-generated method stub + return tomorrowTaskItemList.get(arg0); + } + + public long getItemId(int position) { + // TODO Auto-generated method stub + return Integer.parseInt(tomorrowTaskItemList.get(position) + .get(TaskBean.ID).toString()); + } + + public View getView(final int position, View convertView, + ViewGroup parent) { + // TODO Auto-generated method stub + TaskListItemView listItemView = null; + if (convertView == null) { + listItemView = new TaskListItemView(); + convertView = layoutInflater.inflate( + R.layout.tomorrow_task_item, null); + // ȡؼ + listItemView.taskInfo = (TextView) convertView + .findViewById(R.id.tomorrow_item_textView_datematter); + listItemView.leftday = (TextView) convertView + .findViewById(R.id.tomorrow_item_textView_daysleft); + // ÿؼconvertView + convertView.setTag(listItemView); + } else { + listItemView = (TaskListItemView) convertView.getTag(); + } + + // + String x = "" + + (String) tomorrowTaskItemList.get(position).get( + TaskBean.TASK_NAME) + "ʣ"; + listItemView.taskInfo.setText(x); + // ʣ + + String datetime = (String) tomorrowTaskItemList.get(position).get( + TaskBean.DATETIME); + String[] spliteOnce = datetime.split(" ", 2); + String yearmd = spliteOnce[0]; + int differdays = 0; + try { + differdays = DateUtils.getDifferDays(yearmd); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + String differ = differdays + ""; + listItemView.leftday.setText(differ); + + Log.d("debug", + "tomorrowposition = " + + position + + " timeAlertFlag = " + + (String) tomorrowTaskItemList.get(position).get( + TaskBean.TIME_ALERT_FLAG)); + + return convertView; + } + } + + private class YesterdayTaskListViewAdapter extends BaseAdapter { + + private int taskId = 0; + private int curPosition = 0; + + final class TaskListItemView { + public TextView taskInfo; // + public TextView taskTimeAndPositionInfo; // ʱ͵صϢ + public Button taskEditBtn; // ༭ť + public ImageView taskStarRank; // ȼͼƬ + } + + public int getCount() { + // TODO Auto-generated method stub + return yesterdayTaskItemList.size(); + } + + public Object getItem(int arg0) { + // TODO Auto-generated method stub + return yesterdayTaskItemList.get(arg0); + } + + public long getItemId(int position) { + // TODO Auto-generated method stub + return Integer.parseInt(yesterdayTaskItemList.get(position) + .get(TaskBean.ID).toString()); + } + + public View getView(final int position, View convertView, + ViewGroup parent) { + // TODO Auto-generated method stub + TaskListItemView listItemView = null; + if (convertView == null) { + listItemView = new TaskListItemView(); + convertView = LayoutInflater.from(TaskActivity.this).inflate( + R.layout.yesterday_task_item, null); + // ȡؼ + listItemView.taskInfo = (TextView) convertView + .findViewById(R.id.yesterday_task_info); + listItemView.taskTimeAndPositionInfo = (TextView) convertView + .findViewById(R.id.yesterday_task_time_position_textview); + listItemView.taskEditBtn = (Button) convertView + .findViewById(R.id.yesterday_task_edit_btn); + listItemView.taskStarRank = (ImageView) convertView + .findViewById(R.id.yesterday_star_rank); + // ÿؼconvertView + convertView.setTag(listItemView); + } else { + listItemView = (TaskListItemView) convertView.getTag(); + } + + // + listItemView.taskInfo.setText((String) yesterdayTaskItemList.get( + position).get(TaskBean.TASK_NAME)); + + // ʱ͵صϢ + String positionName = (String) yesterdayTaskItemList.get(position) + .get(TaskBean.POSITION_NAME); + String timeAndPosition = "ʱ:" + + DateUtils.getTaskTime((String) yesterdayTaskItemList.get( + position).get(TaskBean.DATETIME)); + if (!positionName.equals("")) { + timeAndPosition += (" ص:" + positionName); + } + listItemView.taskTimeAndPositionInfo.setText(timeAndPosition); + + Log.d("debug", + "position = " + + position + + " timeAlertFlag = " + + (String) yesterdayTaskItemList.get(position).get( + TaskBean.TIME_ALERT_FLAG)); + + // ȼͼƬ taskStarRank + switch (Integer.parseInt(yesterdayTaskItemList.get(position) + .get(TaskBean.PRIORITY).toString())) { + case TaskConstant.RANK_FOURTH: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star1); + break; + case TaskConstant.RANK_THIRD: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star2); + break; + case TaskConstant.RANK_SECOND: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star3); + break; + case TaskConstant.RANK_FIRST: + listItemView.taskStarRank + .setBackgroundResource(R.drawable.star4); + break; + } + + if (TaskConstant.TASK_NOT_COMPLETE == Integer + .parseInt(yesterdayTaskItemList.get(position) + .get(TaskBean.IF_COMPLETE).toString())) { + listItemView.taskTimeAndPositionInfo.setTextColor(0xff000000); + listItemView.taskInfo.setTextColor(0xff000000); + } else { + listItemView.taskTimeAndPositionInfo.setTextColor(0xff808080); + listItemView.taskInfo.setTextColor(0xff808080); + } + + // + // listItemView.taskInfo.setTypeface(typeFace); + + listItemView.taskEditBtn.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + + // ɾ + // ȡid + taskId = Integer.parseInt(yesterdayTaskItemList + .get(position).get(TaskBean.ID).toString()); + curPosition = position; + // + showCustomMessage("ȷɾ", "ȷɾ˻"); + } + }); + return convertView; + } + + private void showCustomMessage(String pTitle, final String pMsg) { + final Dialog lDialog = new Dialog(TaskActivity.this, + android.R.style.Theme_Translucent_NoTitleBar); + lDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + lDialog.setContentView(R.layout.iphone_alert_dialog_layout); + ((TextView) lDialog.findViewById(R.id.dialog_title)) + .setText(pTitle); + ((TextView) lDialog.findViewById(R.id.dialog_message)) + .setText(pMsg); + ((Button) lDialog.findViewById(R.id.cancel)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // CANCEL + lDialog.dismiss(); + } + }); + ((Button) lDialog.findViewById(R.id.ok)) + .setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // write your code to do things after users clicks + // OK + lDialog.dismiss(); + // ɾ + DatabaseUtil.delete(TaskActivity.this, + TaskBean.TABLE_NAME, TaskBean.ID + "=" + + taskId, null); + + Toast.makeText(TaskActivity.this, "ɾɹ", + Toast.LENGTH_SHORT).show(); + // ˢб + yesterdayTaskItemList.remove(curPosition); + yesterdayAdapter.notifyDataSetChanged(); + } + }); + lDialog.show(); + + } + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/TaskAlertActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/TaskAlertActivity.java new file mode 100644 index 0000000..939e5d6 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/TaskAlertActivity.java @@ -0,0 +1,119 @@ +package com.timebetter.activity; + +import android.app.Activity; +import android.app.KeyguardManager; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.Window; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.TextView; + +import com.timebetter.activity.R; +import com.timebetter.alarm.Alarm; +import com.timebetter.bean.TaskBean; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; +import com.timebetter.service.AlertService; + +public class TaskAlertActivity extends Activity { + + private TextView alertViewContent; + private Cursor databaseCur; + private Button confirmBtn; + private int taskId; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + + Intent i=new Intent(this,AlertService.class); + startService(i); + + KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); + km.newKeyguardLock("Tag For Debug").disableKeyguard(); + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(LayoutInflater.from(this).inflate( + R.layout.task_alert_layout, null)); + + alertViewContent = (TextView) findViewById(R.id.task_alert_dialog_content); + confirmBtn = (Button) findViewById(R.id.task_alert_dialog_confirm_btn); + confirmBtn.requestFocus(); + confirmBtn.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + Intent intent = new Intent(Alarm.ALARM_CANCEL_ACTION); + intent.putExtra(Alarm.ID, taskId); + Alarm.disableAlarm(TaskAlertActivity.this, intent); + Intent i= new Intent(TaskAlertActivity.this,AlertService.class); + stopService(i); + finish(); + } + }); + + taskId = getIntent().getIntExtra(TaskBean.ID, 1); + String taskName = ""; + String taskPosition = ""; + String dateTime = ""; + databaseCur = DatabaseUtil.query(TaskAlertActivity.this, + TaskBean.TABLE_NAME, new String[] { TaskBean.POSITION_NAME, + TaskBean.TASK_NAME, TaskBean.DATETIME }, TaskBean.ID + + "=" + taskId, null, null, null, null); + for (databaseCur.moveToFirst(); !databaseCur.isAfterLast(); databaseCur + .moveToNext()) { + taskName = databaseCur.getString(databaseCur + .getColumnIndex(TaskBean.TASK_NAME)); + taskPosition = databaseCur.getString(databaseCur + .getColumnIndex(TaskBean.POSITION_NAME)); + dateTime = databaseCur.getString(databaseCur + .getColumnIndex(TaskBean.DATETIME)); + } + DatabaseUtil.closeDatabase(); + + StringBuffer sb = new StringBuffer(); + sb.append(":" + taskName + "\n"); + sb.append("ʱ:" + DateUtils.getTaskTime(dateTime) + "\n"); + sb.append("ص:" + (taskPosition.equals("") ? "δ֪" : taskPosition)); + alertViewContent.setText(sb.toString()); + + getWindow().addFlags( + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + // TODO Auto-generated method stub + if (KeyEvent.KEYCODE_HOME == keyCode + || KeyEvent.KEYCODE_BACK == keyCode) { + return true; + } + return super.onKeyDown(keyCode, event); + } + + @Override + protected void onDestroy() { + // TODO Auto-generated method stub + super.onDestroy(); + } + + @Override + public void onAttachedToWindow() { + // TODO Auto-generated method stub + this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); + super.onAttachedToWindow(); + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/activity/TaskNotifyActivity.java b/代码/TimeBetter-master/src/com/timebetter/activity/TaskNotifyActivity.java new file mode 100644 index 0000000..72887f2 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/activity/TaskNotifyActivity.java @@ -0,0 +1,17 @@ +package com.timebetter.activity; + +import com.timebetter.activity.R; + +import android.app.Activity; +import android.os.Bundle; + +public class TaskNotifyActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + setContentView(R.layout.task_notify_layout); + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/adapter/HistoryGoalAdapter.java b/代码/TimeBetter-master/src/com/timebetter/adapter/HistoryGoalAdapter.java new file mode 100644 index 0000000..48b95b4 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/adapter/HistoryGoalAdapter.java @@ -0,0 +1,103 @@ +package com.timebetter.adapter; +import com.timebetter.view.HistoryGoalGalleryFlow; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PorterDuffXfermode; +import android.graphics.Bitmap.Config; +import android.graphics.PorterDuff.Mode; +import android.graphics.Shader.TileMode; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; + + +public class HistoryGoalAdapter extends BaseAdapter { + int mGalleryItemBackground; + private Context mContext; + private Integer[] mImageIds; + private ImageView[] mImages; + + public HistoryGoalAdapter(Context c, Integer[] ImageIds) { + mContext = c; + mImageIds = ImageIds; + mImages = new ImageView[mImageIds.length]; + } + + public boolean createReflectedImages() { + final int reflectionGap = 4; + int index = 0; + + for (int imageId : mImageIds) { + Bitmap originalImage = BitmapFactory.decodeResource(mContext + .getResources(), imageId); + int width = originalImage.getWidth(); + int height = originalImage.getHeight(); + + Matrix matrix = new Matrix(); + matrix.preScale(1, -1); + + Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, + height / 2, width, height / 2, matrix, false); + + Bitmap bitmapWithReflection = Bitmap.createBitmap(width/2, + height/2, Config.ARGB_8888); + + Canvas canvas = new Canvas(bitmapWithReflection); + + canvas.drawBitmap(originalImage, 0, 0, null); + + Paint deafaultPaint = new Paint(); + canvas.drawRect(0, height, width, height + reflectionGap, + deafaultPaint); + + canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null); + + Paint paint = new Paint(); + LinearGradient shader = new LinearGradient(0, originalImage + .getHeight(), 0, bitmapWithReflection.getHeight() + + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP); + + paint.setShader(shader); + + paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); + + canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + + reflectionGap, paint); + + ImageView imageView = new ImageView(mContext); + imageView.setImageBitmap(bitmapWithReflection); + imageView.setLayoutParams(new HistoryGoalGalleryFlow.LayoutParams(180, 240)); +// imageView.setScaleType(ScaleType.MATRIX); + mImages[index++] = imageView; + } + return true; + } + + public int getCount() { + return mImageIds.length; + } + + public Object getItem(int position) { + return position; + } + + public long getItemId(int position) { + return position; + } + + public View getView(int position, View convertView, ViewGroup parent) { + return mImages[position]; + } + + public float getScale(boolean focused, int offset) { + return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset))); + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/adapter/TomorrowTaskListViewAdapter.java b/代码/TimeBetter-master/src/com/timebetter/adapter/TomorrowTaskListViewAdapter.java new file mode 100644 index 0000000..5e0428c --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/adapter/TomorrowTaskListViewAdapter.java @@ -0,0 +1,146 @@ +package com.timebetter.adapter; + +import java.util.List; +import java.util.Map; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.Toast; + +import com.timebetter.activity.R; +import com.timebetter.view.AlwaysMarqueeTextView; +import com.timebetter.view.IphoneAlertDialog; + +public class TomorrowTaskListViewAdapter extends BaseAdapter { + + private Context context; + private List> taskListItems; //бϢ + private LayoutInflater layoutInflater; + + static final class TaskListItemView { + public AlwaysMarqueeTextView taskInfo; // + public ImageView timeAlert; //ʱͼƬ + public ImageView positionAlert; //صͼƬ + public AlwaysMarqueeTextView taskTimeAndPositionInfo; //ʱ͵صϢ + public Button taskEditBtn; //༭ť + public Button taskDeleteBtn; //ɾť + public Button taskPullBtn; //ǰť + public ImageView taskStarRank; //ȼͼƬ + } + + public TomorrowTaskListViewAdapter(Context context, List> taskListItems) { + this.context = context; + this.layoutInflater = LayoutInflater.from(context); + this.taskListItems = taskListItems; + } + + public int getCount() { + // TODO Auto-generated method stub + return taskListItems.size(); + } + + public Object getItem(int arg0) { + // TODO Auto-generated method stub + return taskListItems.get(arg0); + } + + public long getItemId(int position) { + // TODO Auto-generated method stub + return position; + } + + public View getView(int position, View convertView, ViewGroup parent) { + // TODO Auto-generated method stub + TaskListItemView listItemView = null; + if (convertView == null) { + listItemView = new TaskListItemView(); + convertView = layoutInflater.inflate(R.layout.tomorrow_task_item, null); + // ȡؼ +// listItemView.taskInfo = (AlwaysMarqueeTextView) convertView +// .findViewById(R.id.tomorrow_task_info); +// listItemView.timeAlert = (ImageView) convertView +// .findViewById(R.id.tomorrow_time_alert); +// listItemView.positionAlert = (ImageView) convertView +// .findViewById(R.id.tomorrow_position_alert); +// listItemView.taskTimeAndPositionInfo = (AlwaysMarqueeTextView) convertView +// .findViewById(R.id.tomorrow_task_time_position_textview); +// listItemView.taskEditBtn = (Button) convertView +// .findViewById(R.id.tomorrow_task_edit_btn); +// listItemView.taskDeleteBtn = (Button) convertView +// .findViewById(R.id.tomorrow_task_delete_btn); +// listItemView.taskPullBtn = (Button) convertView +// .findViewById(R.id.tomorrow_task_pull_btn); +// listItemView.taskStarRank = (ImageView) convertView +// .findViewById(R.id.tomorrow_star_rank); + // ÿؼconvertView + convertView.setTag(listItemView); + } else { + listItemView = (TaskListItemView) convertView.getTag(); + } + + // + listItemView.taskInfo.setText((String)taskListItems.get(position).get("taskInfo")); + + // ʱ͵صϢ + String timeAndPosition = "ʱ䣺"+(String)taskListItems.get(position).get("time")+" ص㣺"+(String)taskListItems.get(position).get("position"); + listItemView.taskTimeAndPositionInfo.setText(timeAndPosition); + + // ʱͼƬǷʾ timeAlert + + // õصͼƬǷʾ positionAlert + + // ȼͼƬ taskStarRank + switch(Integer.parseInt(taskListItems.get(position).get("taskRank").toString())) { + case 1: + listItemView.taskStarRank.setBackgroundResource(R.drawable.star1); + break; + case 2: + listItemView.taskStarRank.setBackgroundResource(R.drawable.star2); + break; + case 3: + listItemView.taskStarRank.setBackgroundResource(R.drawable.star3); + break; + case 4: + listItemView.taskStarRank.setBackgroundResource(R.drawable.star4); + break; + } + + //༭ť + listItemView.taskEditBtn.setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // TODO Auto-generated method stub + Toast.makeText(context, "˱༭ť", Toast.LENGTH_SHORT).show(); + } + }); + + //ɾť + listItemView.taskDeleteBtn.setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // TODO Auto-generated method stub +// Toast.makeText(context, "ɾť", Toast.LENGTH_SHORT).show(); + IphoneAlertDialog.showCustomMessage(context, "ȷɾ", "ȷɾ"); + } + }); + + //ǰť + listItemView.taskPullBtn.setOnClickListener(new OnClickListener() { + + public void onClick(View v) { + // TODO Auto-generated method stub + Toast.makeText(context, "ǰť", Toast.LENGTH_SHORT).show(); + + } + }); + + return convertView; + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/alarm/Alarm.java b/代码/TimeBetter-master/src/com/timebetter/alarm/Alarm.java new file mode 100644 index 0000000..979da8d --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/alarm/Alarm.java @@ -0,0 +1,146 @@ +package com.timebetter.alarm; + +import java.util.Calendar; + +import android.app.AlarmManager; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; + +import com.timebetter.activity.R; +import com.timebetter.activity.TaskActivity; +import com.timebetter.bean.TaskBean; +import com.timebetter.date.DateUtils; +import com.timebetter.receiver.PlanBetterReceiver; + +public class Alarm { + + public static final String HOUR = "alarm_hour"; + public static final String MINUTE = "alarm_minute"; + public static final String ID = "alarm_id"; + public static final String DATETIME = "alarm_datetime"; + public static final String ALARM_REGISTRATION_DETAIL_ACTION = "com.planbetter.activity.ALARM_REGISTRATION_DETAIL"; + public static final String ALARM_REGISTRATION_SIMPLE_ACTION = "com.planbetter.activity.ALARM_REGISTRATION_SIMPLE"; + public static final String ALARM_CANCEL_ACTION = "com.planbetter.activity.ALARM_CANCEL"; + public static final String ALARM_REGISTRATION_BUNDLE_TAG = "alarm_registration"; + public static final String ALARM_CANCEL_BUNDLE_TAG = "alarm_cancel"; + + public static final String ALARM_STATE_ICON_STORAGE = "alarm_state_icon"; + + public static void enableAlarm(Context context, Intent intent, String action) { + AlarmManager alarmManager = (AlarmManager) context + .getSystemService(Context.ALARM_SERVICE); + if (action.equals(ALARM_REGISTRATION_DETAIL_ACTION)) { + Bundle bundle = intent + .getBundleExtra(ALARM_REGISTRATION_BUNDLE_TAG); + Intent alarmIntent = new Intent( + PlanBetterReceiver.ALARM_ALERT_ACTION); + alarmIntent.putExtra(TaskBean.ID, bundle.getInt(Alarm.ID)); + Calendar alarmCalendar = Calendar.getInstance(); + alarmCalendar.setTimeInMillis(System.currentTimeMillis()); + alarmCalendar.set(Calendar.HOUR_OF_DAY, bundle.getInt(Alarm.HOUR)); + alarmCalendar.set(Calendar.MINUTE, bundle.getInt(Alarm.MINUTE)); + alarmCalendar.set(Calendar.SECOND, 0); + alarmCalendar.set(Calendar.MILLISECOND, 0); + PendingIntent alarmPendingIntent = PendingIntent.getBroadcast( + context, bundle.getInt(Alarm.ID), alarmIntent, 0); + alarmManager.set(AlarmManager.RTC_WAKEUP, + alarmCalendar.getTimeInMillis(), alarmPendingIntent); + } else if (action.equals(ALARM_REGISTRATION_SIMPLE_ACTION)) { + Bundle bundle = intent + .getBundleExtra(ALARM_REGISTRATION_BUNDLE_TAG); + Intent alarmIntent = new Intent( + PlanBetterReceiver.ALARM_ALERT_ACTION); + alarmIntent.putExtra(TaskBean.ID, bundle.getInt(Alarm.ID)); + int[] val = DateUtils.getYearMonthDayHourAndMinuteByDateTime(bundle + .getString(Alarm.DATETIME)); + Calendar alarmCalendar = Calendar.getInstance(); + alarmCalendar.setTimeInMillis(System.currentTimeMillis()); + alarmCalendar.set(Calendar.YEAR, val[0]); + alarmCalendar.set(Calendar.MONTH, val[1] - 1); + alarmCalendar.set(Calendar.DAY_OF_MONTH, val[2]); + alarmCalendar.set(Calendar.HOUR_OF_DAY, val[3]); + alarmCalendar.set(Calendar.MINUTE, val[4]); + alarmCalendar.set(Calendar.SECOND, 0); + alarmCalendar.set(Calendar.MILLISECOND, 0); + PendingIntent alarmPendingIntent = PendingIntent.getBroadcast( + context, bundle.getInt(Alarm.ID), alarmIntent, 0); + alarmManager.set(AlarmManager.RTC_WAKEUP, + alarmCalendar.getTimeInMillis(), alarmPendingIntent); + + } + increaseAlarmIconSize(context); + setStatusBarIcon(context,true); + } + + private static SharedPreferences getSharedPreferences(Context ctx) { + return PreferenceManager.getDefaultSharedPreferences(ctx); + } + + public static void resetAlarmIconSize(Context context) { + Editor editor = getSharedPreferences(context).edit(); + editor.putInt(ALARM_STATE_ICON_STORAGE, 0); + editor.commit(); + } + + private static void increaseAlarmIconSize(Context context) { + int alarmSize = getSharedPreferences(context).getInt(ALARM_STATE_ICON_STORAGE, 0); + alarmSize ++; + Editor editor = getSharedPreferences(context).edit(); + editor.putInt(ALARM_STATE_ICON_STORAGE, alarmSize); + editor.commit(); + } + + private static void decreaseAlarmIconSize(Context context) { + int alarmSize = getSharedPreferences(context).getInt(ALARM_STATE_ICON_STORAGE, 0); + alarmSize --; + Editor editor = getSharedPreferences(context).edit(); + editor.putInt(ALARM_STATE_ICON_STORAGE, alarmSize); + editor.commit(); + } + + private static boolean checkAlarmIconAvailable(Context context) { + return (getSharedPreferences(context).getInt(ALARM_STATE_ICON_STORAGE, 0)>0); + } + + private static void setAlarmIcon(Context context) { + setStatusBarIcon(context, checkAlarmIconAvailable(context)); + } + + public static void setStatusBarIcon(Context context, boolean enabled) { + Notification n = new Notification(); + Intent viewAlarm = new Intent(context, TaskActivity.class); + PendingIntent intent = PendingIntent.getActivity(context,0, viewAlarm, 0); + n.icon=R.drawable.ic_clock_alarm_selected; + n.setLatestEventInfo(context, "",context.getString(R.string.alarm_notify_text),intent); + n.flags |= Notification.FLAG_SHOW_LIGHTS| Notification.FLAG_ONGOING_EVENT; + n.defaults |= Notification.DEFAULT_LIGHTS; + + NotificationManager nm =(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); + if(enabled) + nm.notify(1216, n); + else + nm.cancel(1216); + } + + public static void disableAlarm(Context context, Intent intent) { + AlarmManager alarmManager = (AlarmManager) context + .getSystemService(Context.ALARM_SERVICE); + int taskId = intent.getIntExtra(Alarm.ID, 0); + Log.d("debug","taskId = "+taskId); + PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, + taskId, new Intent( + PlanBetterReceiver.ALARM_ALERT_ACTION), 0); + alarmManager.cancel(alarmPendingIntent); + + decreaseAlarmIconSize(context); + setAlarmIcon(context); + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/bean/GoalBean.java b/代码/TimeBetter-master/src/com/timebetter/bean/GoalBean.java new file mode 100644 index 0000000..0c7d09d --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/bean/GoalBean.java @@ -0,0 +1,59 @@ +package com.timebetter.bean; + +public class GoalBean { + + public static String TABLE_NAME = "goal"; + public static String ID = "goal_id"; + public static String DATE = "goal_date"; + public static String GOAL_CONTENT = "goal_content"; + public static String GOAL_FLAG = "goal_flag"; + + private int goalId; + private String goalDate; + private String goalCotent; + private int goalFlag; + + public int getGoalId() { + return goalId; + } + + public void setGoalId(int goalId) { + this.goalId = goalId; + } + + public String getGoalDate() { + return goalDate; + } + + public void setGoalDate(String goalDate) { + this.goalDate = goalDate; + } + + public String getGoalCotent() { + return goalCotent; + } + + public void setGoalCotent(String goalCotent) { + this.goalCotent = goalCotent; + } + + public int getGoalFlag() { + return goalFlag; + } + + public void setGoalFlag(int goalFlag) { + this.goalFlag = goalFlag; + } + + public GoalBean(int goalId, String goalDate, String goalCotent, int goalFlag) { + this.goalId = goalId; + this.goalDate = goalDate; + this.goalCotent = goalCotent; + this.goalFlag = goalFlag; + } + + public GoalBean() { + + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/bean/HeartMessage.java b/代码/TimeBetter-master/src/com/timebetter/bean/HeartMessage.java new file mode 100644 index 0000000..88357bd --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/bean/HeartMessage.java @@ -0,0 +1,78 @@ +package com.timebetter.bean; + +import android.database.Cursor; + +import com.timebetter.date.DateUtils; + +public class HeartMessage { + + public static String TABLE_NAME = "heart"; + public static String ID = "heart_id"; + public static String DATE = "heart_date"; + public static String HEART_CONTENT = "heart_content"; + + public static final int MESSAGE_FROM = 0; + public static final int MESSAGE_TO = 1; + + private int heartId; + private String heartDate; + private int direction; + + public HeartMessage() { + + } + + public static HeartMessage generateHeartMessage(Cursor cursor) { + HeartMessage hm = new HeartMessage(); + hm.setDirection(MESSAGE_FROM); + hm.setHeartContent(cursor.getString(cursor.getColumnIndex(HEART_CONTENT))); + hm.setHeartDate(cursor.getString(cursor.getColumnIndex(DATE))); + hm.setHeartId(cursor.getInt(cursor.getColumnIndex(ID))); + return hm; + } + + public HeartMessage(int heartId, String heartDate, String heartContent, int direction) { + this.heartId = heartId; + this.heartDate = heartDate; + this.heartContent = heartContent; + this.direction = direction; + } + + public int getDirection() { + return direction; + } + + public void setDirection(int direction) { + this.direction = direction; + } + + private String heartContent; + + public int getHeartId() { + return heartId; + } + + public void setHeartId(int heartId) { + this.heartId = heartId; + } + + public String getHeartDate() { + return heartDate; + } + + public void setHeartDate(String heartDate) { + this.heartDate = heartDate; + } + + public String getHeartContent() { + return heartContent; + } + + public void setHeartContent(String heartContent) { + this.heartContent = heartContent; + } + + public String getContent() { + return DateUtils.getHeartMessageTimeByDateTime(heartDate)+"\n"+heartContent; + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/bean/SummaryBean.java b/代码/TimeBetter-master/src/com/timebetter/bean/SummaryBean.java new file mode 100644 index 0000000..ae73ca2 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/bean/SummaryBean.java @@ -0,0 +1,60 @@ +package com.timebetter.bean; + +public class SummaryBean { + + public static String TABLE_NAME = "summary"; + public static String ID = "summray_id"; + public static String SCORE_RANK = "score_rank"; + public static String MOOD = "mood"; + public static String DATE = "summary_date"; + + private int summaryId; + private int scoreRank; + private String mood; + private String summaryDate; + + public SummaryBean() { + + } + + public SummaryBean(int summaryId, int scoreRank, String mood, + String summaryDate) { + this.summaryId = summaryId; + this.scoreRank = scoreRank; + this.mood = mood; + this.summaryDate = summaryDate; + } + + public int getSummaryId() { + return summaryId; + } + + public void setSummaryId(int summaryId) { + this.summaryId = summaryId; + } + + public int getScoreRank() { + return scoreRank; + } + + public void setScoreRank(int scoreRank) { + this.scoreRank = scoreRank; + } + + public String getMood() { + return mood; + } + + public void setMood(String mood) { + this.mood = mood; + } + + public String getSummaryDate() { + return summaryDate; + } + + public void setSummaryDate(String summaryDate) { + this.summaryDate = summaryDate; + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/bean/TaskBean.java b/代码/TimeBetter-master/src/com/timebetter/bean/TaskBean.java new file mode 100644 index 0000000..d9767ff --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/bean/TaskBean.java @@ -0,0 +1,162 @@ +package com.timebetter.bean; + +import java.util.HashMap; +import java.util.Map; + +import android.database.Cursor; + +public class TaskBean { + + public static final String TABLE_NAME = "task"; + public static final String ID = "task_id"; + public static final String DATETIME = "task_datetime"; + public static final String TASK_NAME = "task_name"; + public static final String POSITION_NAME = "position_name"; + public static final String TIME_ALERT_FLAG = "time_alert"; + public static final String PRIORITY = "task_priority"; + public static final String IF_COMPLETE = "if_complete"; + public static final String REPEAT_DAYS = "repeat_days"; + public static final String IF_FUTURE = "if_future"; + public static final String PARENT = "parent"; + + public static final String CURVIEWID = "curviewid"; + + private int taskId; + private String taskDateTime; + private String taskName; + private String positionName; + private int timeAlertFlag; + private int taskPriority; + private int ifComplete; + private int repeatDays; + private int parent; + private int ifFuture; + + public int getIfFuture() { + return ifFuture; + } + + public void setIfFuture(int ifFuture) { + this.ifFuture = ifFuture; + } + + public int getParent() { + return parent; + } + + public void setParent(int parent) { + this.parent = parent; + } + + public TaskBean() { + + } + + public static Map generateTask(Cursor cursor) { + + Map map = new HashMap(); + + int id = cursor.getInt(cursor.getColumnIndex(ID)); + map.put(ID, id+""); + String taskName = cursor.getString(cursor.getColumnIndex(TASK_NAME)); + map.put(TASK_NAME, taskName); + String datetime = cursor.getString(cursor.getColumnIndex(DATETIME)); + map.put(DATETIME, datetime); + String positionName = cursor.getString(cursor.getColumnIndex(POSITION_NAME)); + map.put(POSITION_NAME, positionName); + int priority = cursor.getInt(cursor.getColumnIndex(PRIORITY)); + map.put(PRIORITY, priority+""); + int timeAlertFlag = cursor.getInt(cursor.getColumnIndex(TIME_ALERT_FLAG)); + map.put(TIME_ALERT_FLAG, timeAlertFlag+""); + int ifComplete = cursor.getInt(cursor.getColumnIndex(IF_COMPLETE)); + map.put(IF_COMPLETE, ifComplete+""); + int repeatDays = cursor.getInt(cursor.getColumnIndex(REPEAT_DAYS)); + map.put(REPEAT_DAYS, repeatDays+""); + int parent = cursor.getInt(cursor.getColumnIndex(PARENT)); + map.put(PARENT, parent+""); + int ifFuture = cursor.getInt(cursor.getColumnIndex(IF_FUTURE)); + map.put(IF_FUTURE, ifFuture+""); + + return map; + } + + public TaskBean(int taskId, String taskDateTime, String taskName, + String positionName, int timeAlertFlag, + int taskPriority, int ifComplete, int repeatDays, int parent, int ifFuture) { + this.taskId = taskId; + this.taskDateTime = taskDateTime; + this.taskName = taskName; + this.positionName = positionName; + this.timeAlertFlag = timeAlertFlag; + this.taskPriority = taskPriority; + this.ifComplete = ifComplete; + this.repeatDays = repeatDays; + this.parent = parent; + this.ifFuture = ifFuture; + } + + public int getRepeatDays() { + return repeatDays; + } + + public void setRepeatDays(int repeatDays) { + this.repeatDays = repeatDays; + } + + public int getTaskId() { + return taskId; + } + + public void setTaskId(int taskId) { + this.taskId = taskId; + } + + public String getTaskDateTime() { + return taskDateTime; + } + + public void setTaskDateTime(String taskDateTime) { + this.taskDateTime = taskDateTime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + + public int getTimeAlertFlag() { + return timeAlertFlag; + } + + public void setTimeAlertFlag(int timeAlertFlag) { + this.timeAlertFlag = timeAlertFlag; + } + + public int getTaskPriority() { + return taskPriority; + } + + public void setTaskPriority(int taskPriority) { + this.taskPriority = taskPriority; + } + + public int getIfComplete() { + return ifComplete; + } + + public void setIfComplete(int ifComplete) { + this.ifComplete = ifComplete; + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/constant/DayStyle.java b/代码/TimeBetter-master/src/com/timebetter/constant/DayStyle.java new file mode 100644 index 0000000..81b3f7d --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/constant/DayStyle.java @@ -0,0 +1,118 @@ +package com.timebetter.constant; + +import java.util.*; + +public class DayStyle { + // methods + + private static String[] getWeekDayNames() { + String[] vec = new String[10]; + vec[Calendar.SUNDAY] = ""; + vec[Calendar.MONDAY] = "һ"; + vec[Calendar.TUESDAY] = ""; + vec[Calendar.WEDNESDAY] = ""; + vec[Calendar.THURSDAY] = ""; + vec[Calendar.FRIDAY] = ""; + vec[Calendar.SATURDAY] = ""; + + return vec; + } + + public static String getWeekDayName(int iDay) { + return vecStrWeekDayNames[iDay]; + } + + // fields + private final static String[] vecStrWeekDayNames = getWeekDayNames(); + + // fields + /*public final static int iColorFrameHeader = 0xff666666; + public final static int iColorFrameHeaderHoliday = 0xff707070; + public final static int iColorTextHeader = 0xffcccccc; + public final static int iColorTextHeaderHoliday = 0xffd0d0d0; + + public final static int iColorText = 0xffdddddd; + public final static int iColorBkg = 0xff888888; + public final static int iColorTextHoliday = 0xfff0f0f0; + public final static int iColorBkgHoliday = 0xffaaaaaa; + + public final static int iColorTextToday = 0xff002200; + public final static int iColorBkgToday = 0xff88bb88; + + public final static int iColorTextSelected = 0xff001122; + public final static int iColorBkgSelectedLight = 0xffbbddff; + public final static int iColorBkgSelectedDark = 0xff225599; + + public final static int iColorTextFocused = 0xff221100; + public final static int iColorBkgFocusLight = 0xffffddbb; + public final static int iColorBkgFocusDark = 0xffaa5500;*/ + + public final static int iColorFrameHeader = 0xffff00;//0xff4169E1;/*M-Fcolor 0xff4169E1*/ + public final static int iColorFrameHeaderHoliday = 0xffff00;/*S_S color*/ + public final static int iColorTextHeader = 0xff4169E1; + public final static int iColorTextHeaderHoliday = 0xff4169E1; + + public final static int iColorText = 0xff000000; + public final static int iColorBkg = 0x111111;// 0xff00BFFF;//ɫ + public final static int iColorTextHoliday = 0xff000000; + public final static int iColorBkgHoliday = 0x111111;//0xff9933FF;//ɫ + + public final static int iColorTextToday = 0xffE066FF; + public final static int iColorBkgToday = 0xffE0EEE0;//0xffff0000;//ɫ + + public final static int iColorTextSelected = 0xff4169E1; + public final static int iColorBkgSelectedLight = 0xffFFE4B5;//0xffff0099;//ɫ + public final static int iColorBkgSelectedDark = 0xffFFE4B5;//0xffff33CC;//dzɫ + + public final static int iColorTextFocused = 0xff221100; + public final static int iColorBkgFocusLight = 0x111111;//0xff00ff00;//ɫ + public final static int iColorBkgFocusDark = 0x111111;//0xff66ff66;//dzɫ + + + // methods + public static int getColorFrameHeader(boolean bHoliday) { + if (bHoliday) + return iColorFrameHeaderHoliday; + return iColorFrameHeader; + } + + + public static int getColorTextHeader(boolean bHoliday) { + if (bHoliday) + return iColorTextHeaderHoliday; + return iColorTextHeader; + } + + public static int getColorText(boolean bHoliday, boolean bToday) { + if (bToday) + return iColorTextToday; + if (bHoliday) + return iColorTextHoliday; + return iColorText; + } + + public static int getColorBkg(boolean bHoliday, boolean bToday) { + if (bToday) + return iColorBkgToday; + if (bHoliday) + return iColorBkgHoliday; + return iColorBkg; + } + + public static int getWeekDay(int index, int iFirstDayOfWeek) { + int iWeekDay = -1; + + if (iFirstDayOfWeek == Calendar.MONDAY) { + iWeekDay = index + Calendar.MONDAY; + if (iWeekDay > Calendar.SATURDAY) + iWeekDay = Calendar.SUNDAY; + } + + if (iFirstDayOfWeek == Calendar.SUNDAY) { + iWeekDay = index + Calendar.SUNDAY; + } + + return iWeekDay; + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/constant/GMailConsts.java b/代码/TimeBetter-master/src/com/timebetter/constant/GMailConsts.java new file mode 100644 index 0000000..39799cf --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/constant/GMailConsts.java @@ -0,0 +1,8 @@ +package com.timebetter.constant; + +public class GMailConsts { + + public static final String TAG = "GmailSync"; + public static final String IMAP_URI = "imap+ssl+://%s:%s@imap.gmail.com:993"; + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/constant/GoalConstant.java b/代码/TimeBetter-master/src/com/timebetter/constant/GoalConstant.java new file mode 100644 index 0000000..ef4ebbc --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/constant/GoalConstant.java @@ -0,0 +1,10 @@ +package com.timebetter.constant; + +public class GoalConstant { + + public static final int RANK_FIRST = 1; + public static final int RANK_SECOND = 2; + public static final int RANK_THIRD = 3; + + public static final int FORMER_GOAL = 0; +} diff --git a/代码/TimeBetter-master/src/com/timebetter/constant/MenuItemId.java b/代码/TimeBetter-master/src/com/timebetter/constant/MenuItemId.java new file mode 100644 index 0000000..5953e2d --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/constant/MenuItemId.java @@ -0,0 +1,27 @@ +package com.timebetter.constant; + +/** + * + * @author Kelvin + * + */ +public class MenuItemId { + + /** + * + */ + public static final int MENU_ITEM_TASK = 1; + public static final int MENU_ITEM_TIME = 2; + public static final int MENU_ITEM_LIMIT = 3; + public static final int MENU_ITEM_LONG = 4; +// public static final int MENU_ITEM_MYPOSITION= 5; + public static final int MENU_ITEM_SETUP = 6; + public static final int MENU_ITEM_HELP = 7; + public static final int MENU_ITEM_ABOUT = 8; +// public static final int MENU_ITEM_EXIT = 9; + + public static final int TASK_ITEM_LONG_CLICK_MENU_EDIT = 1; + public static final int TASK_ITEM_LONG_CLICK_MENU_DELETE = 2; + public static final int TASK_ITEM_LONG_CLICK_MENU_PULL = 3; + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/constant/MotionEventConstant.java b/代码/TimeBetter-master/src/com/timebetter/constant/MotionEventConstant.java new file mode 100644 index 0000000..c09c3c1 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/constant/MotionEventConstant.java @@ -0,0 +1,15 @@ +package com.timebetter.constant; + +public class MotionEventConstant { + + private static final int FLING_MIN_DISTANCE = 120; + private static final int FLING_MIN_VELOCITY = 0; + + public static int getFlingMinDistance() { + return FLING_MIN_DISTANCE; + } + + public static int getFlingMinVelocity() { + return FLING_MIN_VELOCITY; + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/constant/TaskConstant.java b/代码/TimeBetter-master/src/com/timebetter/constant/TaskConstant.java new file mode 100644 index 0000000..d212ba6 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/constant/TaskConstant.java @@ -0,0 +1,21 @@ +package com.timebetter.constant; + +public class TaskConstant { + public static final int RANK_FIRST = 4; + public static final int RANK_SECOND = 3; + public static final int RANK_THIRD = 2; + public static final int RANK_FOURTH = 1; + + public static final int TIME_ALERT = 1; + public static final int NO_TIME_ALERT = 0; + + public static final int TASK_NOT_COMPLETE = 0; + public static final int TASK_COMPLETE = 1; + + public static final int INIT_REPEAT_DAYS = 1; + + public static final int NOT_FUTURE = 0; + public static final int IS_FUTURE = 1; + + public static final int IS_PARENT = 0; +} diff --git a/代码/TimeBetter-master/src/com/timebetter/dao/DatabaseHelper.java b/代码/TimeBetter-master/src/com/timebetter/dao/DatabaseHelper.java new file mode 100644 index 0000000..53471e3 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/dao/DatabaseHelper.java @@ -0,0 +1,93 @@ +package com.timebetter.dao; + +import com.timebetter.bean.GoalBean; +import com.timebetter.bean.HeartMessage; +import com.timebetter.bean.SummaryBean; +import com.timebetter.bean.TaskBean; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.database.sqlite.SQLiteOpenHelper; + +public class DatabaseHelper extends SQLiteOpenHelper { + + private static int DATABASE_VERSION = 1; //ݿ汾 + + private static String DATABASE_NAME = "planbetter"; //ݿ + + // + private static String CREATE_TASK_TABLE_SQL = "CREATE TABLE IF NOT EXISTS " + TaskBean.TABLE_NAME + "(" + + TaskBean.ID + " INTEGER PRIMARY KEY," + + TaskBean.DATETIME + " TEXT," + + TaskBean.TASK_NAME + " TEXT," + + TaskBean.POSITION_NAME + " TEXT," + + TaskBean.TIME_ALERT_FLAG + " INTEGER," + + TaskBean.PRIORITY + " INTEGER," + + TaskBean.IF_COMPLETE + " INTEGER," + + TaskBean.REPEAT_DAYS + " INTEGER," + + TaskBean.IF_FUTURE+ " INTEGER," + + TaskBean.PARENT +" INTEGER)"; + + //ɾ + private static String DROP_TASK_TABLE_SQL = "DROP TABLE IF EXISTS " + TaskBean.TABLE_NAME; + + //ܽ + private static String CREATE_SUMMARY_TABLE_SQL = "CREATE TABLE IF NOT EXISTS " + SummaryBean.TABLE_NAME + "(" + + SummaryBean.ID + " INTEGER PRIMARY KEY," + + SummaryBean.DATE + " TEXT," + + SummaryBean.SCORE_RANK + " INTEGER," + + SummaryBean.MOOD + " TEXT)"; + + //ɾܽ + private static String DROP_SUMMARY_TABLE_SQL = "DROP TABLE IF EXISTS " + SummaryBean.TABLE_NAME; + + //Ŀ + private static String CREATE_GOAL_TABLE_SQL = "CREATE TABLE IF NOT EXISTS " + GoalBean.TABLE_NAME + "(" + + GoalBean.ID + " INTEGER PRIMARY KEY," + + GoalBean.DATE + " TEXT," + + GoalBean.GOAL_CONTENT + " TEXT," + + GoalBean.GOAL_FLAG + " INTEGER)"; + + //ɾĿ + private static String DROP_GOAL_TABLE_SQL = "DROP TABLE IF EXISTS " + GoalBean.TABLE_NAME; + + // + private static String CREATE_HEART_TABLE_SQL = "CREATE TABLE IF NOT EXISTS " + HeartMessage.TABLE_NAME + "(" + + HeartMessage.ID + " INTEGER PRIMARY KEY," + + HeartMessage.DATE + " TEXT," + + HeartMessage.HEART_CONTENT + " TEXT)"; + + //ɾ + private static String DROP_HEART_TABLE_SQL = "DROP TABLE IF EXISTS " + HeartMessage.TABLE_NAME; + + public DatabaseHelper(Context context, String name, CursorFactory factory, + int version) { + super(context, name, factory, version); + // TODO Auto-generated constructor stub + } + + public DatabaseHelper(Context context) { + this(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // TODO Auto-generated method stub + db.execSQL(CREATE_TASK_TABLE_SQL); // + db.execSQL(CREATE_GOAL_TABLE_SQL); //Ŀ + db.execSQL(CREATE_HEART_TABLE_SQL); // + db.execSQL(CREATE_SUMMARY_TABLE_SQL); //ܽ + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // TODO Auto-generated method stub + db.execSQL(DROP_TASK_TABLE_SQL); //ɾ + db.execSQL(DROP_SUMMARY_TABLE_SQL); //ɾܽ + db.execSQL(DROP_GOAL_TABLE_SQL); //ɾĿ + db.execSQL(DROP_HEART_TABLE_SQL); //ɾ + onCreate(db); + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/dao/DatabaseUtil.java b/代码/TimeBetter-master/src/com/timebetter/dao/DatabaseUtil.java new file mode 100644 index 0000000..4af4345 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/dao/DatabaseUtil.java @@ -0,0 +1,61 @@ +package com.timebetter.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + +public class DatabaseUtil { + + private static SQLiteDatabase db = null; + private static DatabaseHelper helper = null; + + + + //ֶ + public static long insert(Context context, String tableName, String id, ContentValues values) { + helper = new DatabaseHelper(context); + db = helper.getWritableDatabase(); + long rows = db.insert(tableName,id,values); + closeDatabase(); + return rows; + } + + //hֶ + public static int delete(Context context, String tableName, String where, String[] whereArgs) { + helper = new DatabaseHelper(context); + db = helper.getWritableDatabase(); + int rows = db.delete(tableName,where,whereArgs); + closeDatabase(); + return rows; + } + + //ʹSQLɾֶ + public static void delete(Context context, String sql) { + helper = new DatabaseHelper(context); + db = helper.getWritableDatabase(); + db.execSQL(sql); + closeDatabase(); + } + + //޸ֶ + public static int update(Context context, String tableName, ContentValues values, String where, String[] whereArgs) { + helper = new DatabaseHelper(context); + db = helper.getWritableDatabase(); + int rows = db.update(tableName,values,where,whereArgs); + closeDatabase(); + return rows; + } + + //ѯ + public static Cursor query(Context context, String table, + String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { + helper = new DatabaseHelper(context); + db = helper.getReadableDatabase(); + return db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy); + } + + public static void closeDatabase() { + db.close(); + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/date/DateUtils.java b/代码/TimeBetter-master/src/com/timebetter/date/DateUtils.java new file mode 100644 index 0000000..c3cf7b4 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/date/DateUtils.java @@ -0,0 +1,418 @@ +package com.timebetter.date; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class DateUtils { + + public static final String TODAY = "today"; + public static final String YESTERDAY = "yesterday"; + public static final String TOMORROW = "tomorrow"; + + public static String MIDDLE = "12:00"; + + public static boolean checkTimePassOrNot(String datetime) throws ParseException { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = f.parse(datetime); + Date now = new Date(System.currentTimeMillis()); + if(date.before(now) || sdf.format(date).equals(sdf.format(now))) { + return true; + } else { + return false; + } + } + + public static boolean checkTimeAlertable(int hourOfDay, int minute) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + int curHour = calendar.get(Calendar.HOUR_OF_DAY); + int curMinute = calendar.get(Calendar.MINUTE); + if(hourOfDay < curHour || (hourOfDay == curHour && curMinute>= minute)) { + return false; + } + return true; + } + + public static boolean checkTimeAlertable(String datetime) throws ParseException { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date date = f.parse(datetime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); + int minute = calendar.get(Calendar.MINUTE); + + Calendar now = Calendar.getInstance(); + now.setTimeInMillis(System.currentTimeMillis()); + int curHour = now.get(Calendar.HOUR_OF_DAY); + int curMinute = now.get(Calendar.MINUTE); + if(hourOfDay < curHour || (hourOfDay == curHour && curMinute>= minute)) { + return false; + } + return true; + } + + public static String yesterday() { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_MONTH, -1); + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH) + 1; + int day = calendar.get(Calendar.DAY_OF_MONTH); + + return formatDate(year, month, day); + } + + public static String calcDatetime(String datetime, int days) throws ParseException { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date date = f.parse(datetime); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.DAY_OF_MONTH, days); + date = calendar.getTime(); + return f.format(date); + } + + public static String getWeekDay(String DateStr) { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); + + Date date = null; + int weekDay = 0; + try { + date = f.parse(DateStr);// String תΪϸʽ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + weekDay = calendar.get(Calendar.DAY_OF_WEEK); + System.out.println(weekDay); + } catch (Exception e) { + e.printStackTrace(); + } + + // System.out.println(":"+DateStr+" "+weekDay); + String weekday1 = ""; + if (weekDay == 1) + weekday1 = ""; + else if (weekDay == 2) + weekday1 = "һ"; + else if (weekDay == 3) + weekday1 = "ܶ"; + else if (weekDay == 4) + weekday1 = ""; + else if (weekDay == 5) + weekday1 = ""; + else if (weekDay == 6) + weekday1 = ""; + else if (weekDay == 7) + weekday1 = ""; + + return weekday1; + } + + public static String formatTime(int hourOfDay, int minute) { + String time = ""; + if (hourOfDay < 10) { + time += ("0" + hourOfDay); + } else { + time += hourOfDay; + } + if (minute < 10) { + time += (":0" + minute); + } else { + time += (":" + minute); + } + return time; + } + + public static String formatDate(int year, int month, int day) { + String date = year + "-"; + if (month < 10) { + date += ("0" + month); + } else { + date += month; + } + if (day < 10) { + date += ("-0" + day); + } else { + date += ("-" + day); + } + return date; + } + + public static String getHeartMessageTimeByDateTime(String datetime) { + int[] yearMonthDayHourAndMinute = getYearMonthDayHourMinuteAndSecondByDateTime(datetime); + StringBuilder sb = new StringBuilder(); + sb.append(yearMonthDayHourAndMinute[0]+""); + sb.append(yearMonthDayHourAndMinute[1]>=10?yearMonthDayHourAndMinute[1]+"":"0"+yearMonthDayHourAndMinute[1]+""); + sb.append(yearMonthDayHourAndMinute[2]>=10?yearMonthDayHourAndMinute[2]+"":"0"+yearMonthDayHourAndMinute[2]+""); + sb.append(yearMonthDayHourAndMinute[3]>=10?yearMonthDayHourAndMinute[3]+":":"0"+yearMonthDayHourAndMinute[3]+":"); + sb.append(yearMonthDayHourAndMinute[4]>=10?yearMonthDayHourAndMinute[4]+":":"0"+yearMonthDayHourAndMinute[4]+":"); + sb.append(yearMonthDayHourAndMinute[5]>=10?yearMonthDayHourAndMinute[5]:"0"+yearMonthDayHourAndMinute[5]); + return sb.toString(); + } + + public static int[] getYearMonthDayHourMinuteAndSecondByDateTime(String datetime) { + int[] yearMonthDayHourAndMinute = new int[6]; + String[] spliteOnce = datetime.split(" ", 2); + String[] spliteDate = spliteOnce[0].split("\\-"); + String[] spliteTime = spliteOnce[1].split("\\:"); + yearMonthDayHourAndMinute[0] = Integer.parseInt(spliteDate[0]); + yearMonthDayHourAndMinute[1] = Integer.parseInt(spliteDate[1]); + yearMonthDayHourAndMinute[2] = Integer.parseInt(spliteDate[2]); + yearMonthDayHourAndMinute[3] = Integer.parseInt(spliteTime[0]); + yearMonthDayHourAndMinute[4] = Integer.parseInt(spliteTime[1]); + yearMonthDayHourAndMinute[5] = Integer.parseInt(spliteTime[2]); + return yearMonthDayHourAndMinute; + } + + public static int[] getYearMonthDayHourAndMinuteByDateTime(String datetime) { + int[] yearMonthDayHourAndMinute = new int[5]; + String[] spliteOnce = datetime.split(" ", 2); + String[] spliteDate = spliteOnce[0].split("\\-"); + String[] spliteTime = spliteOnce[1].split("\\:"); + yearMonthDayHourAndMinute[0] = Integer.parseInt(spliteDate[0]); + yearMonthDayHourAndMinute[1] = Integer.parseInt(spliteDate[1]); + yearMonthDayHourAndMinute[2] = Integer.parseInt(spliteDate[2]); + yearMonthDayHourAndMinute[3] = Integer.parseInt(spliteTime[0]); + yearMonthDayHourAndMinute[4] = Integer.parseInt(spliteTime[1]); + return yearMonthDayHourAndMinute; + } + + public static int[] getYearMonthAndDayByDateTime(String datetime) { + String[] split = datetime.split(" ", 2)[0].split("\\-"); + int[] yearMonthAndDay = new int[3]; + yearMonthAndDay[0] = Integer.parseInt(split[0]); + yearMonthAndDay[1] = Integer.parseInt(split[1]); + yearMonthAndDay[2] = Integer.parseInt(split[2]); + return yearMonthAndDay; + } + + public static int[] getHourAndMinuteByDateTime(String datetime) { + String[] split = datetime.split(" ", 2)[1].split("\\:"); + int[] hourAndMinute = new int[2]; + hourAndMinute[0] = Integer.parseInt(split[0]); + hourAndMinute[1] = Integer.parseInt(split[1]); + return hourAndMinute; + } + + public static int[] getNowHourAndMinute() { + int[] nowHourAndMinute = new int[2]; + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + nowHourAndMinute[0] = calendar.get(Calendar.HOUR_OF_DAY); + nowHourAndMinute[1] = calendar.get(Calendar.MINUTE); + return nowHourAndMinute; + } + + public static String now() { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date now = new Date(System.currentTimeMillis()); + return format.format(now); + } + + public static String nowDetail() { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date now = new Date(System.currentTimeMillis()); + return format.format(now); + } + + public static String getDateByRepeatDays(int days) { + String now = ""; + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_MONTH, days - 1); + int year = calendar.get(Calendar.YEAR); + now += (year + ""); + int month = calendar.get(Calendar.MONTH) + 1; + now += (month + ""); + int day = calendar.get(Calendar.DAY_OF_MONTH); + now += (day + ""); + return now; + } + + public static int[] getNowDate(){ + int[] nowYearMonthDay = new int[3]; + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + nowYearMonthDay[0] = calendar.get(Calendar.YEAR); + nowYearMonthDay[1] = calendar.get(Calendar.MONTH)+1; + nowYearMonthDay[2] = calendar.get(Calendar.DAY_OF_MONTH); + return nowYearMonthDay; + } + + public static int[] getTomorrowDate(){ + int[] tomorrowYearMonthDay = new int[3]; + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + calendar.add(Calendar.DAY_OF_MONTH, 1); + tomorrowYearMonthDay[0] = calendar.get(Calendar.YEAR); + tomorrowYearMonthDay[1] = calendar.get(Calendar.MONTH)+1; + tomorrowYearMonthDay[2] = calendar.get(Calendar.DAY_OF_MONTH); + return tomorrowYearMonthDay; + } + + public static int getDifferDays(int year, int month, int days) + { + + String datetime = formatDate(year, month, days); + + int differ = 0; + try { + differ = DateUtils.getDifferDays(datetime); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return differ; + } + + public static int[] getDayInfoByRepeatDays(int days) { + int[] dayInfo = new int[3]; + + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_MONTH, days - 1); + int year = calendar.get(Calendar.YEAR); + dayInfo[0] = year; + int month = calendar.get(Calendar.MONTH); + dayInfo[1] = month; + int day = calendar.get(Calendar.DAY_OF_MONTH); + dayInfo[2] = day; + + return dayInfo; + } + + public static String getDayByRepeatDays(int days) { + return "" + days + ""; + } + + public static int getDifferDays(String endDateStr) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date endDate = sdf.parse(endDateStr); + GregorianCalendar start = new GregorianCalendar(); + GregorianCalendar end = new GregorianCalendar(); + start.setTime(new Date()); + end.setTime(endDate); + return getDays(start, end); + } + + private static int getDays(GregorianCalendar g1, GregorianCalendar g2) { + int elapsed = 0; + boolean flag = true; + GregorianCalendar gc1, gc2; + + g1.clear(Calendar.MILLISECOND); + g1.clear(Calendar.SECOND); + g1.clear(Calendar.MINUTE); + g1.clear(Calendar.HOUR_OF_DAY); + g2.clear(Calendar.MILLISECOND); + g2.clear(Calendar.SECOND); + g2.clear(Calendar.MINUTE); + g2.clear(Calendar.HOUR_OF_DAY); + + if (g2.after(g1)) { + gc2 = (GregorianCalendar) g2.clone(); + gc1 = (GregorianCalendar) g1.clone(); + } else { + flag = false; + gc2 = (GregorianCalendar) g1.clone(); + gc1 = (GregorianCalendar) g2.clone(); + } + while (gc1.before(gc2)) { + gc1.add(Calendar.DATE, 1); + elapsed++; + } + return flag ? elapsed : (-elapsed); + } + + public static String getTomorrowWidgetTimeDetail(int days) { + String time = ""; + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_MONTH, days); + int year = calendar.get(Calendar.YEAR); + time += (year + "/"); + int month = calendar.get(Calendar.MONTH) + 1; + time += (month + "/"); + int day = calendar.get(Calendar.DAY_OF_MONTH); + time += (day + ""); + int weekday = calendar.get(Calendar.DAY_OF_WEEK); + switch (weekday) { + case Calendar.MONDAY: + time += ",һ"; + break; + case Calendar.TUESDAY: + time += ",ܶ"; + break; + case Calendar.WEDNESDAY: + time += ","; + break; + case Calendar.THURSDAY: + time += ","; + break; + case Calendar.FRIDAY: + time += ","; + break; + case Calendar.SATURDAY: + time += ","; + break; + case Calendar.SUNDAY: + time += ","; + break; + } + return time; + } + + public static String timeDetail(String time) { + String now = ""; + Calendar calendar = Calendar.getInstance(); + if (time.equals(TOMORROW)) { + calendar.add(Calendar.DAY_OF_MONTH, 1); + } else if (time.equals(YESTERDAY)) { + calendar.add(Calendar.DAY_OF_MONTH, -1); + } + int year = calendar.get(Calendar.YEAR); + now += (year + ""); + int month = calendar.get(Calendar.MONTH) + 1; + now += (month + ""); + int day = calendar.get(Calendar.DAY_OF_MONTH); + now += (day + ""); + int weekday = calendar.get(Calendar.DAY_OF_WEEK); + switch (weekday) { + case Calendar.MONDAY: + now += "һ"; + break; + case Calendar.TUESDAY: + now += "ڶ"; + break; + case Calendar.WEDNESDAY: + now += ""; + break; + case Calendar.THURSDAY: + now += ""; + break; + case Calendar.FRIDAY: + now += ""; + break; + case Calendar.SATURDAY: + now += ""; + break; + case Calendar.SUNDAY: + now += ""; + break; + } + return now; + } + + public static String getTaskTime(String datetime) { + String[] splitStr = datetime.split(" ", 2); + if (splitStr[1].equals(MIDDLE)) { + return "12:00"; + } else { + String[] time = splitStr[1].split(":"); + if (Integer.parseInt(time[0]) >= 12) { + return "" + splitStr[1]; + } else { + return "" + splitStr[1]; + } + } + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/mail/DataForm.java b/代码/TimeBetter-master/src/com/timebetter/mail/DataForm.java new file mode 100644 index 0000000..4ebb81b --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/mail/DataForm.java @@ -0,0 +1,230 @@ +package com.timebetter.mail; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import android.content.Context; +import android.database.Cursor; + +import com.timebetter.bean.GoalBean; +import com.timebetter.bean.HeartMessage; +import com.timebetter.bean.TaskBean; +import com.timebetter.constant.GoalConstant; +import com.timebetter.constant.TaskConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; + +public class DataForm { + private static List> ItemList; + + private static final int SEND_TODAY_TASK = 1; + private static final int SEND_HISTORY_TASK = 2; + private static final int SEND_FUTURE_TASK = 3; + private static final int SEND_GOAL = 4; + private static final int SEND_HEART_MESSAGE = 5; + + public static String getSubject(int flag) + { + if(flag == SEND_TODAY_TASK) + { + return "͵"; + } + else if(flag == SEND_HISTORY_TASK) + { + return "ʷ"; + } + else if(flag == SEND_FUTURE_TASK) + { + return "͵"; + } + else if(flag == SEND_GOAL) + return "Ŀ"; + else if(flag == SEND_HEART_MESSAGE) + return ""; + else + return "òƳˡ"; + + } + + public static String getContent(Context context, int flag) + { + + if(flag == SEND_TODAY_TASK) + { + initTodayTaskListItem(context); + return getTaskMessage(); + } + else if(flag == SEND_HISTORY_TASK) + { + initHistoryTaskListItem(context); + return getTaskMessage(); + } + else if(flag == SEND_FUTURE_TASK) + { + initFutureTaskListItem(context); + return getTaskMessage(); + } + else if(flag == SEND_GOAL) + return getGoalMessage(context); + else if(flag == SEND_HEART_MESSAGE) + return getHeartMessage(context); + else + return "òƳˡ"; + + } + + private static void initTodayTaskListItem(Context context) { + ItemList = new ArrayList>(); + // ѯݿ,ȡϢ + Cursor todayTaskCur = DatabaseUtil.query(context, + TaskBean.TABLE_NAME, null, TaskBean.DATETIME + " LIKE ?", + new String[] { DateUtils.now() + "%" }, null, null, TaskBean.ID + + " ASC"); + + // Ϣ + + for (todayTaskCur.moveToFirst(); !todayTaskCur.isAfterLast(); todayTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(todayTaskCur); + ItemList.add(map); + } + DatabaseUtil.closeDatabase(); + } + + private static void initHistoryTaskListItem(Context context) { + ItemList = new ArrayList>(); + // ѯݿ,ȡϢ + Cursor historyTaskCur = DatabaseUtil.query(context, + TaskBean.TABLE_NAME, null, TaskBean.DATETIME + " NOT LIKE ? AND "+TaskBean.IF_FUTURE+" = ?", + new String[] { DateUtils.now() + "%", TaskConstant.NOT_FUTURE + "" }, null, null, TaskBean.ID + + " ASC"); + + for (historyTaskCur.moveToFirst(); !historyTaskCur.isAfterLast(); historyTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(historyTaskCur); + ItemList.add(map); + } + DatabaseUtil.closeDatabase(); + } + + private static void initFutureTaskListItem(Context context) { + ItemList = new ArrayList>(); + // ѯݿ,ȡϢ + Cursor futureTaskCur = DatabaseUtil.query(context, + TaskBean.TABLE_NAME, null, TaskBean.IF_FUTURE + " = ? AND "+TaskBean.PARENT+" = ?", + new String[] { TaskConstant.IS_FUTURE+"",TaskConstant.IS_PARENT+"" }, null, null, TaskBean.ID + + " ASC"); + for (futureTaskCur.moveToFirst(); !futureTaskCur.isAfterLast(); futureTaskCur + .moveToNext()) { + Map map = TaskBean.generateTask(futureTaskCur); + ItemList.add(map); + } + DatabaseUtil.closeDatabase(); + } + + private static String getTaskMessage() + { + String content = ""; + for(int i=1; i<=ItemList.size(); i++) + { + Map map = ItemList.get(i-1); + String taskname = (String) map.get(TaskBean.TASK_NAME); + String time = (String) map.get(TaskBean.DATETIME); + String position = (String)map.get(TaskBean.POSITION_NAME); + int flag = Integer.parseInt(map.get(TaskBean.IF_COMPLETE).toString()); + + String tmp = null; + if(flag == TaskConstant.TASK_COMPLETE) + tmp = i + "ƣ"+taskname+"\tʱ䣺"+time+"\tλã"+(position.equals("")?"δ֪":position)+"\t\n"; + else if(flag == TaskConstant.TASK_NOT_COMPLETE) + tmp = i + " ƣ"+taskname+"\tʱ䣺"+time+"\tλã"+(position.equals("")?"δ֪":position)+"\tδ\n"; + + content = content + tmp; + } + if(content.equals("")) + content = "û"; + return content; + } + + private static String getHeartMessage(Context context) + { + List messages = new ArrayList(); + Cursor databaseCur = DatabaseUtil.query(context, HeartMessage.TABLE_NAME, + null, null, null, null, null, HeartMessage.ID+" ASC"); + for(databaseCur.moveToFirst(); !databaseCur.isAfterLast();databaseCur.moveToNext()) { + HeartMessage hm = HeartMessage.generateHeartMessage(databaseCur); + messages.add(hm); + } + DatabaseUtil.closeDatabase(); + + String content = ""; + for(int i=1; i<=messages.size(); i++) + { + HeartMessage map = messages.get(i-1); + String time = (String) map.getHeartDate(); + String heartcontent = (String) map.getHeartContent(); + + String tmp = i + " ʱ䣺"+time+ "\tݣ"+heartcontent+"\n"; + content = content + tmp; + } + if(content.equals("")) + content = "û"; + return content; + } + + + private static String getGoalMessage(Context context) + { + ItemList = new ArrayList>(); + String firstGoal = ""; + String secondGoal = ""; + String thirdGoal = ""; + + Cursor goalCur = DatabaseUtil.query(context , GoalBean.TABLE_NAME, new String[]{GoalBean.GOAL_CONTENT,GoalBean.GOAL_FLAG}, + GoalBean.GOAL_FLAG+"!="+GoalConstant.FORMER_GOAL, null, null, null, GoalBean.GOAL_FLAG+" ASC"); + + int x = 0; + for(goalCur.moveToFirst();!goalCur.isAfterLast();goalCur.moveToNext()) { + + switch(goalCur.getInt(goalCur.getColumnIndex(GoalBean.GOAL_FLAG))) { + case GoalConstant.RANK_FIRST: + firstGoal = goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT)); + break; + case GoalConstant.RANK_SECOND: + secondGoal = goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT)); + break; + case GoalConstant.RANK_THIRD: + thirdGoal = goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT)); + break; + case GoalConstant.FORMER_GOAL: + Map map = new HashMap(); + map.put(GoalBean.GOAL_CONTENT, + goalCur.getString(goalCur.getColumnIndex(GoalBean.GOAL_CONTENT))); + map.put(GoalBean.DATE, goalCur.getString(goalCur.getColumnIndex(GoalBean.DATE))); + map.put(GoalBean.ID, goalCur.getInt(goalCur.getColumnIndex(GoalBean.ID))); + map.put(GoalBean.GOAL_FLAG, + goalCur.getInt(goalCur.getColumnIndex(GoalBean.GOAL_FLAG))); + ItemList.add(x, map); + x++; + } + } + DatabaseUtil.closeDatabase(); + + String content = "һĿ꣺"+(firstGoal.equals("")?"û":firstGoal)+"\nڶĿ꣺" + +(secondGoal.equals("")?"û":secondGoal)+"\nĿ꣺"+(thirdGoal.equals("")?"û":thirdGoal)+"\nʷĿ꣺"; + for(int i=1; i<=ItemList.size(); i++) + { + Map map = ItemList.get(i); + String goalcontent = (String)map.get(GoalBean.GOAL_CONTENT); + String date = (String)map.get(GoalBean.DATE); + + String tmp = i + " ʱ䣺"+date+ "\t"+goalcontent+"\n"; + content = content + tmp; + } + if(ItemList.size() == 0) + content += "û"; + return content; + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/mail/GMailService.java b/代码/TimeBetter-master/src/com/timebetter/mail/GMailService.java new file mode 100644 index 0000000..bd3382c --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/mail/GMailService.java @@ -0,0 +1,330 @@ +package com.timebetter.mail; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.net.wifi.WifiManager; +import android.net.wifi.WifiManager.WifiLock; +import android.os.IBinder; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.os.Process; +import android.util.Log; + +import com.android.email.mail.Folder; +import com.android.email.mail.Folder.FolderType; +import com.android.email.mail.Folder.OpenMode; +import com.android.email.mail.Address; +import com.android.email.mail.Message; +import com.android.email.mail.Message.RecipientType; +import com.android.email.mail.MessagingException; +import com.android.email.mail.internet.MimeMessage; +import com.android.email.mail.internet.TextBody; +import com.android.email.mail.store.ImapStore; +import com.timebetter.activity.R; +import com.timebetter.constant.GMailConsts; + +public class GMailService extends Service { + private static boolean sIsRunning = false; + + private static GMailSyncState sState = GMailSyncState.IDLE; + + private static int sItemsToSync; + private static int sCurrentSyncedItems; + private static String sLastError; + private static StateChangeListener sStateChangeListener; + private static WakeLock sWakeLock; + private static WifiLock sWifiLock; + public static boolean sCanceled; + + public enum GMailSyncState { + IDLE, CALC, LOGIN, SYNC, AUTH_FAILED, GENERAL_ERROR, CANCELED; + } + + @Override + public IBinder onBind(Intent arg0) { + return null; + } + + public static void acquireWakeLock(Context ctx) { + if (sWakeLock == null) { + PowerManager pMgr = (PowerManager) ctx + .getSystemService(POWER_SERVICE); + sWakeLock = pMgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, + "SmsSyncService.sync() wakelock."); + + WifiManager wMgr = (WifiManager) ctx.getSystemService(WIFI_SERVICE); + sWifiLock = wMgr.createWifiLock("GMail Backup"); + } + sWakeLock.acquire(); + sWifiLock.acquire(); + } + + public static void releaseWakeLock(Context ctx) { + sWakeLock.release(); + sWifiLock.release(); + } + + @Override + // TODO(chstuder): Clean this flow up a bit and split it into multiple + // methods. Make clean distinction between onStart(...) and backup(...). + public void onStart(final Intent intent, int startId) { + super.onStart(intent, startId); + + synchronized (this.getClass()) { + // Only start a sync if there's no other sync going on at this time. + if (!sIsRunning) { + acquireWakeLock(this); + sIsRunning = true; + // Start sync in new thread. + new Thread() { + public void run() { + + Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); + try { + + backup(); + + } catch (GeneralErrorException e) { + Log.i(GMailConsts.TAG, "", e); + sLastError = e.getLocalizedMessage(); + updateState(GMailSyncState.GENERAL_ERROR); + } catch (AuthenticationErrorException e) { + Log.i(GMailConsts.TAG, "", e); + sLastError = e.getLocalizedMessage(); + updateState(GMailSyncState.AUTH_FAILED); + } finally { + stopSelf(); + + sIsRunning = false; + releaseWakeLock(GMailService.this); + } + } + }.start(); + } else { + Log.d(GMailConsts.TAG, + "SmsSyncService.onStart(): Already running."); + } + } + } + + public void backup() throws GeneralErrorException, + AuthenticationErrorException { + Log.i(GMailConsts.TAG, "Starting backup..."); + sCanceled = false; + + if (!PrefStore.isLoginInformationSet(this)) { + throw new GeneralErrorException(this, + R.string.err_sync_requires_login_info, null); + } + + String username = PrefStore.getLoginUsername(this); + String password = PrefStore.getLoginPassword(this); + int flag = PrefStore.getMaxItemsPerSync(this); + + updateState(GMailSyncState.CALC); + + sItemsToSync = 1; + sCurrentSyncedItems = 0; + + Log.d(GMailConsts.TAG, "Total messages to backup: " + sItemsToSync); + + updateState(GMailSyncState.LOGIN); + + /* ½䣬ļ */ + ImapStore imapStore; + Folder folder; + boolean folderExists; + String label = PrefStore.getImapFolder(this); + try { + imapStore = new ImapStore(String.format(GMailConsts.IMAP_URI, + URLEncoder.encode(username), URLEncoder.encode(password) + .replace("+", "%20"))); + folder = imapStore.getFolder(label); + folderExists = folder.exists(); + if (!folderExists) { + Log.i(GMailConsts.TAG, "Label '" + label + + "' does not exist yet. Creating."); + folder.create(FolderType.HOLDS_MESSAGES); + } + folder.open(OpenMode.READ_WRITE);// ȷҪļ + } catch (MessagingException e) { + throw new AuthenticationErrorException(e); + } + + List messages = new ArrayList(); + + try { + while (true) { + // Cancel sync if requested by the user. + if (sCanceled) { + Log.i(GMailConsts.TAG, "Backup canceled by user."); + updateState(GMailSyncState.CANCELED); + break; + } + updateState(GMailSyncState.SYNC); + + if (sCurrentSyncedItems >= sItemsToSync) { + Log.i(GMailConsts.TAG, "Sync done: " + sCurrentSyncedItems + " items uploaded."); + PrefStore.setLastSync(GMailService.this); + updateState(GMailSyncState.IDLE); + folder.close(true); + break; + } + Message msg = new MimeMessage(); + + String sub = DataForm.getSubject(flag); + String body = DataForm.getContent(this, flag); + msg.setSubject("PlanBetter backup:" + sub); + TextBody tbody = new TextBody(body); + Address mUserAddress = new Address(username); + msg.setFrom(mUserAddress); + msg.setRecipient(RecipientType.TO, mUserAddress); + msg.setSentDate(new Date()); + msg.setBody(tbody); + messages.add(msg); + + folder.appendMessages(messages.toArray(new Message[messages + .size()])); + updateState(GMailSyncState.SYNC); + sCurrentSyncedItems += 1; + + Log.d(GMailConsts.TAG, "Sending " + body.length() + + " messages to server."); + } + } catch (MessagingException e) { + throw new GeneralErrorException(this, + R.string.err_communication_error, e); + } finally { + + } + } + + public static void cancel() { + if (GMailService.sIsRunning) { + GMailService.sCanceled = true; + } + } + + // Statistics accessible from other classes. + + /** + * Returns whether there is currently a backup going on or not. + * + */ + public static boolean isWorking() { + return sIsRunning; + } + + /** + * Returns the current state of the service. Also see + * {@link #setStateChangeListener(StateChangeListener)} to get notified when + * the state changes. + */ + public static GMailSyncState getState() { + return sState; + } + + /** + * Returns a description of the last error. Only valid if + * {@link #getState()} == {@link GMailSyncState#GENERAL_ERROR}. + */ + public static String getErrorDescription() { + return (sState == GMailSyncState.GENERAL_ERROR) ? sLastError : null; + } + + /** + * Returns the number of messages that require sync during the current + * cycle. + */ + public static int getItemsToSyncCount() { + return sItemsToSync; + } + + /** + * Registers a {@link StateChangeListener} that is notified whenever the + * state of the service changes. Note that at most one listener can be + * registered and you need to call {@link #unsetStateChangeListener()} in + * between calls to this method. + * + * @see #getState() + * @see #unsetStateChangeListener() + */ + public static void setStateChangeListener(StateChangeListener listener) { + if (sStateChangeListener != null) { + throw new IllegalStateException( + "setStateChangeListener(...) called when there" + + " was still some other listener " + + "registered. Use unsetStateChangeListener() first."); + } + sStateChangeListener = listener; + } + + /** + * Unregisters the currently registered {@link StateChangeListener}. + * + * @see #setStateChangeListener(StateChangeListener) + */ + public static void unsetStateChangeListener() { + sStateChangeListener = null; + } + + /** + * Internal method that needs to be called whenever the state of the service + * changes. + */ + public static void updateState(GMailSyncState newState) { + GMailSyncState old = sState; + sState = newState; + if (sStateChangeListener != null) { + sStateChangeListener.stateChanged(old, newState); + } + } + + /** + * A state change listener interface that provides a callback that is called + * whenever the state of the {@link SmsSyncService} changes. + * + * @see SmsSyncService#setStateChangeListener(StateChangeListener) + */ + public interface StateChangeListener { + /** + * Called whenever the sync state of the service changed. + */ + public void stateChanged(GMailSyncState oldState, + GMailSyncState newState); + } + + /** + * Exception indicating an error while synchronizing. + */ + public static class GeneralErrorException extends Exception { + private static final long serialVersionUID = 1L; + + public GeneralErrorException(String msg, Throwable t) { + super(msg, t); + } + + public GeneralErrorException(Context ctx, int msgId, Throwable t) { + super(ctx.getString(msgId), t); + } + } + + public static class AuthenticationErrorException extends Exception { + private static final long serialVersionUID = 1L; + + public AuthenticationErrorException(Throwable t) { + super(t.getLocalizedMessage(), t); + } + } + + public static int getCurrentSyncedItems() { + // TODO Auto-generated method stub + return sCurrentSyncedItems; + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/mail/PrefStore.java b/代码/TimeBetter-master/src/com/timebetter/mail/PrefStore.java new file mode 100644 index 0000000..2703d76 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/mail/PrefStore.java @@ -0,0 +1,161 @@ +/* Copyright (c) 2009 Christoph Studer + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.timebetter.mail; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.preference.PreferenceManager; + +public class PrefStore { + public static final String PREF_LOGIN_USER = "login_user"; + public static final String PREF_LOGIN_PASSWORD = "login_password"; + + static final String PREF_REFERENECE_UID = "reference_uid"; + public static final String PREF_IMAP_FOLDER = "imap_folder"; + + static final String PREF_INCOMING_TIMEOUT_SECONDS = "incoming_timeout_seconds"; + static final String PREF_REGULAR_TIMEOUT_SECONDS = "regular_timeout_seconds"; + + static final String PREF_LAST_SYNC = "last_sync"; + + public static final String PREF_MAX_ITEMS_PER_SYNC = "max_items_per_sync"; + static final String PREF_MARK_AS_READ = "mark_as_read"; + + static final String DEFAULT_IMAP_FOLDER = "PlanBetter"; + + + /** Default value for {@link PrefStore#PREF_INCOMING_TIMEOUT_SECONDS}. */ + static final int DEFAULT_INCOMING_TIMEOUT_SECONDS = 20; + + /** Default value for {@link PrefStore#PREF_REGULAR_TIMEOUT_SECONDS}. */ + static final int DEFAULT_REGULAR_TIMEOUT_SECONDS = 30 * 60; // 30 minutes + + /** Default value for {@link #PREF_LAST_SYNC}. */ + public static final long DEFAULT_LAST_SYNC = -1; + + /** Default value for {@link #PREF_MAX_ITEMS_PER_SYNC}. */ + static final String DEFAULT_MAX_ITEMS_PER_SYNC = "100"; + + /** Default value for {@link #PREF_MARK_AS_READ}. */ + static final boolean DEFAULT_MARK_AS_READ = false; + + public static SharedPreferences getSharedPreferences(Context ctx) { + return PreferenceManager.getDefaultSharedPreferences(ctx); + } + + + public static String getLoginUsername(Context ctx) { + return getSharedPreferences(ctx).getString(PREF_LOGIN_USER, null); + } + + public static String getLoginPassword(Context ctx) { + return getSharedPreferences(ctx).getString(PREF_LOGIN_PASSWORD, null); + } + + public static boolean isLoginUsernameSet(Context ctx) { + return getLoginUsername(ctx) != null; + } + + public static boolean isLoginInformationSet(Context ctx) { + return isLoginUsernameSet(ctx) && getLoginPassword(ctx) != null; + } + + public static String getReferenceUid(Context ctx) { + return getSharedPreferences(ctx).getString(PREF_REFERENECE_UID, null); + } + + public static void setReferenceUid(Context ctx, String referenceUid) { + Editor editor = getSharedPreferences(ctx).edit(); + editor.putString(PREF_REFERENECE_UID, referenceUid); + editor.commit(); + } + + public static String getImapFolder(Context ctx) { + return getSharedPreferences(ctx).getString(PREF_IMAP_FOLDER, DEFAULT_IMAP_FOLDER); + } + + public static boolean isImapFolderSet(Context ctx) { + return getSharedPreferences(ctx).contains(PREF_IMAP_FOLDER); + } + + public static int getMaxItemsPerSync(Context ctx) { + String str = getSharedPreferences(ctx).getString(PREF_MAX_ITEMS_PER_SYNC, + DEFAULT_MAX_ITEMS_PER_SYNC); + return Integer.valueOf(str); + } + + /** + * Returns whether an IMAP folder is valid. This is the case if the name + * only contains unaccented latin letters [a-zA-Z]. + */ + public static boolean isValidImapFolder(String imapFolder) { + for (int i = 0; i < imapFolder.length(); i++) { + char currChar = imapFolder.charAt(i); + if (!((currChar >= 'a' && currChar <= 'z') + || (currChar >= 'A' && currChar <= 'Z'))) { + return false; + } + } + return true; + } + + public static void setImapFolder(Context ctx, String imapFolder) { + Editor editor = getSharedPreferences(ctx).edit(); + editor.putString(PREF_IMAP_FOLDER, imapFolder); + editor.commit(); + } + + + public static int getIncomingTimeoutSecs(Context ctx) { + return getSharedPreferences(ctx).getInt(PREF_INCOMING_TIMEOUT_SECONDS, + DEFAULT_INCOMING_TIMEOUT_SECONDS); + } + + public static int getRegularTimeoutSecs(Context ctx) { + return getSharedPreferences(ctx).getInt(PREF_REGULAR_TIMEOUT_SECONDS, + DEFAULT_REGULAR_TIMEOUT_SECONDS); + } + + public static long getLastSync(Context ctx) { + return getSharedPreferences(ctx).getLong(PREF_LAST_SYNC, DEFAULT_LAST_SYNC); + } + + public static void setLastSync(Context ctx) { + Editor editor = getSharedPreferences(ctx).edit(); + editor.putLong(PREF_LAST_SYNC, System.currentTimeMillis()); + editor.commit(); + } + + public static boolean getMarkAsRead(Context ctx) { + return getSharedPreferences(ctx).getBoolean(PREF_MARK_AS_READ, DEFAULT_MARK_AS_READ); + } + + public static void setMarkAsRead(Context ctx, boolean markAsRead) { + Editor editor = getSharedPreferences(ctx).edit(); + editor.putBoolean(PREF_MARK_AS_READ, markAsRead); + editor.commit(); + } + + + public static void clearSyncData(Context ctx) { + Editor editor = getSharedPreferences(ctx).edit(); + editor.remove(PREF_LOGIN_PASSWORD); + editor.remove(PREF_LAST_SYNC); + editor.commit(); + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/receiver/AlarmReceiver.java b/代码/TimeBetter-master/src/com/timebetter/receiver/AlarmReceiver.java new file mode 100644 index 0000000..d6a6273 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/receiver/AlarmReceiver.java @@ -0,0 +1,27 @@ +package com.timebetter.receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.timebetter.alarm.Alarm; + + +public class AlarmReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + // TODO Auto-generated method stub + String action = intent.getAction(); + if(action != null) { + if(action.equals(Alarm.ALARM_REGISTRATION_DETAIL_ACTION)) { + Alarm.enableAlarm(context, intent, action); + } else if(action.equals(Alarm.ALARM_REGISTRATION_SIMPLE_ACTION)) { + Alarm.enableAlarm(context, intent, action); + } else if(action.equals(Alarm.ALARM_CANCEL_ACTION)) { + Alarm.disableAlarm(context, intent); + } + } + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/receiver/PlanBetterReceiver.java b/代码/TimeBetter-master/src/com/timebetter/receiver/PlanBetterReceiver.java new file mode 100644 index 0000000..114a929 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/receiver/PlanBetterReceiver.java @@ -0,0 +1,134 @@ +package com.timebetter.receiver; + +import java.text.ParseException; + +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; + +import com.timebetter.activity.TaskAlertActivity; +import com.timebetter.bean.TaskBean; +import com.timebetter.constant.TaskConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; +import com.timebetter.service.PlanBetterInit; + +public class PlanBetterReceiver extends BroadcastReceiver { + + public static final String ALARM_ALERT_ACTION = "com.planbetter.activity.ALARM_ALERT"; + public static final String INSERT_DATA_ACTION = "com.planbetter.activity.INSERT_DATA"; + public static final String DATE_CHANGED = "android.intent.action.DATE_CHANGED"; + public static final String BOOT_COMPLETE = "android.intent.action.BOOT_COMPLETED"; + public static final String TIME_SET_CHANGED = "android.intent.action.TIME_SET"; + public static final String INSERT_DATA_AFTER_MODIFY = "com.planbetter.activity.INSERT_DATA_AFTER_MODIFY"; + public static final String INSERT_DATA_INTENT_BUNDLE_TAG = "insert_data"; + public static final String INSERT_DATA_AFTER_MODIFY_INTENT_BUNDLE_TAG = "insert_data_after_modify"; + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (action != null) { + if (action.equals(ALARM_ALERT_ACTION)) { + Intent at_intent = new Intent(context, TaskAlertActivity.class); + at_intent.putExtra(TaskBean.ID, + intent.getIntExtra(TaskBean.ID, 1)); + at_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(at_intent); + } else if (action.equals(INSERT_DATA_ACTION)) { + Bundle bundle = intent + .getBundleExtra(INSERT_DATA_INTENT_BUNDLE_TAG); + int repeatDays = bundle.getInt(TaskBean.REPEAT_DAYS); + String taskContentStr = bundle.getString(TaskBean.TASK_NAME); + String taskPositionStr = bundle + .getString(TaskBean.POSITION_NAME); + int timeAlertValue = bundle.getInt(TaskBean.TIME_ALERT_FLAG); + int priority = bundle.getInt(TaskBean.PRIORITY); + String datetime = bundle.getString(TaskBean.DATETIME); + int id = bundle.getInt(TaskBean.PARENT); + // ѭʣڻ + for (int n = 1; n < repeatDays; n++) { + // ʱ + try { + ContentValues values = new ContentValues(); + + values.put(TaskBean.TASK_NAME, taskContentStr); + values.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + values.put(TaskBean.POSITION_NAME, taskPositionStr); + values.put(TaskBean.TIME_ALERT_FLAG, timeAlertValue); + values.put(TaskBean.PRIORITY, priority); + + values.put(TaskBean.IF_FUTURE, TaskConstant.IS_FUTURE); + + values.put(TaskBean.DATETIME, + DateUtils.calcDatetime(datetime, n)); + + values.put(TaskBean.REPEAT_DAYS, repeatDays - n); + + values.put(TaskBean.PARENT, id); + + DatabaseUtil.insert(context, TaskBean.TABLE_NAME, + TaskBean.ID, values); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } else if (action.equals(DATE_CHANGED) + || action.equals(BOOT_COMPLETE) || action.equals(TIME_SET_CHANGED)) { + // ڷ仯 + // ʼ,ˢwidget + Log.d("debug", "ʼ"); + Intent init = new Intent(context, PlanBetterInit.class); + context.startService(init); + } else if (action.equals(INSERT_DATA_AFTER_MODIFY)) { + Bundle bundle = intent + .getBundleExtra(INSERT_DATA_AFTER_MODIFY_INTENT_BUNDLE_TAG); + int repeatDays = bundle.getInt(TaskBean.REPEAT_DAYS); + String taskContentStr = bundle.getString(TaskBean.TASK_NAME); + String taskPositionStr = bundle + .getString(TaskBean.POSITION_NAME); + int timeAlertValue = bundle.getInt(TaskBean.TIME_ALERT_FLAG); + int priority = bundle.getInt(TaskBean.PRIORITY); + String datetime = bundle.getString(TaskBean.DATETIME); + int parent = bundle.getInt(TaskBean.PARENT); + int curViewId = bundle.getInt(TaskBean.CURVIEWID); + // » + for (int n = 1; n < repeatDays; n++) { + // ʱ + try { + + ContentValues tmpValues = new ContentValues(); + + tmpValues.put(TaskBean.TASK_NAME, taskContentStr); + tmpValues.put(TaskBean.IF_COMPLETE, + TaskConstant.TASK_NOT_COMPLETE); + tmpValues.put(TaskBean.POSITION_NAME, taskPositionStr); + tmpValues.put(TaskBean.TIME_ALERT_FLAG, timeAlertValue); + tmpValues.put(TaskBean.PRIORITY, priority); + tmpValues.put(TaskBean.IF_FUTURE, TaskConstant.IS_FUTURE); + + tmpValues.put(TaskBean.DATETIME, + DateUtils.calcDatetime(datetime, n)); + tmpValues.put(TaskBean.REPEAT_DAYS, repeatDays - n); + if (parent == TaskConstant.IS_PARENT) { + tmpValues.put(TaskBean.PARENT, curViewId); + } else { + tmpValues.put(TaskBean.PARENT, parent); + } + + DatabaseUtil.insert(context, + TaskBean.TABLE_NAME, TaskBean.ID, tmpValues); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/service/AlertService.java b/代码/TimeBetter-master/src/com/timebetter/service/AlertService.java new file mode 100644 index 0000000..336f0ff --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/service/AlertService.java @@ -0,0 +1,115 @@ +package com.timebetter.service; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.Binder; +import android.os.Handler; +import android.os.IBinder; +import android.os.Message; +import android.os.Vibrator; +import android.telephony.PhoneStateListener; +import android.telephony.TelephonyManager; + + +public class AlertService extends Service { + + private Vibrator mVibrator; + private TelephonyManager mTelephonyManager; + private int mInitialCallState; + private static final long[] sVibratePattern = new long[] { 500, 500 }; + private static final int ALARM_TIMEOUT_SECONDS = 10 * 60; + private static final int KILLER = 1000; + private boolean mPlaying = false; + + private LocalBinder myBinder = new LocalBinder(); + + public class LocalBinder extends Binder { + public AlertService getService() { + return AlertService.this; + } + } + + @Override + public IBinder onBind(Intent arg0) { + // TODO Auto-generated method stub + return myBinder; + } + + @Override + public void onCreate() { + // TODO Auto-generated method stub + super.onCreate(); + mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); + mTelephonyManager.listen(mPhoneStateListener, + PhoneStateListener.LISTEN_CALL_STATE); +// AlarmAlertWakeLock.acquireCpuWakeLock(this); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + // TODO Auto-generated method stub + if(intent == null) { + stopSelf(); + return START_NOT_STICKY; + } + playAlarm(); + mInitialCallState = mTelephonyManager.getCallState(); + return START_STICKY; + } + + private void playAlarm() { + mPlaying = true; + mVibrator.vibrate(sVibratePattern, 0); + enableKiller(); + } + + private void enableKiller() { + mHandler.sendMessageDelayed(mHandler.obtainMessage(KILLER), + 1000 * ALARM_TIMEOUT_SECONDS); + } + + private Handler mHandler = new Handler() { + + @Override + public void handleMessage(Message msg) { + // TODO Auto-generated method stub + switch(msg.what) { + case KILLER: + stopSelf(); + break; + } + } + + }; + + private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { + @Override + public void onCallStateChanged(int state, String ignored) { + if (state != TelephonyManager.CALL_STATE_IDLE + && state != mInitialCallState) { + stopSelf(); + } + } + }; + + @Override + public void onDestroy() { + stop(); + mTelephonyManager.listen(mPhoneStateListener, 0); +// AlarmAlertWakeLock.releaseCpuLock(); + } + + private void stop() { + if(mPlaying) { + mPlaying = false; + mVibrator.cancel(); + } + disableKiller(); + } + + private void disableKiller() { + mHandler.removeMessages(KILLER); + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/service/PlanBetterInit.java b/代码/TimeBetter-master/src/com/timebetter/service/PlanBetterInit.java new file mode 100644 index 0000000..7972751 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/service/PlanBetterInit.java @@ -0,0 +1,168 @@ +package com.timebetter.service; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Iterator; +import java.util.List; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.app.Service; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.os.Binder; +import android.os.Bundle; +import android.os.IBinder; +import android.util.Log; + +import com.timebetter.alarm.Alarm; +import com.timebetter.bean.TaskBean; +import com.timebetter.constant.TaskConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; +import com.timebetter.receiver.PlanBetterReceiver; +import com.timebetter.widget.TodayTaskWidget; +import com.timebetter.widget.TomorrowTaskWidgetService; + +public class PlanBetterInit extends Service { + + private LocalBinder myBinder = new LocalBinder(); + + public class LocalBinder extends Binder { + public PlanBetterInit getService() { + return PlanBetterInit.this; + } + } + + @Override + public IBinder onBind(Intent intent) { + // TODO Auto-generated method stub + return myBinder; + } + + + @Override + public void onStart(Intent intent, int startId) { + // TODO Auto-generated method stub + super.onStart(intent, startId); + //ˢݿϢ + //ļ¼ѯǷҪ޸is_futureֶ + //ȡҪ޸is_futureֶεid + try { + initTaskInfo(); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + registerAlarm(this); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + sendBroadcastToTodayWidget(); + startServiceToFreshTomorrowWidget(); + //ע + setMyDateChangedAlarm(); + stopSelf(startId); + } + + private void setMyDateChangedAlarm() { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + cal.add(Calendar.DAY_OF_MONTH, 1); + AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); + Intent intent = new Intent(PlanBetterReceiver.DATE_CHANGED); + PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); + am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); + } + + private void startServiceToFreshTomorrowWidget() { + Intent intent = new Intent(this, TomorrowTaskWidgetService.class); + startService(intent); + } + + private void sendBroadcastToTodayWidget() { + Intent bcast = new Intent(this, TodayTaskWidget.class); + bcast.setAction(TodayTaskWidget.ACTION_NEXT_TIP); + sendBroadcast(bcast); + } + + private void initTaskInfo() throws ParseException { + List taskId = getNeedModifyTaskId(); + Iterator iterator = taskId.iterator(); + while(iterator.hasNext()) { + int id = iterator.next(); + modifyTaskInfo(id); + } + } + + private void modifyTaskInfo(int taskId) { + ContentValues values = new ContentValues(); + values.put(TaskBean.IF_FUTURE, TaskConstant.NOT_FUTURE); + DatabaseUtil.update(this, TaskBean.TABLE_NAME, values, TaskBean.ID+"="+taskId, null); + } + + private List getNeedModifyTaskId() throws ParseException { + Log.d("debug", "getNeedModifyTaskId()"); + List taskId = new ArrayList(); + Cursor cursor = DatabaseUtil.query(this, TaskBean.TABLE_NAME, new String[]{TaskBean.ID, TaskBean.DATETIME, TaskBean.IF_FUTURE}, + TaskBean.IF_FUTURE+"="+TaskConstant.IS_FUTURE, null, null, null, TaskBean.ID+" ASC"); + for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) { + String datetime = cursor.getString(cursor.getColumnIndex(TaskBean.DATETIME)); + int ifFuture = cursor.getInt(cursor.getColumnIndex(TaskBean.IF_FUTURE)); + int id = cursor.getInt(cursor.getColumnIndex(TaskBean.ID)); + Log.d("debug","idΪ"+id+" ifFuture="+ifFuture); + //Ƚ + if(DateUtils.checkTimePassOrNot(datetime) && ifFuture == TaskConstant.IS_FUTURE) { + Log.d("debug", "Ҫ޸ĵId"+id); + //Ҫ޸ + taskId.add(id); + } + } + DatabaseUtil.closeDatabase(); + return taskId; + } + + private void registerAlarm(Context context) throws ParseException { + + Alarm.resetAlarmIconSize(context); + + // ѯݿ,ȡϢ + Cursor todayTaskCur = DatabaseUtil.query(context, + TaskBean.TABLE_NAME, new String[]{TaskBean.ID, TaskBean.TIME_ALERT_FLAG, TaskBean.DATETIME}, TaskBean.DATETIME + " LIKE ?", + new String[] { DateUtils.now() + "%" }, null, null, TaskBean.ID + + " ASC"); + + // Ϣ + + for (todayTaskCur.moveToFirst(); !todayTaskCur.isAfterLast(); todayTaskCur + .moveToNext()) { + int taskId = todayTaskCur.getInt(0); + int alarmTag = todayTaskCur.getInt(1); + String datetime = todayTaskCur.getString(2); + if(alarmTag == TaskConstant.TIME_ALERT) { + if(DateUtils.checkTimeAlertable(datetime)) { + registerAlarm(taskId, datetime); + } + } + } + DatabaseUtil.closeDatabase(); + + } + + private void registerAlarm(int id, String datetime) throws ParseException { + Intent intent = new Intent(Alarm.ALARM_REGISTRATION_SIMPLE_ACTION); + Bundle bundle = new Bundle(); + bundle.putInt(Alarm.ID, id); + bundle.putString(Alarm.DATETIME, datetime); + intent.putExtra(Alarm.ALARM_REGISTRATION_BUNDLE_TAG, bundle); + sendBroadcast(intent); + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/view/AlwaysMarqueeTextView.java b/代码/TimeBetter-master/src/com/timebetter/view/AlwaysMarqueeTextView.java new file mode 100644 index 0000000..f8c8904 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/view/AlwaysMarqueeTextView.java @@ -0,0 +1,30 @@ +package com.timebetter.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.TextView; + +public class AlwaysMarqueeTextView extends TextView { + + public AlwaysMarqueeTextView(Context context) { + super(context); + } + + public AlwaysMarqueeTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AlwaysMarqueeTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public boolean isFocused() { +// Paint paint = new Paint(); +// paint.setTextSize(getTextSize()); +// if(paint.measureText(getText().toString()) > getTextSize()) { +// return true; +// } + return true; + } + +} diff --git a/代码/TimeBetter-master/src/com/timebetter/view/CoverFlow.java b/代码/TimeBetter-master/src/com/timebetter/view/CoverFlow.java new file mode 100644 index 0000000..fd760e8 --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/view/CoverFlow.java @@ -0,0 +1,160 @@ +package com.timebetter.view; + +import android.content.Context; +import android.graphics.Camera; +import android.graphics.Matrix; +import android.util.AttributeSet; +import android.view.View; +import android.view.animation.Transformation; +import android.widget.Gallery; +import android.widget.ImageView; + +public class CoverFlow extends Gallery { + + private Camera mCamera = new Camera(); + private int mMaxRotationAngle = 50; + private int mMaxZoom = -500; + private int mCoveflowCenter; + private boolean mAlphaMode = true; + private boolean mCircleMode = false; + + public CoverFlow(Context context) { + super(context); + this.setStaticTransformationsEnabled(true); + } + + public CoverFlow(Context context, AttributeSet attrs) { + super(context, attrs); + this.setStaticTransformationsEnabled(true); + } + + public CoverFlow(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + this.setStaticTransformationsEnabled(true); + } + + public int getMaxRotationAngle() { + return mMaxRotationAngle; + } + + public void setMaxRotationAngle(int maxRotationAngle) { + mMaxRotationAngle = maxRotationAngle; + } + + public boolean getCircleMode() { + return mCircleMode; + } + + public void setCircleMode(boolean isCircle) { + mCircleMode = isCircle; + } + + public boolean getAlphaMode() { + return mAlphaMode; + } + + public void setAlphaMode(boolean isAlpha) { + mAlphaMode = isAlpha; + } + + public int getMaxZoom() { + return mMaxZoom; + } + + public void setMaxZoom(int maxZoom) { + mMaxZoom = maxZoom; + } + + private int getCenterOfCoverflow() { + return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2 + + getPaddingLeft(); + } + + private static int getCenterOfView(View view) { + return view.getLeft() + view.getWidth() / 2; + } + + @Override + protected boolean getChildStaticTransformation(View child, Transformation t) { + final int childCenter = getCenterOfView(child); + final int childWidth = child.getWidth(); + int rotationAngle = 0; + t.clear(); + t.setTransformationType(Transformation.TYPE_MATRIX); + if (childCenter == mCoveflowCenter) { + transformImageBitmap((ImageView) child, t, 0, 0); + } else { + rotationAngle = (int) (((float) (mCoveflowCenter - childCenter) / childWidth) * mMaxRotationAngle); + if (Math.abs(rotationAngle) > mMaxRotationAngle) { + rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle + : mMaxRotationAngle; + } + transformImageBitmap( + (ImageView) child, + t, + rotationAngle, + (int) Math.floor((mCoveflowCenter - childCenter) + / (childWidth == 0 ? 1 : childWidth))); + } + return true; + } + + /** + * This is called during layout when the size of this view has changed. If + * you were just added to the view hierarchy, you're called with the old + * values of 0. + * + * @param w + * Current width of this view. + * @param h + * Current height of this view. + * @param oldw + * Old width of this view. + * @param oldh + * Old height of this view. + */ + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + mCoveflowCenter = getCenterOfCoverflow(); + super.onSizeChanged(w, h, oldw, oldh); + } + + /** + * Transform the Image Bitmap by the Angle passed + * + * @param imageView + * ImageView the ImageView whose bitmap we want to rotate + * @param t + * transformation + * @param rotationAngle + * the Angle by which to rotate the Bitmap + */ + private void transformImageBitmap(ImageView child, Transformation t, + int rotationAngle, int d) { + mCamera.save(); + final Matrix imageMatrix = t.getMatrix(); + final int imageHeight = child.getLayoutParams().height; + final int imageWidth = child.getLayoutParams().width; + final int rotation = Math.abs(rotationAngle); + mCamera.translate(0.0f, 0.0f, 100.0f); + // As the angle of the view gets less, zoom in + if (rotation <= mMaxRotationAngle) { + float zoomAmount = (float) (mMaxZoom + (rotation * 1.5)); + mCamera.translate(0.0f, 0.0f, zoomAmount); + if (mCircleMode) { + if (rotation < 40) + mCamera.translate(0.0f, 155, 0.0f); + else + mCamera.translate(0.0f, (255 - rotation * 2.5f), 0.0f); + } + if (mAlphaMode) { + ((ImageView) (child)).setAlpha((int) (255 - rotation * 2.5)); + } + } + mCamera.rotateY(rotationAngle); + mCamera.getMatrix(imageMatrix); + + imageMatrix.preTranslate(-(imageWidth / 2), -(imageHeight / 2)); + imageMatrix.postTranslate((imageWidth / 2), (imageHeight / 2)); + mCamera.restore(); + } +} diff --git a/代码/TimeBetter-master/src/com/timebetter/view/DateWidgetDayCell.java b/代码/TimeBetter-master/src/com/timebetter/view/DateWidgetDayCell.java new file mode 100644 index 0000000..5677e9c --- /dev/null +++ b/代码/TimeBetter-master/src/com/timebetter/view/DateWidgetDayCell.java @@ -0,0 +1,281 @@ +package com.timebetter.view; + +import java.util.Calendar; + +import android.content.Context; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Shader; +import android.util.Log; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.View; +import android.view.animation.AlphaAnimation; +import android.widget.LinearLayout.LayoutParams; + +import com.timebetter.activity.R; +import com.timebetter.bean.TaskBean; +import com.timebetter.constant.DayStyle; +import com.timebetter.constant.TaskConstant; +import com.timebetter.dao.DatabaseUtil; +import com.timebetter.date.DateUtils; + + +public class DateWidgetDayCell extends View { + // types + public interface OnItemClick { + public void OnClick(DateWidgetDayCell item); + } + + public static int ANIM_ALPHA_DURATION = 100; + // fields + private int fTextSize = 22;//22޸12 + private boolean dataflag = false; + private int iDateYear = 0; + private int iDateMonth = 0; + private int iDateDay = 0; + + // fields + private OnItemClick itemClick = null; + private Paint pt = new Paint(); + private RectF rect = new RectF(); + private String sDate = ""; + + // fields + private boolean bSelected = false; + private boolean bIsActiveMonth = false; + private boolean bToday = false; + private boolean bHoliday = false; + private boolean bTouchedDown = false; + private Context mcontext; + + // methods + public DateWidgetDayCell(Context context, int iWidth, int iHeight) { + super(context); + setFocusable(true); + setLayoutParams(new LayoutParams(iWidth, iHeight)); + + mcontext = context; + + fTextSize = iWidth/2; + } + + public boolean getSelected() { + return this.bSelected; + } + + public void setSelected(boolean bEnable) { + if (this.bSelected != bEnable) { + this.bSelected = bEnable; + this.invalidate(); + } + } + + public void setData(int iYear, int iMonth, int iDay, boolean bToday, + boolean bHoliday, int iActiveMonth) { + iDateYear = iYear; + iDateMonth = iMonth; + iDateDay = iDay; + + this.sDate = Integer.toString(iDateDay); + this.bIsActiveMonth = (iDateMonth == iActiveMonth); + this.bToday = bToday; + this.bHoliday = bHoliday; + this.dataflag = checkData(iYear, iMonth, iDay); + } + + public void setItemClick(OnItemClick itemClick) { + this.itemClick = itemClick; + } + + private int getTextHeight() { + return (int) (-pt.ascent() + pt.descent()); + } + + public boolean onKeyDown(int keyCode, KeyEvent event) { + boolean bResult = super.onKeyDown(keyCode, event); + if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) + || (keyCode == KeyEvent.KEYCODE_ENTER)) { + doItemClick(); + } + return bResult; + } + + public boolean onKeyUp(int keyCode, KeyEvent event) { + boolean bResult = super.onKeyUp(keyCode, event); + return bResult; + } + + public void doItemClick() { + if (itemClick != null) + itemClick.OnClick(this); + } + + protected void onFocusChanged(boolean gainFocus, int direction, + Rect previouslyFocusedRect) { + super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); + invalidate(); + } + + public Calendar getDate() { + Calendar calDate = Calendar.getInstance(); + calDate.clear(); + calDate.set(Calendar.YEAR, iDateYear); + calDate.set(Calendar.MONTH, iDateMonth); + calDate.set(Calendar.DAY_OF_MONTH, iDateDay); + return calDate; + } + + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + // init rectangles + rect.set(0, 0, this.getWidth(), this.getHeight()); + rect.inset(1, 1); + + // drawing + final boolean bFocused = IsViewFocused(); + + drawDayView(canvas, bFocused); + drawDayNumber(canvas, bFocused); + } + + private void drawDayView(Canvas canvas, boolean bFocused) { + if(bIsActiveMonth) { + if (bSelected || bFocused) { + LinearGradient lGradBkg = null; + + if (bFocused) { + lGradBkg = new LinearGradient(rect.left, 0, rect.right, 0, + DayStyle.iColorBkgFocusDark, + DayStyle.iColorBkgFocusLight, Shader.TileMode.CLAMP); + } + + if (bSelected) { + lGradBkg = new LinearGradient(rect.left, 0, rect.right, 0, + DayStyle.iColorBkgSelectedDark, + DayStyle.iColorBkgSelectedLight, Shader.TileMode.CLAMP); + } + + if (lGradBkg != null) { + pt.setShader(lGradBkg); + canvas.drawRect(rect, pt); + } + + pt.setShader(null); + + } else { + + pt.setColor(DayStyle.getColorBkg(bHoliday, bToday)); + + /*if (!bIsActiveMonth)//ǵ + pt.setAlpha(iAlphaInactiveMonth);*/ + canvas.drawRect(rect, pt); + } + } else { + pt.setShader(null); + } + } + + public void drawDayNumber(Canvas canvas, boolean bFocused) { + // draw day number + pt.setTypeface(null); + pt.setAntiAlias(true); + pt.setShader(null); + pt.setFakeBoldText(true); + pt.setTextSize(fTextSize); + + pt.setUnderlineText(false); + if (bToday) + pt.setUnderlineText(true); + + int iTextPosX = (int) rect.right - (int) pt.measureText(sDate); + int iTextPosY = (int) rect.bottom + (int) (-pt.ascent()) + - getTextHeight(); + + iTextPosX -= ((int) rect.width() >> 1) + - ((int) pt.measureText(sDate) >> 1); + iTextPosY -= ((int) rect.height() >> 1) - (getTextHeight() >> 1); + + // draw text + + if (bIsActiveMonth) + { + if (bSelected || bFocused) { + if (bSelected) + pt.setColor(DayStyle.iColorTextSelected); + if (bFocused) + pt.setColor(DayStyle.iColorTextFocused); + } else { + pt.setColor(DayStyle.getColorText(bHoliday, bToday)); + } + if(dataflag) + { + Bitmap bitmap = BitmapFactory.decodeResource( + mcontext.getResources(), R.drawable.history_flag); + canvas.drawBitmap(bitmap, 4, 8, pt); + } + canvas.drawText(sDate, iTextPosX, iTextPosY+8, pt); + pt.setUnderlineText(false); + } + } + + + public boolean IsViewFocused() { + return (this.isFocused() || bTouchedDown); + } + + public boolean onTouchEvent(MotionEvent event) { + boolean bHandled = false; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + bHandled = true; + bTouchedDown = true; + invalidate(); + startAlphaAnimIn(DateWidgetDayCell.this); + } + if (event.getAction() == MotionEvent.ACTION_CANCEL) { + bHandled = true; + bTouchedDown = false; + invalidate(); + } + if (event.getAction() == MotionEvent.ACTION_UP) { + bHandled = true; + bTouchedDown = false; + invalidate(); + doItemClick(); + } + return bHandled; + } + + public static void startAlphaAnimIn(View view) { + AlphaAnimation anim = new AlphaAnimation(0.5F, 1); + anim.setDuration(ANIM_ALPHA_DURATION); + anim.startNow(); + view.startAnimation(anim); + } + + private boolean checkData(int year, int month, int day) + { + boolean hasData = false; + String date = DateUtils.formatDate(year, month+1, day); + + Cursor todayTaskCur = DatabaseUtil.query(mcontext, + TaskBean.TABLE_NAME, null, TaskBean.DATETIME + " LIKE ? AND "+TaskBean.IF_FUTURE+" = ?", + new String[] { date + "%", TaskConstant.NOT_FUTURE+"" }, null, null, null); + + // Ϣ + todayTaskCur.moveToFirst(); + hasData = !todayTaskCur.isAfterLast(); + DatabaseUtil.closeDatabase(); + + Log.d("debug", date+hasData); + return hasData; + } + +}