- fixed RTM deadline sync bug

- cache italics status
  - clear alarms for cleared deadlines
  - timer indicator
  - new indicator bar icons
pull/14/head
Tim Su 17 years ago
parent 927f7eb5ba
commit 16efea1657

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid"
android:versionCode="72"
android:versionName="2.1.4">
android:versionCode="73"
android:versionName="2.2.0">
<meta-data android:name="com.a0soft.gphone.aTrackDog.webURL"
android:value="http://www.weloveastrid.com" />
@ -31,7 +31,8 @@
android:theme="@android:style/Theme.Dialog"
android:launchMode="singleTask" />
<activity android:name=".activities.TaskEdit" />
<activity android:name=".activities.TaskEdit"
android:label="@string/taskEdit_label"/>
<activity android:name=".activities.TagList"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

@ -126,6 +126,7 @@
<string name="taskEdit_titleGeneric">Astrid: Editing Task</string>
<string name="taskEdit_titlePrefix">Astrid: Editing </string>
<string name="taskEdit_label">Astrid: New Task</string>
<string name="task_edit_tab_1">Basic</string>
<string name="task_edit_tab_2">Dates</string>
@ -273,6 +274,7 @@ Wish me luck!\n
<string name="notif_definiteDueDate">Absolute Deadline!</string>
<string name="notif_preferredDueDate">Goal Deadline!</string>
<string name="notif_timerStarted">Working on:</string>
<!-- Error Messages -->
<skip />

@ -68,24 +68,26 @@ public final class R {
public static final int ic_dialog_time_c=0x7f020013;
public static final int icon=0x7f020014;
public static final int icon_timer=0x7f020015;
public static final int notification_icon=0x7f020016;
public static final int timepicker_down_btn=0x7f020017;
public static final int timepicker_down_disabled=0x7f020018;
public static final int timepicker_down_disabled_focused=0x7f020019;
public static final int timepicker_down_normal=0x7f02001a;
public static final int timepicker_down_pressed=0x7f02001b;
public static final int timepicker_down_selected=0x7f02001c;
public static final int timepicker_input=0x7f02001d;
public static final int timepicker_input_disabled=0x7f02001e;
public static final int timepicker_input_normal=0x7f02001f;
public static final int timepicker_input_pressed=0x7f020020;
public static final int timepicker_input_selected=0x7f020021;
public static final int timepicker_up_btn=0x7f020022;
public static final int timepicker_up_disabled=0x7f020023;
public static final int timepicker_up_disabled_focused=0x7f020024;
public static final int timepicker_up_normal=0x7f020025;
public static final int timepicker_up_pressed=0x7f020026;
public static final int timepicker_up_selected=0x7f020027;
public static final int notification_clock=0x7f020016;
public static final int notification_icon=0x7f020017;
public static final int notification_tag_pink=0x7f020018;
public static final int timepicker_down_btn=0x7f020019;
public static final int timepicker_down_disabled=0x7f02001a;
public static final int timepicker_down_disabled_focused=0x7f02001b;
public static final int timepicker_down_normal=0x7f02001c;
public static final int timepicker_down_pressed=0x7f02001d;
public static final int timepicker_down_selected=0x7f02001e;
public static final int timepicker_input=0x7f02001f;
public static final int timepicker_input_disabled=0x7f020020;
public static final int timepicker_input_normal=0x7f020021;
public static final int timepicker_input_pressed=0x7f020022;
public static final int timepicker_input_selected=0x7f020023;
public static final int timepicker_up_btn=0x7f020024;
public static final int timepicker_up_disabled=0x7f020025;
public static final int timepicker_up_disabled_focused=0x7f020026;
public static final int timepicker_up_normal=0x7f020027;
public static final int timepicker_up_pressed=0x7f020028;
public static final int timepicker_up_selected=0x7f020029;
}
public static final class id {
public static final int addAlert=0x7f0b0036;
@ -212,38 +214,38 @@ public final class R {
public static final int Ntasks=0x7f090000;
}
public static final class string {
public static final int add_alert=0x7f08004b;
public static final int add_alert=0x7f08004c;
public static final int addtask_label=0x7f08000d;
public static final int ago_suffix=0x7f080065;
public static final int alerts_label=0x7f08004a;
public static final int ago_suffix=0x7f080066;
public static final int alerts_label=0x7f08004b;
/** application
*/
public static final int app_name=0x7f080000;
public static final int blank_button_title=0x7f080055;
public static final int blockingOn_label=0x7f080040;
public static final int blank_button_title=0x7f080056;
public static final int blockingOn_label=0x7f080041;
public static final int daysVertical=0x7f080008;
public static final int definiteDueDate_label=0x7f08003b;
public static final int delete_label=0x7f080054;
public static final int delete_this_tag_title=0x7f080090;
public static final int delete_this_task_title=0x7f08008f;
public static final int delete_title=0x7f08008e;
public static final int discard_label=0x7f080053;
public static final int displayedFields_PrefScreen_Desc=0x7f0800b2;
public static final int displayedFields_PrefScreen_Title=0x7f0800b1;
public static final int edit_label=0x7f08005c;
public static final int elapsedDuration_label=0x7f08003a;
public static final int error_opening=0x7f080094;
public static final int error_saving=0x7f080095;
public static final int estimatedDuration_label=0x7f080039;
public static final int flag_after=0x7f080048;
public static final int flag_before=0x7f080046;
public static final int flag_during=0x7f080047;
public static final int flag_nonstop=0x7f080049;
public static final int flags_label=0x7f080045;
public static final int hiddenUntil_label=0x7f08003d;
public static final int definiteDueDate_label=0x7f08003c;
public static final int delete_label=0x7f080055;
public static final int delete_this_tag_title=0x7f080091;
public static final int delete_this_task_title=0x7f080090;
public static final int delete_title=0x7f08008f;
public static final int discard_label=0x7f080054;
public static final int displayedFields_PrefScreen_Desc=0x7f0800b4;
public static final int displayedFields_PrefScreen_Title=0x7f0800b3;
public static final int edit_label=0x7f08005d;
public static final int elapsedDuration_label=0x7f08003b;
public static final int error_opening=0x7f080096;
public static final int error_saving=0x7f080097;
public static final int estimatedDuration_label=0x7f08003a;
public static final int flag_after=0x7f080049;
public static final int flag_before=0x7f080047;
public static final int flag_during=0x7f080048;
public static final int flag_nonstop=0x7f08004a;
public static final int flags_label=0x7f080046;
public static final int hiddenUntil_label=0x7f08003e;
/** dialog boxes
*/
public static final int hour_minutes_dialog=0x7f08004c;
public static final int hour_minutes_dialog=0x7f08004d;
public static final int hoursVertical=0x7f080009;
/** Importance Labels
*/
@ -251,139 +253,141 @@ public final class R {
public static final int importance_2=0x7f080002;
public static final int importance_3=0x7f080003;
public static final int importance_4=0x7f080004;
public static final int importance_label=0x7f080037;
public static final int information_title=0x7f080088;
public static final int name_hint=0x7f080036;
public static final int importance_label=0x7f080038;
public static final int information_title=0x7f080089;
public static final int name_hint=0x7f080037;
/** labels
*/
public static final int name_label=0x7f080035;
public static final int notes_hint=0x7f080042;
public static final int notes_label=0x7f080041;
public static final int notif_definiteDueDate=0x7f080092;
public static final int notif_preferredDueDate=0x7f080093;
public static final int notification_dialog=0x7f08004d;
public static final int notification_label=0x7f080043;
public static final int notification_prefix=0x7f080044;
public static final int notify_no=0x7f08008c;
public static final int notify_snooze=0x7f08008b;
public static final int notify_snooze_title=0x7f08008d;
public static final int notify_yes=0x7f08008a;
public static final int overdue_suffix=0x7f080064;
public static final int p_colorize=0x7f0800a7;
public static final int p_deadlineTime=0x7f0800ae;
public static final int p_fontSize=0x7f0800aa;
public static final int p_notif_annoy=0x7f0800a0;
public static final int p_notif_defaultRemind=0x7f08009d;
public static final int p_notif_quietEnd=0x7f08009a;
public static final int p_notif_quietStart=0x7f080097;
public static final int p_notification_ringtone=0x7f0800a3;
public static final int p_sync_background=0x7f08007e;
public static final int p_sync_button=0x7f080078;
public static final int p_sync_every=0x7f080075;
public static final int p_sync_quiet=0x7f08007b;
public static final int p_sync_rtm=0x7f080072;
public static final int preferredDueDate_label=0x7f08003c;
public static final int prefs_annoy_desc=0x7f0800a2;
public static final int prefs_annoy_title=0x7f0800a1;
public static final int prefs_category_alerts=0x7f080096;
public static final int prefs_category_appearance=0x7f0800a6;
public static final int prefs_category_other=0x7f0800ad;
public static final int prefs_colorize_desc=0x7f0800a9;
public static final int prefs_colorize_title=0x7f0800a8;
public static final int prefs_deadlineTime_desc=0x7f0800b0;
public static final int prefs_deadlineTime_title=0x7f0800af;
public static final int prefs_deadlineVisible=0x7f0800b7;
public static final int prefs_deadlineVisible_default=0x7f0800ba;
public static final int prefs_deadlineVisible_desc=0x7f0800b9;
public static final int prefs_deadlineVisible_title=0x7f0800b8;
public static final int prefs_defaultRemind_desc=0x7f08009f;
public static final int prefs_defaultRemind_title=0x7f08009e;
public static final int prefs_fontSize_desc=0x7f0800ac;
public static final int prefs_fontSize_title=0x7f0800ab;
public static final int prefs_importanceVisible=0x7f0800bf;
public static final int prefs_importanceVisible_default=0x7f0800c2;
public static final int prefs_importanceVisible_desc=0x7f0800c1;
public static final int prefs_importanceVisible_title=0x7f0800c0;
public static final int prefs_notesVisible=0x7f0800cf;
public static final int prefs_notesVisible_default=0x7f0800d2;
public static final int prefs_notesVisible_desc=0x7f0800d1;
public static final int prefs_notesVisible_title=0x7f0800d0;
public static final int prefs_notification_desc=0x7f0800a5;
public static final int prefs_notification_title=0x7f0800a4;
public static final int prefs_quietEnd_desc=0x7f08009c;
public static final int prefs_quietEnd_title=0x7f08009b;
public static final int prefs_quietStart_desc=0x7f080099;
public static final int prefs_quietStart_title=0x7f080098;
public static final int prefs_reminderVisible=0x7f0800cb;
public static final int prefs_reminderVisible_default=0x7f0800ce;
public static final int prefs_reminderVisible_desc=0x7f0800cd;
public static final int prefs_reminderVisible_title=0x7f0800cc;
public static final int prefs_repeatVisible=0x7f0800c7;
public static final int prefs_repeatVisible_default=0x7f0800ca;
public static final int prefs_repeatVisible_desc=0x7f0800c9;
public static final int prefs_repeatVisible_title=0x7f0800c8;
public static final int prefs_tagsVisible=0x7f0800c3;
public static final int prefs_tagsVisible_default=0x7f0800c6;
public static final int prefs_tagsVisible_desc=0x7f0800c5;
public static final int prefs_tagsVisible_title=0x7f0800c4;
public static final int prefs_timeVisible=0x7f0800bb;
public static final int prefs_timeVisible_default=0x7f0800be;
public static final int prefs_timeVisible_desc=0x7f0800bd;
public static final int prefs_timeVisible_title=0x7f0800bc;
public static final int prefs_titleVisible=0x7f0800b3;
public static final int prefs_titleVisible_default=0x7f0800b6;
public static final int prefs_titleVisible_desc=0x7f0800b5;
public static final int prefs_titleVisible_title=0x7f0800b4;
public static final int progress_dialog=0x7f080066;
public static final int progress_suffix=0x7f08005b;
public static final int question_title=0x7f080089;
public static final int name_label=0x7f080036;
public static final int notes_hint=0x7f080043;
public static final int notes_label=0x7f080042;
public static final int notif_definiteDueDate=0x7f080093;
public static final int notif_preferredDueDate=0x7f080094;
public static final int notif_timerStarted=0x7f080095;
public static final int notification_dialog=0x7f08004e;
public static final int notification_label=0x7f080044;
public static final int notification_prefix=0x7f080045;
public static final int notify_no=0x7f08008d;
public static final int notify_snooze=0x7f08008c;
public static final int notify_snooze_title=0x7f08008e;
public static final int notify_yes=0x7f08008b;
public static final int overdue_suffix=0x7f080065;
public static final int p_colorize=0x7f0800a9;
public static final int p_deadlineTime=0x7f0800b0;
public static final int p_fontSize=0x7f0800ac;
public static final int p_notif_annoy=0x7f0800a2;
public static final int p_notif_defaultRemind=0x7f08009f;
public static final int p_notif_quietEnd=0x7f08009c;
public static final int p_notif_quietStart=0x7f080099;
public static final int p_notification_ringtone=0x7f0800a5;
public static final int p_sync_background=0x7f08007f;
public static final int p_sync_button=0x7f080079;
public static final int p_sync_every=0x7f080076;
public static final int p_sync_quiet=0x7f08007c;
public static final int p_sync_rtm=0x7f080073;
public static final int preferredDueDate_label=0x7f08003d;
public static final int prefs_annoy_desc=0x7f0800a4;
public static final int prefs_annoy_title=0x7f0800a3;
public static final int prefs_category_alerts=0x7f080098;
public static final int prefs_category_appearance=0x7f0800a8;
public static final int prefs_category_other=0x7f0800af;
public static final int prefs_colorize_desc=0x7f0800ab;
public static final int prefs_colorize_title=0x7f0800aa;
public static final int prefs_deadlineTime_desc=0x7f0800b2;
public static final int prefs_deadlineTime_title=0x7f0800b1;
public static final int prefs_deadlineVisible=0x7f0800b9;
public static final int prefs_deadlineVisible_default=0x7f0800bc;
public static final int prefs_deadlineVisible_desc=0x7f0800bb;
public static final int prefs_deadlineVisible_title=0x7f0800ba;
public static final int prefs_defaultRemind_desc=0x7f0800a1;
public static final int prefs_defaultRemind_title=0x7f0800a0;
public static final int prefs_fontSize_desc=0x7f0800ae;
public static final int prefs_fontSize_title=0x7f0800ad;
public static final int prefs_importanceVisible=0x7f0800c1;
public static final int prefs_importanceVisible_default=0x7f0800c4;
public static final int prefs_importanceVisible_desc=0x7f0800c3;
public static final int prefs_importanceVisible_title=0x7f0800c2;
public static final int prefs_notesVisible=0x7f0800d1;
public static final int prefs_notesVisible_default=0x7f0800d4;
public static final int prefs_notesVisible_desc=0x7f0800d3;
public static final int prefs_notesVisible_title=0x7f0800d2;
public static final int prefs_notification_desc=0x7f0800a7;
public static final int prefs_notification_title=0x7f0800a6;
public static final int prefs_quietEnd_desc=0x7f08009e;
public static final int prefs_quietEnd_title=0x7f08009d;
public static final int prefs_quietStart_desc=0x7f08009b;
public static final int prefs_quietStart_title=0x7f08009a;
public static final int prefs_reminderVisible=0x7f0800cd;
public static final int prefs_reminderVisible_default=0x7f0800d0;
public static final int prefs_reminderVisible_desc=0x7f0800cf;
public static final int prefs_reminderVisible_title=0x7f0800ce;
public static final int prefs_repeatVisible=0x7f0800c9;
public static final int prefs_repeatVisible_default=0x7f0800cc;
public static final int prefs_repeatVisible_desc=0x7f0800cb;
public static final int prefs_repeatVisible_title=0x7f0800ca;
public static final int prefs_tagsVisible=0x7f0800c5;
public static final int prefs_tagsVisible_default=0x7f0800c8;
public static final int prefs_tagsVisible_desc=0x7f0800c7;
public static final int prefs_tagsVisible_title=0x7f0800c6;
public static final int prefs_timeVisible=0x7f0800bd;
public static final int prefs_timeVisible_default=0x7f0800c0;
public static final int prefs_timeVisible_desc=0x7f0800bf;
public static final int prefs_timeVisible_title=0x7f0800be;
public static final int prefs_titleVisible=0x7f0800b5;
public static final int prefs_titleVisible_default=0x7f0800b8;
public static final int prefs_titleVisible_desc=0x7f0800b7;
public static final int prefs_titleVisible_title=0x7f0800b6;
public static final int progress_dialog=0x7f080067;
public static final int progress_suffix=0x7f08005c;
public static final int question_title=0x7f08008a;
/** Repeat Interval Labels
*/
public static final int repeat_days=0x7f080005;
public static final int repeat_help_dialog=0x7f080050;
public static final int repeat_help_dialog_title=0x7f08004f;
public static final int repeat_help_hide=0x7f080051;
public static final int repeat_label=0x7f08003e;
public static final int repeat_help_dialog=0x7f080051;
public static final int repeat_help_dialog_title=0x7f080050;
public static final int repeat_help_hide=0x7f080052;
public static final int repeat_label=0x7f08003f;
public static final int repeat_months=0x7f080007;
public static final int repeat_picker_title=0x7f08004e;
public static final int repeat_value_unset=0x7f08003f;
public static final int repeat_picker_title=0x7f08004f;
public static final int repeat_value_unset=0x7f080040;
public static final int repeat_weeks=0x7f080006;
/** buttons
*/
public static final int save_label=0x7f080052;
public static final int startTimer_label=0x7f080059;
public static final int stopTimer_label=0x7f08005a;
public static final int stop_timer_title=0x7f080091;
public static final int sync_auth_request=0x7f080082;
public static final int sync_background_desc=0x7f080080;
public static final int sync_background_title=0x7f08007f;
public static final int sync_button_desc=0x7f08007a;
public static final int sync_button_title=0x7f080079;
public static final int sync_error=0x7f080081;
public static final int sync_every_desc=0x7f080077;
public static final int sync_every_title=0x7f080076;
public static final int sync_forget=0x7f080085;
public static final int sync_forget_confirm=0x7f080086;
public static final int sync_no_synchronizers=0x7f080087;
public static final int sync_now=0x7f080084;
public static final int sync_pref_group=0x7f08006f;
public static final int sync_pref_group_actions=0x7f080070;
public static final int sync_pref_group_options=0x7f080071;
public static final int sync_quiet_desc=0x7f08007d;
public static final int sync_quiet_title=0x7f08007c;
public static final int sync_rtm_desc=0x7f080074;
public static final int sync_rtm_notes=0x7f080083;
public static final int sync_rtm_title=0x7f080073;
public static final int tagList_context_create=0x7f080068;
public static final int tagList_context_delete=0x7f08006a;
public static final int tagList_context_edit=0x7f080069;
public static final int tagList_context_hideTag=0x7f08006c;
public static final int tagList_context_showTag=0x7f08006b;
public static final int tagList_menu_sortAlpha=0x7f08006d;
public static final int tagList_menu_sortSize=0x7f08006e;
public static final int tagList_titlePrefix=0x7f080067;
public static final int tags_label=0x7f080038;
public static final int taskEdit_menu_save=0x7f080056;
public static final int save_label=0x7f080053;
public static final int startTimer_label=0x7f08005a;
public static final int stopTimer_label=0x7f08005b;
public static final int stop_timer_title=0x7f080092;
public static final int sync_auth_request=0x7f080083;
public static final int sync_background_desc=0x7f080081;
public static final int sync_background_title=0x7f080080;
public static final int sync_button_desc=0x7f08007b;
public static final int sync_button_title=0x7f08007a;
public static final int sync_error=0x7f080082;
public static final int sync_every_desc=0x7f080078;
public static final int sync_every_title=0x7f080077;
public static final int sync_forget=0x7f080086;
public static final int sync_forget_confirm=0x7f080087;
public static final int sync_no_synchronizers=0x7f080088;
public static final int sync_now=0x7f080085;
public static final int sync_pref_group=0x7f080070;
public static final int sync_pref_group_actions=0x7f080071;
public static final int sync_pref_group_options=0x7f080072;
public static final int sync_quiet_desc=0x7f08007e;
public static final int sync_quiet_title=0x7f08007d;
public static final int sync_rtm_desc=0x7f080075;
public static final int sync_rtm_notes=0x7f080084;
public static final int sync_rtm_title=0x7f080074;
public static final int tagList_context_create=0x7f080069;
public static final int tagList_context_delete=0x7f08006b;
public static final int tagList_context_edit=0x7f08006a;
public static final int tagList_context_hideTag=0x7f08006d;
public static final int tagList_context_showTag=0x7f08006c;
public static final int tagList_menu_sortAlpha=0x7f08006e;
public static final int tagList_menu_sortSize=0x7f08006f;
public static final int tagList_titlePrefix=0x7f080068;
public static final int tags_label=0x7f080039;
public static final int taskEdit_label=0x7f080032;
public static final int taskEdit_menu_save=0x7f080057;
public static final int taskEdit_titleGeneric=0x7f080030;
public static final int taskEdit_titlePrefix=0x7f080031;
public static final int taskList_alarmSuffix=0x7f080017;
@ -423,18 +427,18 @@ public final class R {
public static final int taskList_tagsPrefix=0x7f080018;
public static final int taskList_titlePrefix=0x7f08000a;
public static final int taskList_titleTagPrefix=0x7f08000b;
public static final int taskView_creationDate=0x7f080061;
public static final int taskView_definiteDueDate=0x7f08005f;
public static final int taskView_elapsed=0x7f08005d;
public static final int taskView_estimated=0x7f08005e;
public static final int taskView_notes=0x7f080063;
public static final int taskView_notifyTitle=0x7f080058;
public static final int taskView_preferredDueDate=0x7f080060;
public static final int taskView_tags=0x7f080062;
public static final int taskView_title=0x7f080057;
public static final int task_edit_tab_1=0x7f080032;
public static final int task_edit_tab_2=0x7f080033;
public static final int task_edit_tab_3=0x7f080034;
public static final int taskView_creationDate=0x7f080062;
public static final int taskView_definiteDueDate=0x7f080060;
public static final int taskView_elapsed=0x7f08005e;
public static final int taskView_estimated=0x7f08005f;
public static final int taskView_notes=0x7f080064;
public static final int taskView_notifyTitle=0x7f080059;
public static final int taskView_preferredDueDate=0x7f080061;
public static final int taskView_tags=0x7f080063;
public static final int taskView_title=0x7f080058;
public static final int task_edit_tab_1=0x7f080033;
public static final int task_edit_tab_2=0x7f080034;
public static final int task_edit_tab_3=0x7f080035;
}
public static final class style {
public static final int Alert=0x7f0a0000;

@ -239,6 +239,11 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
if(name.getText().length() == 0)
return;
// if we've removed a deadline, delete alarms
if((definiteDueDate.getDate() == null && model.getDefiniteDueDate() != null) ||
(preferredDueDate.getDate() == null && model.getPreferredDueDate() != null))
Notifications.deleteAlarm(this, model.getTaskIdentifier().getId());
model.setName(name.getText().toString());
model.setEstimatedSeconds(estimatedDuration.getTimeDurationInSeconds());
model.setElapsedSeconds(elapsedDuration.getTimeDurationInSeconds());

@ -120,14 +120,33 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if(view == null)
if(view == null) {
view = inflater.inflate(resource, parent, false);
initializeView(view);
}
setupView(view, objects.get(position));
addListeners(position, view);
return view;
}
/**
* Perform initial setup on the row
*
* @param view
*/
private void initializeView(View view) {
final TextView name = ((TextView)view.findViewById(R.id.task_name));
if(fontSizePreference != null && fontSizePreference > 0)
name.setTextSize(fontSizePreference);
}
/**
* Setup the given view for the specified task
*
* @param view
* @param task
*/
private void setupView(View view, final TaskModelForList task) {
Resources r = activity.getResources();
@ -148,7 +167,7 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
}
/** Helper method to set the visibility based on if there's stuff inside */
private void setVisibility(TextView v) {
private static void setVisibility(TextView v) {
if(v.getText().length() > 0)
v.setVisibility(View.VISIBLE);
else
@ -174,14 +193,10 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
task.putCachedLabel(KEY_NAME, cachedResult);
}
name.setText(cachedResult);
if(CACHE_TRUE.equals(task.getCachedLabel(KEY_HIDDEN)))
name.setTypeface(Typeface.DEFAULT, Typeface.ITALIC);
else if(name.getTypeface().isItalic())
else
name.setTypeface(Typeface.DEFAULT_BOLD);
if(fontSizePreference != null && fontSizePreference > 0)
name.setTextSize(fontSizePreference);
}
setVisibility(name);

@ -24,6 +24,7 @@ import java.util.Date;
import java.util.HashSet;
import java.util.List;
import android.R;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
@ -217,12 +218,7 @@ public class TaskController extends AbstractController {
if(values.size() == 0) // nothing changed
return true;
// if this task is completed, perform some handling
if(values.containsKey(AbstractTaskModel.PROGRESS_PERCENTAGE) &&
values.getAsInteger(AbstractTaskModel.PROGRESS_PERCENTAGE)
== AbstractTaskModel.COMPLETE_PERCENTAGE) {
onTaskSetCompleted(task, values);
}
onTaskSave(task, values);
saveSucessful = database.update(TASK_TABLE_NAME, values,
KEY_ROWID + "=" + id, null) > 0;
@ -238,7 +234,35 @@ public class TaskController extends AbstractController {
return saveSucessful;
}
/** Called when this task is set to completed.
/**
* Called when the task is saved. Perform some processing on the task.
*
* @param task
* @param values
*/
private void onTaskSave(AbstractTaskModel task, ContentValues values) {
// task was completed
if(values.containsKey(AbstractTaskModel.PROGRESS_PERCENTAGE) &&
values.getAsInteger(AbstractTaskModel.PROGRESS_PERCENTAGE)
== AbstractTaskModel.COMPLETE_PERCENTAGE) {
onTaskSetCompleted(task, values);
}
// task timer was updated
if(values.containsKey(AbstractTaskModel.TIMER_START)) {
// show notification bar if timer was started
if(values.get(AbstractTaskModel.TIMER_START) != null) {
Notifications.showTimingNotification(context,
task.getTaskIdentifier(), task.getName());
} else {
Notifications.clearAllNotifications(context, task.getTaskIdentifier());
}
}
}
/**
* Called when this task is set to completed.
*
* @param task task to process
* @param values mutable map of values to save
@ -246,14 +270,7 @@ public class TaskController extends AbstractController {
private void onTaskSetCompleted(AbstractTaskModel task, ContentValues values) {
values.put(AbstractTaskModel.COMPLETION_DATE, System.currentTimeMillis());
// handle repeat
Cursor cursor = fetchTaskCursor(task.getTaskIdentifier(),
TaskModelForRepeat.FIELD_LIST);
TaskModelForRepeat repeatModel = new TaskModelForRepeat(cursor, values);
RepeatInfo repeatInfo = repeatModel.getRepeat();
if(repeatInfo != null)
repeatModel.repeatTaskBy(context, this, repeatInfo);
cursor.close();
}
/** Set last notification date */

@ -282,11 +282,13 @@ public class RTMSyncService extends SynchronizationService {
id.taskId, Priority.values()[task.importance.ordinal()]);
// due date
Date dueDate = task.definiteDueDate;
Date dueDate = task.dueDate;
if(dueDate == null)
dueDate = task.definiteDueDate;
if(dueDate == null)
dueDate = task.preferredDueDate;
if(dueDate != remoteTask.definiteDueDate &&
!dueDate.equals(remoteTask.definiteDueDate))
if(dueDate != remoteTask.dueDate &&
!dueDate.equals(remoteTask.dueDate))
rtmService.tasks_setDueDate(timeline, id.listId, id.taskSeriesId,
id.taskId, dueDate, dueDate != null);
@ -374,14 +376,12 @@ public class RTMSyncService extends SynchronizationService {
if(rtmTask.getDue() != null) {
Date due = rtmTask.getDue();
// just a day - set it to midnight
// if no time is set, set it to midnight
if(due.getHours() == 0 && due.getMinutes() == 0 && due.getSeconds() == 0) {
due.setHours(23);
due.setMinutes(59);
}
task.definiteDueDate = due;
task.dueDate = due;
}
task.progressPercentage = (rtmTask.getCompleted() == null) ? 0 : 100;

@ -41,6 +41,7 @@ public class TaskProxy {
Date creationDate = null;
Date completionDate = null;
Date dueDate = null;
Date definiteDueDate = null;
Date preferredDueDate = null;
Date hiddenUntil = null;
@ -93,6 +94,8 @@ public class TaskProxy {
creationDate = other.creationDate;
if(other.completionDate != null)
completionDate = other.completionDate;
if(other.dueDate != null)
dueDate = other.dueDate;
if(other.definiteDueDate != null)
definiteDueDate = other.definiteDueDate;
if(other.preferredDueDate != null)
@ -119,6 +122,7 @@ public class TaskProxy {
completionDate = task.getCompletionDate();
definiteDueDate = task.getDefiniteDueDate();
preferredDueDate = task.getPreferredDueDate();
dueDate = definiteDueDate != null ? definiteDueDate : preferredDueDate;
hiddenUntil = task.getHiddenUntil();
estimatedSeconds = task.getEstimatedSeconds();
elapsedSeconds = task.getElapsedSeconds();
@ -154,13 +158,27 @@ public class TaskProxy {
task.setCreationDate(creationDate);
if(completionDate != null)
task.setCompletionDate(completionDate);
if(definiteDueDate != null)
task.setDefiniteDueDate(definiteDueDate);
if(preferredDueDate != null)
task.setPreferredDueDate(preferredDueDate);
// date handling: if sync service only supports one type of due date,
// we have to figure out which field to write to based on what
// already has data
if(dueDate != null) {
if(task.getDefiniteDueDate() != null)
task.setDefiniteDueDate(dueDate);
else if(task.getPreferredDueDate() != null)
task.setPreferredDueDate(dueDate);
else
task.setDefiniteDueDate(dueDate);
} else {
if(definiteDueDate != null)
task.setDefiniteDueDate(definiteDueDate);
if(preferredDueDate != null)
task.setPreferredDueDate(preferredDueDate);
}
if(hiddenUntil != null)
task.setHiddenUntil(hiddenUntil);
if(estimatedSeconds != null)
task.setEstimatedSeconds(estimatedSeconds);
if(elapsedSeconds != null)

@ -20,6 +20,7 @@ import android.net.Uri;
import android.util.Log;
import com.timsu.astrid.R;
import com.timsu.astrid.activities.TaskView;
import com.timsu.astrid.activities.TaskViewNotifier;
import com.timsu.astrid.data.alerts.AlertController;
import com.timsu.astrid.data.task.TaskController;
@ -135,9 +136,10 @@ public class Notifications extends BroadcastReceiver {
if(task.getTaskIdentifier() == null)
return;
// return if we don't need to go any further
if(shouldDeleteAlarm(task)) {
deleteAlarm(context, task.getTaskIdentifier().getId());
return;
deleteAlarm(context, task.getTaskIdentifier().getId());
return;
}
// periodic reminders
@ -386,7 +388,7 @@ public class Notifications extends BroadcastReceiver {
// create notification object
String appName = r.getString(R.string.app_name);
Notification notification = new Notification(
R.drawable.notification_icon, reminder,
R.drawable.notification_tag_pink, reminder,
System.currentTimeMillis());
notification.setLatestEventInfo(context,
appName,
@ -434,4 +436,39 @@ public class Notifications extends BroadcastReceiver {
return true;
}
/** Show a notification when a user is "on-the-clock" for a given task */
public static boolean showTimingNotification(Context context,
TaskIdentifier taskId, String taskName) {
String text = context.getResources().getString(R.string.notif_timerStarted) +
" " + taskName;
NotificationManager nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Resources r = context.getResources();
Intent notifyIntent = new Intent(context, TaskView.class);
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
notifyIntent.putExtra(TaskViewNotifier.LOAD_INSTANCE_TOKEN, taskId.getId());
notifyIntent.putExtra(TaskViewNotifier.FROM_NOTIFICATION_TOKEN, true);
PendingIntent pendingIntent = PendingIntent.getActivity(context,
(int)taskId.getId(), notifyIntent, PendingIntent.FLAG_ONE_SHOT);
// create notification object
String appName = r.getString(R.string.app_name);
Notification notification = new Notification(
R.drawable.notification_clock, text,
System.currentTimeMillis());
notification.setLatestEventInfo(context,
appName,
text,
pendingIntent);
notification.flags |= Notification.FLAG_ONGOING_EVENT;
Log.w("Astrid", "Logging timing notification: " + text);
nm.notify((int)taskId.getId(), notification);
return true;
}
}
Loading…
Cancel
Save