Added warning for sync if IOException, and added the fields-picker from Sergi Velez's patch with some modifications.

pull/14/head
Tim Su 17 years ago
parent 66fc4fab73
commit 7171a3870e

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid" package="com.timsu.astrid"
android:versionCode="63" android:versionCode="64"
android:versionName="2.0.0"> android:versionName="2.0.1">
<meta-data android:name="com.a0soft.gphone.aTrackDog.webURL" <meta-data android:name="com.a0soft.gphone.aTrackDog.webURL"
android:value="http://www.weloveastrid.com" /> android:value="http://www.weloveastrid.com" />
@ -29,7 +29,32 @@
android:theme="@android:style/Theme.Dialog" android:theme="@android:style/Theme.Dialog"
android:launchMode="singleTask" /> android:launchMode="singleTask" />
<activity android:name=".activities.TaskEdit"/> <activity android:name=".activities.TaskEdit">
<intent-filter label="Astrid, Remind Me! 1">
<action android:name="android.intent.action.SEND" />
<data android:name="vnd.android.cursor.dir/*" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
</intent-filter>
<intent-filter label="Astrid, Remind Me! 2">
<action android:name="android.intent.action.SEND" />
<data android:name="vnd.android.cursor.item/email" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
</intent-filter>
<intent-filter label="Astrid, Remind Me! 3">
<action android:name="android.intent.action.SEND" />
<data android:name="vnd.android.cursor.item/person" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
</intent-filter>
<intent-filter label="Astrid, Remind Me! 4">
<action android:name="android.intent.action.SEND" />
<data android:name="item/person" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
</intent-filter>
</activity>
<activity android:name=".activities.TagList"/> <activity android:name=".activities.TagList"/>

@ -19,19 +19,21 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--> -->
<LinearLayout android:id="@+id/row_layout" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/row_layout"
android:orientation="horizontal" android:orientation="horizontal"
android:focusable="true" android:focusable="true"
android:background="@android:drawable/list_selector_background" android:background="@android:drawable/list_selector_background"
android:padding="6dip" android:padding="6dip"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:minHeight="45dip" >
<CheckBox android:id="@+id/cb1" <CheckBox android:id="@+id/cb1"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:scaleType="center"
android:drawingCacheQuality="low" android:drawingCacheQuality="low"
android:minWidth="41px" /> android:minWidth="41px" />
@ -39,9 +41,11 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:scaleType="center"
android:drawingCacheQuality="low" android:drawingCacheQuality="low"
android:paddingLeft="5dip"/> android:paddingLeft="5dip"/>
<!-- all text -->
<LinearLayout android:id="@+id/text_layout" <LinearLayout android:id="@+id/text_layout"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="5dip" android:paddingLeft="5dip"
@ -49,46 +53,55 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<TextView android:id="@+id/text1" <!-- task name -->
<TextView android:id="@+id/task_name"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
style="@style/TextAppearance.TaskList_Task" style="@style/TextAppearance.TaskList_Task"
android:gravity="center_vertical" android:gravity="center_vertical"
android:singleLine="true"/> android:singleLine="true"/>
<LinearLayout android:id="@+id/prop_layout" <!-- absolute / goal deadline -->
xmlns:android="http://schemas.android.com/apk/res/android" <TextView android:id="@+id/text_deadlines"
android:orientation="horizontal" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content"> style="@style/TextAppearance.TaskList_Detail"
color="@color/taskList_dueDate"
<TextView android:id="@+id/text_dueDate" android:singleLine="true"/>
android:gravity="top"
android:layout_height="wrap_content" <!-- elapsed / estimated time -->
android:layout_width="wrap_content" <TextView android:id="@+id/text_times"
style="@style/TextAppearance.TaskList_Detail" android:layout_height="wrap_content"
android:textColor="@color/taskList_dueDate" android:layout_width="wrap_content"
android:paddingRight="10dip" style="@style/TextAppearance.TaskList_Detail"
android:singleLine="true"/> android:singleLine="true"/>
<TextView android:id="@+id/text_remainingTime" <!-- repeats -->
android:gravity="top" <TextView android:id="@+id/text_repeats"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
style="@style/TextAppearance.TaskList_Detail" style="@style/TextAppearance.TaskList_Detail"
android:textColor="@color/taskList_remainingTime" android:singleLine="true"/>
android:paddingRight="10dip"
android:singleLine="true"/> <!-- reminders -->
<TextView android:id="@+id/text_reminders"
<TextView android:id="@+id/text_tags" android:layout_height="wrap_content"
android:gravity="top" android:layout_width="wrap_content"
android:layout_height="wrap_content" style="@style/TextAppearance.TaskList_Detail"
android:layout_width="wrap_content" android:singleLine="true"/>
style="@style/TextAppearance.TaskList_Detail"
android:textColor="@color/taskList_tags" <!-- tags -->
android:paddingRight="15dip" <TextView android:id="@+id/text_tags"
android:singleLine="true"/> android:layout_height="wrap_content"
</LinearLayout> android:layout_width="wrap_content"
style="@style/TextAppearance.TaskList_Detail"
android:singleLine="true"/>
<!-- notes -->
<TextView android:id="@+id/text_notes"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@style/TextAppearance.TaskList_Detail"/>
</LinearLayout> </LinearLayout>
@ -97,6 +110,7 @@
android:layout_width="24px" android:layout_width="24px"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:drawingCacheQuality="low" android:drawingCacheQuality="low"
android:scaleType="center"
android:paddingLeft="6dip" android:paddingLeft="6dip"
android:paddingRight="4dip"/> android:paddingRight="4dip"/>

@ -32,7 +32,7 @@
<color name="taskList_dueDate">#ffF0E89E</color> <color name="taskList_dueDate">#ffF0E89E</color>
<color name="taskList_remainingTime">#ff88AAFF</color> <color name="taskList_remainingTime">#ff88AAFF</color>
<color name="taskList_completedDate">#ff888888</color> <color name="taskList_completedDate">#ff888888</color>
<color name="taskList_tags">#ff888888</color> <color name="taskList_details">#ff888888</color>
<color name="view_header_done">#ff44bb66</color> <color name="view_header_done">#ff44bb66</color>
<color name="view_table_values">#ffbbbbbb</color> <color name="view_table_values">#ffbbbbbb</color>

@ -46,6 +46,10 @@
<item quantity="one">%d / %d Active</item> <item quantity="one">%d / %d Active</item>
<item quantity="other">%d / %d Active</item> <item quantity="other">%d / %d Active</item>
</plurals> </plurals>
<plurals name="Nalarms">
<item quantity="one">%d Alarm</item>
<item quantity="other">%d Alarms</item>
</plurals>
<plurals name="Ntags"> <plurals name="Ntags">
<item quantity="one">1 Tag</item> <item quantity="one">1 Tag</item>
<item quantity="other">%d Tags</item> <item quantity="other">%d Tags</item>
@ -75,18 +79,20 @@
<string name="taskList_titlePrefix">Astrid: </string> <string name="taskList_titlePrefix">Astrid: </string>
<string name="taskList_titleTagPrefix">Tagged \"%s\": </string> <string name="taskList_titleTagPrefix">Tagged \"%s\": </string>
<string name="taskList_hiddenSuffix"> hidden</string> <string name="taskList_hiddenSuffix"> hidden</string>
<string name="taskList_dueIn">Due:</string>
<string name="taskList_goalPrefix">Goal</string>
<string name="taskList_completedPrefix">Finished</string>
<string name="taskList_overdueBy">Overdue:</string>
<string name="taskList_hiddenPrefix">H</string>
<string name="addtask_label">New Task</string> <string name="addtask_label">New Task</string>
<string name="tags_prefix">Tags: </string>
<string name="no_tags">No Tags</string>
<string name="taskList_remaining">Left</string> <string name="taskList_hiddenPrefix">H</string>
<string name="taskList_overtime">Overtime</string> <string name="taskList_dueIn">Due in</string>
<string name="taskList_spent">Spent</string> <string name="taskList_goalPrefix">Goal</string>
<string name="taskList_overdueBy">Overdue by</string>
<string name="taskList_completedPrefix">Finished</string>
<string name="taskList_estimatedTimePrefix">Estimated:</string>
<string name="taskList_elapsedTimePrefix">Elapsed:</string>
<string name="taskList_periodicReminderPrefix">Reminder Every</string>
<string name="taskList_repeatPrefix">Repeat Every</string>
<string name="taskList_alarmSuffix">Set</string>
<string name="taskList_tagsPrefix">Tags:</string>
<string name="taskList_notesPrefix">Notes:</string>
<string name="taskList_menu_insert">Add</string> <string name="taskList_menu_insert">Add</string>
<string name="taskList_menu_tags">Tags</string> <string name="taskList_menu_tags">Tags</string>
@ -220,9 +226,10 @@ When finished, restart Astrid and come back here.
<string name="sync_rtm_notes"> <string name="sync_rtm_notes">
Welcome to Astrid\'s RTM sync! Welcome to Astrid\'s RTM sync!
\n\n \n\n
- Notifications and repeats are not synchronized.\n Things that don\'t sync:\n
- In RTM, deleting, or moving and then renaming a task, is not detected.\n - Notifications and repeats\n
- Having ~50+ tasks in one list might cause that list to not be imported\n - In RTM, deleting, or moving+renaming tasks\n
\n
Wish me luck!\n Wish me luck!\n
</string> </string>
<string name="sync_now">Synchronize Now!</string> <string name="sync_now">Synchronize Now!</string>
@ -290,4 +297,40 @@ Wish me luck!\n
<string name="prefs_category_other">Other</string> <string name="prefs_category_other">Other</string>
<string name="prefs_deadlineTime_title">Default Deadlines</string> <string name="prefs_deadlineTime_title">Default Deadlines</string>
<string name="prefs_deadlineTime_desc"># of days from now to set new deadlines</string> <string name="prefs_deadlineTime_desc"># of days from now to set new deadlines</string>
<string name="displayedFields_PrefScreen_Title">Displayed Fields</string>
<string name="displayedFields_PrefScreen_Desc">Select the fields to show in task list</string>
<string name="prefs_titleVisible">titleVisible</string>
<string name="prefs_titleVisible_title">Task Title</string>
<string name="prefs_titleVisible_desc">Task description</string>
<string name="prefs_titleVisible_default">true</string>
<string name="prefs_deadlineVisible">deadlineVisible</string>
<string name="prefs_deadlineVisible_title">Dates</string>
<string name="prefs_deadlineVisible_desc">Upcoming deadlines / completed date</string>
<string name="prefs_deadlineVisible_default">true</string>
<string name="prefs_timeVisible">timeVisible</string>
<string name="prefs_timeVisible_title">Times</string>
<string name="prefs_timeVisible_desc">Estimated &amp; Elapsed Times</string>
<string name="prefs_timeVisible_default">true</string>
<string name="prefs_importanceVisible">importanceVisible</string>
<string name="prefs_importanceVisible_title">Importance</string>
<string name="prefs_importanceVisible_desc">Task importance bubble</string>
<string name="prefs_importanceVisible_default">true</string>
<string name="prefs_tagsVisible">tagsVisible</string>
<string name="prefs_tagsVisible_title">Tags</string>
<string name="prefs_tagsVisible_desc">Tags associated with this task</string>
<string name="prefs_tagsVisible_default">true</string>
<string name="prefs_repeatVisible">repeatVisible</string>
<string name="prefs_repeatVisible_title">Repeats</string>
<string name="prefs_repeatVisible_desc">Task repeat information</string>
<string name="prefs_repeatVisible_default">true</string>
<string name="prefs_reminderVisible">reminderVisible</string>
<string name="prefs_reminderVisible_title">Reminders</string>
<string name="prefs_reminderVisible_desc">Displayed if this task has reminders</string>
<string name="prefs_reminderVisible_default">false</string>
<string name="prefs_notesVisible">notesVisible</string>
<string name="prefs_notesVisible_title">Notes</string>
<string name="prefs_notesVisible_desc">Notes associated with this task</string>
<string name="prefs_notesVisible_default">false</string>
</resources> </resources>

@ -36,7 +36,7 @@
<style name="TextAppearance.TaskList_Detail"> <style name="TextAppearance.TaskList_Detail">
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
<item name="android:textColor">@android:color/white</item> <item name="android:textColor">@color/taskList_details</item>
</style> </style>
<style name="TextAppearance.EditEvent_Label"> <style name="TextAppearance.EditEvent_Label">

@ -26,20 +26,63 @@
android:summary="@string/prefs_notification_desc" android:summary="@string/prefs_notification_desc"
android:ringtoneType="notification" android:ringtoneType="notification"
android:showDefault="true" android:showDefault="true"
android:showSilent="true" android:showSilent="true" />
/> </PreferenceCategory>
</PreferenceCategory>
<PreferenceCategory <PreferenceCategory
android:title="@string/prefs_category_appearance"> android:title="@string/prefs_category_appearance">
<CheckBoxPreference <CheckBoxPreference
android:key="@string/p_colorize" android:key="@string/p_colorize"
android:title="@string/prefs_colorize_title" android:title="@string/prefs_colorize_title"
android:summary="@string/prefs_colorize_desc" /> android:summary="@string/prefs_colorize_desc" />
<EditTextPreference <EditTextPreference
android:key="@string/p_fontSize" android:key="@string/p_fontSize"
android:title="@string/prefs_fontSize_title" android:title="@string/prefs_fontSize_title"
android:summary="@string/prefs_fontSize_desc" /> android:summary="@string/prefs_fontSize_desc" />
<PreferenceScreen
android:title="@string/displayedFields_PrefScreen_Title"
android:summary="@string/displayedFields_PrefScreen_Desc">
<CheckBoxPreference
android:key="@string/prefs_titleVisible"
android:title="@string/prefs_titleVisible_title"
android:summary="@string/prefs_titleVisible_desc"
android:defaultValue="@string/prefs_titleVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_deadlineVisible"
android:title="@string/prefs_deadlineVisible_title"
android:summary="@string/prefs_deadlineVisible_desc"
android:defaultValue="@string/prefs_deadlineVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_tagsVisible"
android:title="@string/prefs_tagsVisible_title"
android:summary="@string/prefs_tagsVisible_desc"
android:defaultValue="@string/prefs_tagsVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_importanceVisible"
android:title="@string/prefs_importanceVisible_title"
android:summary="@string/prefs_importanceVisible_desc"
android:defaultValue="@string/prefs_importanceVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_timeVisible"
android:title="@string/prefs_timeVisible_title"
android:summary="@string/prefs_timeVisible_desc"
android:defaultValue="@string/prefs_timeVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_reminderVisible"
android:title="@string/prefs_reminderVisible_title"
android:summary="@string/prefs_reminderVisible_desc"
android:defaultValue="@string/prefs_reminderVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_repeatVisible"
android:title="@string/prefs_repeatVisible_title"
android:summary="@string/prefs_repeatVisible_desc"
android:defaultValue="@string/prefs_repeatVisible_default" />
<CheckBoxPreference
android:key="@string/prefs_notesVisible"
android:title="@string/prefs_notesVisible_title"
android:summary="@string/prefs_notesVisible_desc"
android:defaultValue="@string/prefs_notesVisible_default" />
</PreferenceScreen>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory

@ -297,11 +297,11 @@ public class Invoker {
} }
catch (IOException e) catch (IOException e)
{ {
throw new ServiceInternalException("", e); throw new ServiceInternalException("Connection error", e);
} }
catch (SAXException e) catch (SAXException e)
{ {
throw new ServiceInternalException("", e); throw new ServiceInternalException("XML Parse Exception", e);
} }
// catch (HttpException e) // catch (HttpException e)
// { // {

@ -25,14 +25,15 @@ public final class R {
public static final class attr { public static final class attr {
} }
public static final class color { public static final class color {
public static final int importance_1=0x7f07000e; public static final int importance_1=0x7f07000f;
public static final int importance_2=0x7f07000f; public static final int importance_2=0x7f070010;
public static final int importance_3=0x7f070010; public static final int importance_3=0x7f070011;
public static final int importance_4=0x7f070011; public static final int importance_4=0x7f070012;
public static final int taskList_completedDate=0x7f070009; public static final int taskList_completedDate=0x7f07000a;
public static final int taskList_details=0x7f07000b;
public static final int taskList_dueDate=0x7f070008; public static final int taskList_dueDate=0x7f070008;
public static final int taskList_dueDateOverdue=0x7f070007; public static final int taskList_dueDateOverdue=0x7f070007;
public static final int taskList_tags=0x7f07000a; public static final int taskList_remainingTime=0x7f070009;
public static final int task_list_done=0x7f070002; public static final int task_list_done=0x7f070002;
public static final int task_list_importance_1=0x7f070003; public static final int task_list_importance_1=0x7f070003;
public static final int task_list_importance_2=0x7f070004; public static final int task_list_importance_2=0x7f070004;
@ -40,9 +41,9 @@ public final class R {
public static final int task_list_importance_4=0x7f070006; public static final int task_list_importance_4=0x7f070006;
public static final int task_list_normal=0x7f070001; public static final int task_list_normal=0x7f070001;
public static final int task_list_overdue=0x7f070000; public static final int task_list_overdue=0x7f070000;
public static final int view_header_done=0x7f07000b; public static final int view_header_done=0x7f07000c;
public static final int view_table_overdue=0x7f07000d; public static final int view_table_overdue=0x7f07000e;
public static final int view_table_values=0x7f07000c; public static final int view_table_values=0x7f07000d;
} }
public static final class drawable { public static final class drawable {
public static final int btn_check0=0x7f020000; public static final int btn_check0=0x7f020000;
@ -91,32 +92,32 @@ public final class R {
public static final int addtask=0x7f0b003d; public static final int addtask=0x7f0b003d;
public static final int alert_container=0x7f0b0035; public static final int alert_container=0x7f0b0035;
public static final int alerts_label=0x7f0b0034; public static final int alerts_label=0x7f0b0034;
public static final int btn_tasklist=0x7f0b0049; public static final int btn_tasklist=0x7f0b004d;
public static final int btn_viewtask=0x7f0b0048; public static final int btn_viewtask=0x7f0b004c;
public static final int button=0x7f0b0003; public static final int button=0x7f0b0003;
public static final int button1=0x7f0b0002; public static final int button1=0x7f0b0002;
public static final int button_layout=0x7f0b004c; public static final int button_layout=0x7f0b0050;
public static final int cb1=0x7f0b003f; public static final int cb1=0x7f0b003f;
public static final int cell_creationDate=0x7f0b0054; public static final int cell_creationDate=0x7f0b0058;
public static final int cell_definiteDueDate=0x7f0b0052; public static final int cell_definiteDueDate=0x7f0b0056;
public static final int cell_elapsed=0x7f0b004f; public static final int cell_elapsed=0x7f0b0053;
public static final int cell_estimated=0x7f0b0050; public static final int cell_estimated=0x7f0b0054;
public static final int cell_notes=0x7f0b0051; public static final int cell_notes=0x7f0b0055;
public static final int cell_preferredDueDate=0x7f0b0053; public static final int cell_preferredDueDate=0x7f0b0057;
public static final int container=0x7f0b0005; public static final int container=0x7f0b0005;
public static final int date=0x7f0b0000; public static final int date=0x7f0b0000;
public static final int decrement=0x7f0b0008; public static final int decrement=0x7f0b0008;
public static final int definiteDueDate_date=0x7f0b0020; public static final int definiteDueDate_date=0x7f0b0022;
public static final int definiteDueDate_label=0x7f0b001e; public static final int definiteDueDate_label=0x7f0b0020;
public static final int definiteDueDate_notnull=0x7f0b001f; public static final int definiteDueDate_notnull=0x7f0b0021;
public static final int definiteDueDate_time=0x7f0b0021; public static final int definiteDueDate_time=0x7f0b0023;
public static final int delete=0x7f0b001c; public static final int delete=0x7f0b001e;
public static final int discard=0x7f0b001b; public static final int discard=0x7f0b001d;
public static final int edit=0x7f0b0055; public static final int edit=0x7f0b0059;
public static final int elapsedDuration=0x7f0b0030; public static final int elapsedDuration=0x7f0b0030;
public static final int elapsedDuration_label=0x7f0b002f; public static final int elapsedDuration_label=0x7f0b002f;
public static final int estimatedDuration=0x7f0b002e; public static final int estimatedDuration=0x7f0b0019;
public static final int estimatedDuration_label=0x7f0b002d; public static final int estimatedDuration_label=0x7f0b0018;
public static final int event=0x7f0b0011; public static final int event=0x7f0b0011;
public static final int flag_after=0x7f0b003a; public static final int flag_after=0x7f0b003a;
public static final int flag_before=0x7f0b0038; public static final int flag_before=0x7f0b0038;
@ -125,54 +126,58 @@ public final class R {
public static final int footer=0x7f0b000a; public static final int footer=0x7f0b000a;
public static final int forget=0x7f0b000b; public static final int forget=0x7f0b000b;
public static final int frame=0x7f0b000f; public static final int frame=0x7f0b000f;
public static final int greeting=0x7f0b0046; public static final int greeting=0x7f0b004a;
public static final int hiddenUntil_date=0x7f0b0028; public static final int hiddenUntil_date=0x7f0b002a;
public static final int hiddenUntil_label=0x7f0b0026; public static final int hiddenUntil_label=0x7f0b0028;
public static final int hiddenUntil_notnull=0x7f0b0027; public static final int hiddenUntil_notnull=0x7f0b0029;
public static final int hiddenUntil_time=0x7f0b0029; public static final int hiddenUntil_time=0x7f0b002b;
public static final int imageLeft=0x7f0b0040; public static final int imageLeft=0x7f0b0040;
public static final int imageRight=0x7f0b0045; public static final int imageRight=0x7f0b0049;
public static final int importance_container=0x7f0b0015; public static final int importance_container=0x7f0b0015;
public static final int importance_label=0x7f0b0014; public static final int importance_label=0x7f0b0014;
public static final int increment=0x7f0b0006; public static final int increment=0x7f0b0006;
public static final int name=0x7f0b0013; public static final int name=0x7f0b0013;
public static final int name_label=0x7f0b0012; public static final int name_label=0x7f0b0012;
public static final int notes=0x7f0b0019; public static final int notes=0x7f0b001b;
public static final int notes_label=0x7f0b0018; public static final int notes_label=0x7f0b001a;
public static final int notification=0x7f0b0033; public static final int notification=0x7f0b0033;
public static final int notification_label=0x7f0b0032; public static final int notification_label=0x7f0b0032;
public static final int numberPicker=0x7f0b0009; public static final int numberPicker=0x7f0b0009;
public static final int preferredDueDate_date=0x7f0b0024; public static final int preferredDueDate_date=0x7f0b0026;
public static final int preferredDueDate_label=0x7f0b0022; public static final int preferredDueDate_label=0x7f0b0024;
public static final int preferredDueDate_notnull=0x7f0b0023; public static final int preferredDueDate_notnull=0x7f0b0025;
public static final int preferredDueDate_time=0x7f0b0025; public static final int preferredDueDate_time=0x7f0b0027;
public static final int progress=0x7f0b004e; public static final int progress=0x7f0b0052;
public static final int prop_layout=0x7f0b0042; public static final int repeat_interval=0x7f0b002e;
public static final int repeat_interval=0x7f0b002c; public static final int repeat_label=0x7f0b002c;
public static final int repeat_label=0x7f0b002a; public static final int repeat_value=0x7f0b002d;
public static final int repeat_value=0x7f0b002b;
public static final int row_layout=0x7f0b003e; public static final int row_layout=0x7f0b003e;
public static final int save=0x7f0b001a; public static final int save=0x7f0b001c;
public static final int scroll_view=0x7f0b004a; public static final int scroll_view=0x7f0b004e;
public static final int sync=0x7f0b000c; public static final int sync=0x7f0b000c;
public static final int tab_basic=0x7f0b0010; public static final int tab_basic=0x7f0b0010;
public static final int tab_dates=0x7f0b001d; public static final int tab_dates=0x7f0b001f;
public static final int tab_notification=0x7f0b0031; public static final int tab_notification=0x7f0b0031;
public static final int taglist=0x7f0b000e; public static final int taglist=0x7f0b000e;
public static final int taglist_layout=0x7f0b000d; public static final int taglist_layout=0x7f0b000d;
public static final int tags_container=0x7f0b0017; public static final int tags_container=0x7f0b0017;
public static final int tags_label=0x7f0b0016; public static final int tags_label=0x7f0b0016;
public static final int task_name=0x7f0b0042;
public static final int tasklist=0x7f0b003c; public static final int tasklist=0x7f0b003c;
public static final int tasklist_layout=0x7f0b003b; public static final int tasklist_layout=0x7f0b003b;
public static final int taskname=0x7f0b0047; public static final int taskname=0x7f0b004b;
public static final int text1=0x7f0b0004; public static final int text1=0x7f0b0004;
public static final int text_dueDate=0x7f0b0043; public static final int text_deadlines=0x7f0b0043;
public static final int text_layout=0x7f0b0041; public static final int text_layout=0x7f0b0041;
public static final int text_tags=0x7f0b0044; public static final int text_notes=0x7f0b0048;
public static final int text_reminders=0x7f0b0046;
public static final int text_repeats=0x7f0b0045;
public static final int text_tags=0x7f0b0047;
public static final int text_times=0x7f0b0044;
public static final int time=0x7f0b0001; public static final int time=0x7f0b0001;
public static final int timepicker_input=0x7f0b0007; public static final int timepicker_input=0x7f0b0007;
public static final int timerButton=0x7f0b004d; public static final int timerButton=0x7f0b0051;
public static final int view_layout=0x7f0b004b; public static final int view_layout=0x7f0b004f;
} }
public static final class layout { public static final class layout {
public static final int edit_alert_item=0x7f030000; public static final int edit_alert_item=0x7f030000;
@ -192,47 +197,50 @@ public final class R {
} }
public static final class plurals { public static final class plurals {
public static final int NactiveTasks=0x7f090001; public static final int NactiveTasks=0x7f090001;
public static final int Nalarms=0x7f090002;
/** Time Constants /** Time Constants
*/ */
public static final int Ndays=0x7f090003; public static final int Ndays=0x7f090004;
public static final int Nhours=0x7f090004; public static final int Nhours=0x7f090005;
public static final int Nminutes=0x7f090005; public static final int Nminutes=0x7f090006;
public static final int Nseconds=0x7f090006; public static final int Nseconds=0x7f090007;
public static final int Ntags=0x7f090002; public static final int Ntags=0x7f090003;
/** Plurals /** Plurals
*/ */
public static final int Ntasks=0x7f090000; public static final int Ntasks=0x7f090000;
} }
public static final class string { public static final class string {
public static final int add_alert=0x7f080042; public static final int add_alert=0x7f080047;
public static final int addtask_label=0x7f080012; public static final int addtask_label=0x7f08000d;
public static final int ago_suffix=0x7f08005c; public static final int ago_suffix=0x7f080061;
public static final int alerts_label=0x7f080041; public static final int alerts_label=0x7f080046;
/** application /** application
*/ */
public static final int app_name=0x7f080000; public static final int app_name=0x7f080000;
public static final int blank_button_title=0x7f08004c; public static final int blank_button_title=0x7f080051;
public static final int blockingOn_label=0x7f080038; public static final int blockingOn_label=0x7f08003d;
public static final int days=0x7f080008; public static final int days=0x7f080008;
public static final int definiteDueDate_label=0x7f080033; public static final int definiteDueDate_label=0x7f080038;
public static final int delete_label=0x7f08004b; public static final int delete_label=0x7f080050;
public static final int delete_this_tag_title=0x7f08007d; public static final int delete_this_tag_title=0x7f080083;
public static final int delete_this_task_title=0x7f08007c; public static final int delete_this_task_title=0x7f080082;
public static final int delete_title=0x7f08007b; public static final int delete_title=0x7f080081;
public static final int discard_label=0x7f08004a; public static final int discard_label=0x7f08004f;
public static final int edit_label=0x7f080053; public static final int displayedFields_PrefScreen_Desc=0x7f0800a5;
public static final int elapsedDuration_label=0x7f080032; public static final int displayedFields_PrefScreen_Title=0x7f0800a4;
public static final int error_opening=0x7f080081; public static final int edit_label=0x7f080058;
public static final int error_saving=0x7f080082; public static final int elapsedDuration_label=0x7f080037;
public static final int estimatedDuration_label=0x7f080031; public static final int error_opening=0x7f080087;
public static final int flag_after=0x7f080040; public static final int error_saving=0x7f080088;
public static final int flag_before=0x7f08003e; public static final int estimatedDuration_label=0x7f080036;
public static final int flag_during=0x7f08003f; public static final int flag_after=0x7f080045;
public static final int flags_label=0x7f08003d; public static final int flag_before=0x7f080043;
public static final int hiddenUntil_label=0x7f080035; public static final int flag_during=0x7f080044;
public static final int flags_label=0x7f080042;
public static final int hiddenUntil_label=0x7f08003a;
/** dialog boxes /** dialog boxes
*/ */
public static final int hour_minutes_dialog=0x7f080043; public static final int hour_minutes_dialog=0x7f080048;
public static final int hours=0x7f080009; public static final int hours=0x7f080009;
/** Importance Labels /** Importance Labels
*/ */
@ -240,140 +248,178 @@ public final class R {
public static final int importance_2=0x7f080002; public static final int importance_2=0x7f080002;
public static final int importance_3=0x7f080003; public static final int importance_3=0x7f080003;
public static final int importance_4=0x7f080004; public static final int importance_4=0x7f080004;
public static final int importance_label=0x7f08002f; public static final int importance_label=0x7f080034;
public static final int information_title=0x7f080075; public static final int information_title=0x7f08007b;
public static final int key_notification_ringtone=0x7f080087; public static final int key_notification_ringtone=0x7f08008d;
public static final int name_hint=0x7f08002e; public static final int name_hint=0x7f080033;
/** labels /** labels
*/ */
public static final int name_label=0x7f08002d; public static final int name_label=0x7f080032;
public static final int no_tags=0x7f080014; public static final int notes_hint=0x7f08003f;
public static final int notes_hint=0x7f08003a; public static final int notes_label=0x7f08003e;
public static final int notes_label=0x7f080039; public static final int notif_definiteDueDate=0x7f080085;
public static final int notif_definiteDueDate=0x7f08007f; public static final int notif_preferredDueDate=0x7f080086;
public static final int notif_preferredDueDate=0x7f080080; public static final int notification_dialog=0x7f080049;
public static final int notification_dialog=0x7f080044; public static final int notification_label=0x7f080040;
public static final int notification_label=0x7f08003b; public static final int notification_prefix=0x7f080041;
public static final int notification_prefix=0x7f08003c; public static final int notify_no=0x7f08007f;
public static final int notify_no=0x7f080079; public static final int notify_snooze=0x7f08007e;
public static final int notify_snooze=0x7f080078; public static final int notify_snooze_title=0x7f080080;
public static final int notify_snooze_title=0x7f08007a; public static final int notify_yes=0x7f08007d;
public static final int notify_yes=0x7f080077; public static final int overdue_suffix=0x7f080060;
public static final int overdue_suffix=0x7f08005b; public static final int p_colorize=0x7f080090;
public static final int p_colorize=0x7f08008a; public static final int p_deadlineTime=0x7f08008f;
public static final int p_deadlineTime=0x7f080089; public static final int p_fontSize=0x7f08008e;
public static final int p_fontSize=0x7f080088; public static final int p_notif_annoy=0x7f08008b;
public static final int p_notif_annoy=0x7f080085; public static final int p_notif_defaultRemind=0x7f08008c;
public static final int p_notif_defaultRemind=0x7f080086; public static final int p_notif_quietEnd=0x7f08008a;
public static final int p_notif_quietEnd=0x7f080084; public static final int p_notif_quietStart=0x7f080089;
public static final int p_notif_quietStart=0x7f080083; public static final int p_sync_every=0x7f08006c;
public static final int p_sync_every=0x7f080067; public static final int p_sync_rtm=0x7f08006b;
public static final int p_sync_rtm=0x7f080066; public static final int preferredDueDate_label=0x7f080039;
public static final int preferredDueDate_label=0x7f080034; public static final int prefs_annoy_desc=0x7f080099;
public static final int prefs_annoy_desc=0x7f080093; public static final int prefs_annoy_title=0x7f080098;
public static final int prefs_annoy_title=0x7f080092; public static final int prefs_category_alerts=0x7f080091;
public static final int prefs_category_alerts=0x7f08008b; public static final int prefs_category_appearance=0x7f08009c;
public static final int prefs_category_appearance=0x7f080096; public static final int prefs_category_other=0x7f0800a1;
public static final int prefs_category_other=0x7f08009b; public static final int prefs_colorize_desc=0x7f0800a0;
public static final int prefs_colorize_desc=0x7f08009a; public static final int prefs_colorize_title=0x7f08009f;
public static final int prefs_colorize_title=0x7f080099; public static final int prefs_deadlineTime_desc=0x7f0800a3;
public static final int prefs_deadlineTime_desc=0x7f08009d; public static final int prefs_deadlineTime_title=0x7f0800a2;
public static final int prefs_deadlineTime_title=0x7f08009c; public static final int prefs_deadlineVisible=0x7f0800aa;
public static final int prefs_defaultRemind_desc=0x7f080091; public static final int prefs_deadlineVisible_default=0x7f0800ad;
public static final int prefs_defaultRemind_title=0x7f080090; public static final int prefs_deadlineVisible_desc=0x7f0800ac;
public static final int prefs_fontSize_desc=0x7f080098; public static final int prefs_deadlineVisible_title=0x7f0800ab;
public static final int prefs_fontSize_title=0x7f080097; public static final int prefs_defaultRemind_desc=0x7f080097;
public static final int prefs_notification_desc=0x7f080095; public static final int prefs_defaultRemind_title=0x7f080096;
public static final int prefs_notification_title=0x7f080094; public static final int prefs_fontSize_desc=0x7f08009e;
public static final int prefs_quietEnd_desc=0x7f08008f; public static final int prefs_fontSize_title=0x7f08009d;
public static final int prefs_quietEnd_title=0x7f08008e; public static final int prefs_importanceVisible=0x7f0800b2;
public static final int prefs_quietStart_desc=0x7f08008d; public static final int prefs_importanceVisible_default=0x7f0800b5;
public static final int prefs_quietStart_title=0x7f08008c; public static final int prefs_importanceVisible_desc=0x7f0800b4;
public static final int progress_dialog=0x7f08005d; public static final int prefs_importanceVisible_title=0x7f0800b3;
public static final int progress_suffix=0x7f080052; public static final int prefs_notesVisible=0x7f0800c2;
public static final int question_title=0x7f080076; public static final int prefs_notesVisible_default=0x7f0800c5;
public static final int prefs_notesVisible_desc=0x7f0800c4;
public static final int prefs_notesVisible_title=0x7f0800c3;
public static final int prefs_notification_desc=0x7f08009b;
public static final int prefs_notification_title=0x7f08009a;
public static final int prefs_quietEnd_desc=0x7f080095;
public static final int prefs_quietEnd_title=0x7f080094;
public static final int prefs_quietStart_desc=0x7f080093;
public static final int prefs_quietStart_title=0x7f080092;
public static final int prefs_reminderVisible=0x7f0800be;
public static final int prefs_reminderVisible_default=0x7f0800c1;
public static final int prefs_reminderVisible_desc=0x7f0800c0;
public static final int prefs_reminderVisible_title=0x7f0800bf;
public static final int prefs_repeatVisible=0x7f0800ba;
public static final int prefs_repeatVisible_default=0x7f0800bd;
public static final int prefs_repeatVisible_desc=0x7f0800bc;
public static final int prefs_repeatVisible_title=0x7f0800bb;
public static final int prefs_tagsVisible=0x7f0800b6;
public static final int prefs_tagsVisible_default=0x7f0800b9;
public static final int prefs_tagsVisible_desc=0x7f0800b8;
public static final int prefs_tagsVisible_title=0x7f0800b7;
public static final int prefs_timeVisible=0x7f0800ae;
public static final int prefs_timeVisible_default=0x7f0800b1;
public static final int prefs_timeVisible_desc=0x7f0800b0;
public static final int prefs_timeVisible_title=0x7f0800af;
public static final int prefs_titleVisible=0x7f0800a6;
public static final int prefs_titleVisible_default=0x7f0800a9;
public static final int prefs_titleVisible_desc=0x7f0800a8;
public static final int prefs_titleVisible_title=0x7f0800a7;
public static final int progress_dialog=0x7f080062;
public static final int progress_suffix=0x7f080057;
public static final int question_title=0x7f08007c;
/** Repeat Interval Labels /** Repeat Interval Labels
*/ */
public static final int repeat_days=0x7f080005; public static final int repeat_days=0x7f080005;
public static final int repeat_help_dialog=0x7f080047; public static final int repeat_help_dialog=0x7f08004c;
public static final int repeat_help_dialog_title=0x7f080046; public static final int repeat_help_dialog_title=0x7f08004b;
public static final int repeat_help_hide=0x7f080048; public static final int repeat_help_hide=0x7f08004d;
public static final int repeat_label=0x7f080036; public static final int repeat_label=0x7f08003b;
public static final int repeat_months=0x7f080007; public static final int repeat_months=0x7f080007;
public static final int repeat_picker_title=0x7f080045; public static final int repeat_picker_title=0x7f08004a;
public static final int repeat_value_unset=0x7f080037; public static final int repeat_value_unset=0x7f08003c;
public static final int repeat_weeks=0x7f080006; public static final int repeat_weeks=0x7f080006;
/** buttons /** buttons
*/ */
public static final int save_label=0x7f080049; public static final int save_label=0x7f08004e;
public static final int startTimer_label=0x7f080050; public static final int startTimer_label=0x7f080055;
public static final int stopTimer_label=0x7f080051; public static final int stopTimer_label=0x7f080056;
public static final int stop_timer_title=0x7f08007e; public static final int stop_timer_title=0x7f080084;
public static final int sync_auth_request=0x7f080070; public static final int sync_auth_request=0x7f080075;
public static final int sync_error=0x7f08006f; public static final int sync_error=0x7f080074;
public static final int sync_every_desc=0x7f08006e; public static final int sync_every_desc=0x7f080073;
public static final int sync_every_title=0x7f08006d; public static final int sync_every_title=0x7f080072;
public static final int sync_forget=0x7f080073; public static final int sync_forget=0x7f080078;
public static final int sync_forget_confirm=0x7f080074; public static final int sync_forget_confirm=0x7f080079;
public static final int sync_now=0x7f080072; public static final int sync_no_synchronizers=0x7f08007a;
public static final int sync_pref_group=0x7f080068; public static final int sync_now=0x7f080077;
public static final int sync_pref_group_actions=0x7f080069; public static final int sync_pref_group=0x7f08006d;
public static final int sync_pref_group_options=0x7f08006a; public static final int sync_pref_group_actions=0x7f08006e;
public static final int sync_rtm_desc=0x7f08006c; public static final int sync_pref_group_options=0x7f08006f;
public static final int sync_rtm_notes=0x7f080071; public static final int sync_rtm_desc=0x7f080071;
public static final int sync_rtm_title=0x7f08006b; public static final int sync_rtm_notes=0x7f080076;
public static final int tagList_context_create=0x7f08005f; public static final int sync_rtm_title=0x7f080070;
public static final int tagList_context_delete=0x7f080061; public static final int tagList_context_create=0x7f080064;
public static final int tagList_context_edit=0x7f080060; public static final int tagList_context_delete=0x7f080066;
public static final int tagList_context_hideTag=0x7f080063; public static final int tagList_context_edit=0x7f080065;
public static final int tagList_context_showTag=0x7f080062; public static final int tagList_context_hideTag=0x7f080068;
public static final int tagList_menu_sortAlpha=0x7f080064; public static final int tagList_context_showTag=0x7f080067;
public static final int tagList_menu_sortSize=0x7f080065; public static final int tagList_menu_sortAlpha=0x7f080069;
public static final int tagList_titlePrefix=0x7f08005e; public static final int tagList_menu_sortSize=0x7f08006a;
public static final int tags_label=0x7f080030; public static final int tagList_titlePrefix=0x7f080063;
public static final int tags_prefix=0x7f080013; public static final int tags_label=0x7f080035;
public static final int taskEdit_menu_save=0x7f08004d; public static final int taskEdit_menu_save=0x7f080052;
public static final int taskEdit_titleGeneric=0x7f080028; public static final int taskEdit_titleGeneric=0x7f08002d;
public static final int taskEdit_titlePrefix=0x7f080029; public static final int taskEdit_titlePrefix=0x7f08002e;
public static final int taskList_completedPrefix=0x7f08000f; public static final int taskList_alarmSuffix=0x7f080017;
public static final int taskList_context_delete=0x7f08001d; public static final int taskList_completedPrefix=0x7f080012;
public static final int taskList_context_edit=0x7f08001c; public static final int taskList_context_delete=0x7f080022;
public static final int taskList_context_startTimer=0x7f08001e; public static final int taskList_context_edit=0x7f080021;
public static final int taskList_context_stopTimer=0x7f08001f; public static final int taskList_context_startTimer=0x7f080023;
public static final int taskList_dueIn=0x7f08000d; public static final int taskList_context_stopTimer=0x7f080024;
public static final int taskList_filter_done=0x7f080022; public static final int taskList_dueIn=0x7f08000f;
public static final int taskList_filter_hidden=0x7f080021; public static final int taskList_elapsedTimePrefix=0x7f080014;
public static final int taskList_filter_tagged=0x7f080023; public static final int taskList_estimatedTimePrefix=0x7f080013;
public static final int taskList_filter_title=0x7f080020; public static final int taskList_filter_done=0x7f080027;
public static final int taskList_goalPrefix=0x7f08000e; public static final int taskList_filter_hidden=0x7f080026;
public static final int taskList_hiddenPrefix=0x7f080011; public static final int taskList_filter_tagged=0x7f080028;
public static final int taskList_filter_title=0x7f080025;
public static final int taskList_goalPrefix=0x7f080010;
public static final int taskList_hiddenPrefix=0x7f08000e;
public static final int taskList_hiddenSuffix=0x7f08000c; public static final int taskList_hiddenSuffix=0x7f08000c;
public static final int taskList_menu_filters=0x7f080017; public static final int taskList_menu_filters=0x7f08001c;
public static final int taskList_menu_help=0x7f08001b; public static final int taskList_menu_help=0x7f080020;
public static final int taskList_menu_insert=0x7f080015; public static final int taskList_menu_insert=0x7f08001a;
public static final int taskList_menu_more=0x7f080018; public static final int taskList_menu_more=0x7f08001d;
public static final int taskList_menu_settings=0x7f08001a; public static final int taskList_menu_settings=0x7f08001f;
public static final int taskList_menu_sync=0x7f080019; public static final int taskList_menu_sync=0x7f08001e;
public static final int taskList_menu_tags=0x7f080016; public static final int taskList_menu_tags=0x7f08001b;
public static final int taskList_overdueBy=0x7f080010; public static final int taskList_notesPrefix=0x7f080019;
public static final int taskList_sort_alpha=0x7f080025; public static final int taskList_overdueBy=0x7f080011;
public static final int taskList_sort_auto=0x7f080024; public static final int taskList_periodicReminderPrefix=0x7f080015;
public static final int taskList_sort_duedate=0x7f080026; public static final int taskList_repeatPrefix=0x7f080016;
public static final int taskList_sort_reverse=0x7f080027; public static final int taskList_sort_alpha=0x7f08002a;
public static final int taskList_sort_auto=0x7f080029;
public static final int taskList_sort_duedate=0x7f08002b;
public static final int taskList_sort_reverse=0x7f08002c;
public static final int taskList_tagsPrefix=0x7f080018;
public static final int taskList_titlePrefix=0x7f08000a; public static final int taskList_titlePrefix=0x7f08000a;
public static final int taskList_titleTagPrefix=0x7f08000b; public static final int taskList_titleTagPrefix=0x7f08000b;
public static final int taskView_creationDate=0x7f080058; public static final int taskView_creationDate=0x7f08005d;
public static final int taskView_definiteDueDate=0x7f080056; public static final int taskView_definiteDueDate=0x7f08005b;
public static final int taskView_elapsed=0x7f080054; public static final int taskView_elapsed=0x7f080059;
public static final int taskView_estimated=0x7f080055; public static final int taskView_estimated=0x7f08005a;
public static final int taskView_notes=0x7f08005a; public static final int taskView_notes=0x7f08005f;
public static final int taskView_notifyTitle=0x7f08004f; public static final int taskView_notifyTitle=0x7f080054;
public static final int taskView_preferredDueDate=0x7f080057; public static final int taskView_preferredDueDate=0x7f08005c;
public static final int taskView_tags=0x7f080059; public static final int taskView_tags=0x7f08005e;
public static final int taskView_title=0x7f08004e; public static final int taskView_title=0x7f080053;
public static final int task_edit_tab_1=0x7f08002a; public static final int task_edit_tab_1=0x7f08002f;
public static final int task_edit_tab_2=0x7f08002b; public static final int task_edit_tab_2=0x7f080030;
public static final int task_edit_tab_3=0x7f08002c; public static final int task_edit_tab_3=0x7f080031;
} }
public static final class style { public static final class style {
public static final int Alert=0x7f0a0000; public static final int Alert=0x7f0a0000;

@ -146,11 +146,6 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
.setIndicator("Alerts", .setIndicator("Alerts",
r.getDrawable(R.drawable.ic_dialog_alert_c)) r.getDrawable(R.drawable.ic_dialog_alert_c))
.setContent(R.id.tab_notification)); .setContent(R.id.tab_notification));
// TabWidget tabWidget = tabHost.getTabWidget();
// for(int i = 0; i < tabWidget.getChildCount(); i++) {
// RelativeLayout tab = (RelativeLayout)tabWidget.getChildAt(i);
// tab.getLayoutParams().height = 46;
// }
setUpUIComponents(); setUpUIComponents();
setUpListeners(); setUpListeners();
@ -294,11 +289,13 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
} }
} }
// intersect tags to figure out which we need to add / remove
tagsToDelete = new HashSet<TagIdentifier>(taskTags); tagsToDelete = new HashSet<TagIdentifier>(taskTags);
tagsToDelete.removeAll(tagIds); tagsToDelete.removeAll(tagIds);
tagsToAdd = tagIds; tagsToAdd = tagIds;
tagsToAdd.removeAll(taskTags); tagsToAdd.removeAll(taskTags);
// perform the database updates
for(TagIdentifier tagId : tagsToDelete) for(TagIdentifier tagId : tagsToDelete)
tagController.removeTag(model.getTaskIdentifier(), tagId); tagController.removeTag(model.getTaskIdentifier(), tagId);
for(TagIdentifier tagId : tagsToAdd) for(TagIdentifier tagId : tagsToAdd)

@ -26,6 +26,7 @@ import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Typeface;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -41,12 +42,15 @@ import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.CompoundButton.OnCheckedChangeListener;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.timsu.astrid.data.alerts.AlertController;
import com.timsu.astrid.data.tag.TagController; import com.timsu.astrid.data.tag.TagController;
import com.timsu.astrid.data.tag.TagModelForView; import com.timsu.astrid.data.tag.TagModelForView;
import com.timsu.astrid.data.task.TaskController; import com.timsu.astrid.data.task.TaskController;
import com.timsu.astrid.data.task.TaskModelForList; import com.timsu.astrid.data.task.TaskModelForList;
import com.timsu.astrid.data.task.AbstractTaskModel.RepeatInfo;
import com.timsu.astrid.utilities.DateUtilities; import com.timsu.astrid.utilities.DateUtilities;
import com.timsu.astrid.utilities.Preferences; import com.timsu.astrid.utilities.Preferences;
import com.timsu.astrid.utilities.TaskFieldsVisibility;
/** Adapter for displaying a list of TaskModelForList entities /** Adapter for displaying a list of TaskModelForList entities
* *
@ -65,6 +69,9 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
private LayoutInflater inflater; private LayoutInflater inflater;
private TaskListAdapterHooks hooks; private TaskListAdapterHooks hooks;
private Integer fontSizePreference;
private AlertController alarmController;
public interface TaskListAdapterHooks { public interface TaskListAdapterHooks {
List<TaskModelForList> getTaskArray(); List<TaskModelForList> getTaskArray();
List<TagModelForView> getTagsFor(TaskModelForList task); List<TagModelForView> getTagsFor(TaskModelForList task);
@ -84,6 +91,9 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
this.resource = resource; this.resource = resource;
this.activity = activity; this.activity = activity;
this.hooks = hooks; this.hooks = hooks;
fontSizePreference = Preferences.getTaskListFontSize(getContext());
alarmController = new AlertController(activity);
} }
// --- code for setting up each view // --- code for setting up each view
@ -102,131 +112,187 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
private void setupView(View view, final TaskModelForList task) { private void setupView(View view, final TaskModelForList task) {
Resources r = activity.getResources(); Resources r = activity.getResources();
// find UI components
final TextView name = ((TextView)view.findViewById(R.id.text1));
final TextView dueDateView = ((TextView)view.findViewById(R.id.text_dueDate));
final TextView remainingTimeView = ((TextView)view.findViewById(R.id.text_remainingTime));
final TextView tagsView = ((TextView)view.findViewById(R.id.text_tags));
final CheckBox progress = ((CheckBox)view.findViewById(R.id.cb1)); final CheckBox progress = ((CheckBox)view.findViewById(R.id.cb1));
final ImageView timer = ((ImageView)view.findViewById(R.id.imageLeft)); final ImageView timer = ((ImageView)view.findViewById(R.id.imageLeft));
final ImageView importance = ((ImageView)view.findViewById(R.id.imageRight)); final TextView name = ((TextView)view.findViewById(R.id.task_name));
boolean hasProperties = false;
view.setTag(task); view.setTag(task);
progress.setTag(task); progress.setTag(task);
// name
String nameValue = task.getName();
if(task.getHiddenUntil() != null && task.getHiddenUntil().after(new Date()))
nameValue = "(" + r.getString(R.string.taskList_hiddenPrefix) + ") " + nameValue;
name.setText(nameValue);
Integer fontSizePreference = Preferences.getTaskListFontSize(getContext());
if(fontSizePreference != null && fontSizePreference > 0)
name.setTextSize(fontSizePreference);
if(task.getTimerStart() != null) if(task.getTimerStart() != null)
timer.setImageDrawable(r.getDrawable(R.drawable.ic_dialog_time)); timer.setImageDrawable(r.getDrawable(R.drawable.ic_dialog_time));
importance.setImageDrawable(r.getDrawable(task.getImportance().getIconResource()));
progress.setChecked(task.isTaskCompleted()); progress.setChecked(task.isTaskCompleted());
// due date / completion date setFieldContentsAndVisibility(view, task);
if(task.isTaskCompleted()) { setTaskAppearance(task, name, progress);
if(task.getCompletionDate() != null) { hooks.onCreatedTaskListView(view, task);
int secondsLeft = (int)((task.getCompletionDate().getTime() - }
System.currentTimeMillis()) / 1000);
StringBuilder label = new StringBuilder(). /** Helper method to set the visibility based on if there's stuff inside */
append(r.getString(R.string.taskList_completedPrefix)). private void setVisibility(TextView v) {
append(" "). if(v.getText().length() > 0)
append(DateUtilities.getDurationString(r, Math.abs(secondsLeft), 1)). v.setVisibility(View.VISIBLE);
append(" " + r.getString(R.string.ago_suffix)); else
dueDateView.setText(label); v.setVisibility(View.GONE);
dueDateView.setTextColor(r.getColor(R.color.taskList_completedDate)); }
hasProperties = true;
dueDateView.setVisibility(View.VISIBLE); /** Helper method to set the contents and visibility of each field */
} else private void setFieldContentsAndVisibility(View view, TaskModelForList task) {
dueDateView.setVisibility(View.GONE); TaskFieldsVisibility visibleFields = Preferences.getTaskFieldsVisibility(activity);
} else { Resources r = getContext().getResources();
Date dueDate = task.getDefiniteDueDate();
String dueString = ""; // name
if(dueDate == null || (task.getPreferredDueDate() != null && final TextView name = ((TextView)view.findViewById(R.id.task_name));
task.getPreferredDueDate().before(dueDate))) { if(visibleFields.TITLE) {
// only prefix with "goal:" if the real deadline isn't overdue String nameValue = task.getName();
if(task.getDefiniteDueDate() == null || task.getDefiniteDueDate(). if(task.getHiddenUntil() != null && task.getHiddenUntil().after(new Date())) {
after(new Date())) nameValue = "(" + r.getString(R.string.taskList_hiddenPrefix) + ") " + nameValue;
dueString = r.getString(R.string.taskList_goalPrefix) + " "; name.setTypeface(Typeface.DEFAULT, Typeface.ITALIC);
dueDate = task.getPreferredDueDate();
} }
if(dueDate != null) { name.setText(nameValue);
long timeLeft = dueDate.getTime() - System.currentTimeMillis(); if(fontSizePreference != null && fontSizePreference > 0)
name.setTextSize(fontSizePreference);
if(timeLeft > 0) }
dueString += r.getString(R.string.taskList_dueIn) + " "; setVisibility(name);
else {
dueString += r.getString(R.string.taskList_overdueBy) + " ";
dueDateView.setTextColor(r.getColor(R.color.taskList_dueDateOverdue)); // importance
} final ImageView importance = ((ImageView)view.findViewById(R.id.imageRight));
if(visibleFields.IMPORTANCE)
importance.setImageDrawable(r.getDrawable(task.getImportance().getIconResource()));
else
importance.setVisibility(View.GONE);
dueString += DateUtilities.getDurationString(r, // due date / completion date
(int)Math.abs(timeLeft/1000), 1); final TextView deadlines = ((TextView)view.findViewById(R.id.text_deadlines));
dueDateView.setText(dueString); if(visibleFields.DEADLINE) {
hasProperties = true; StringBuilder label = new StringBuilder();
dueDateView.setVisibility(View.VISIBLE); if(task.isTaskCompleted()) {
} else if(task.getCompletionDate() != null) {
dueDateView.setVisibility(View.GONE); int secondsLeft = (int)((task.getCompletionDate().getTime() -
System.currentTimeMillis()) / 1000);
label.append(r.getString(R.string.taskList_completedPrefix)).
append(" ").
append(DateUtilities.getDurationString(r, Math.abs(secondsLeft), 1)).
append(" " + r.getString(R.string.ago_suffix));
}
} else {
if(task.getDefiniteDueDate() != null) {
long timeLeft = task.getDefiniteDueDate().getTime() -
System.currentTimeMillis();
if(timeLeft > 0){
label.append(r.getString(R.string.taskList_dueIn)).append(" ");
} else {
label.append(r.getString(R.string.taskList_overdueBy)).append(" ");
deadlines.setTextColor(r.getColor(R.color.taskList_dueDateOverdue));
}
label.append(DateUtilities.getDurationString(r,
(int)Math.abs(timeLeft/1000), 1));
if(task.getPreferredDueDate() != null)
label.append(" / ");
}
if(task.getPreferredDueDate() != null) {
long timeLeft = task.getPreferredDueDate().getTime() -
System.currentTimeMillis();
label.append(r.getString(R.string.taskList_goalPrefix)).append(" ");
if(timeLeft > 0){
label.append(r.getString(R.string.taskList_dueIn)).append(" ");
} else {
label.append(r.getString(R.string.taskList_overdueBy)).append(" ");
deadlines.setTextColor(r.getColor(R.color.taskList_dueDateOverdue));
}
label.append(DateUtilities.getDurationString(r,
(int)Math.abs(timeLeft/1000), 1)).append(" ");
}
}
deadlines.setText(label);
} }
setVisibility(deadlines);
// remaining time // estimated / elapsed time
if(task.getElapsedSeconds() > 0 || task.getEstimatedSeconds() > 0 || final TextView times = ((TextView)view.findViewById(R.id.text_times));
task.getTimerStart() != null) { if(visibleFields.TIMES) {
remainingTimeView.setVisibility(View.VISIBLE); Integer elapsed = task.getElapsedSeconds();
int elapsed = task.getElapsedSeconds();
if(task.getTimerStart() != null) if(task.getTimerStart() != null)
elapsed += ((System.currentTimeMillis() - task.getTimerStart().getTime())/1000); elapsed += ((System.currentTimeMillis() - task.getTimerStart().getTime())/1000);
String remainingString = ""; Integer estimated = task.getEstimatedSeconds();
if(!task.isTaskCompleted() && task.getEstimatedSeconds() > 0 && StringBuilder label = new StringBuilder();
task.getRepeat() != null) { if(estimated > 0) {
int remaining = task.getEstimatedSeconds() - elapsed; label.append(r.getString(R.string.taskList_estimatedTimePrefix)).
remainingString = DateUtilities.getShortDurationString(r, append(" ").
(int)Math.abs(remaining), 1); append(DateUtilities.getDurationString(r, estimated, 2));
if(remaining >= 0) if(elapsed > 0)
remainingString += r.getString(R.string.taskList_remaining); label.append(" / ");
else }
remainingString += r.getString(R.string.taskList_overtime); if(elapsed > 0) {
} else if(elapsed > 0) { label.append(r.getString(R.string.taskList_elapsedTimePrefix)).
remainingString = DateUtilities.getShortDurationString(r, append(" ").
Math.abs(elapsed), 1) + append(DateUtilities.getDurationString(r, elapsed, 2));
r.getString(R.string.taskList_spent); }
times.setText(label);
}
setVisibility(times);
// reminders
final TextView reminders = ((TextView)view.findViewById(R.id.text_reminders));
if(visibleFields.REMINDERS) {
Integer notifyEvery = task.getNotificationIntervalSeconds();
StringBuilder label = new StringBuilder();
if(notifyEvery != null && notifyEvery > 0) {
label.append(r.getString(R.string.taskList_periodicReminderPrefix)).
append(" ").append(DateUtilities.getDurationString(r, notifyEvery, 1));
} }
if(remainingString.length() == 0) { try {
remainingTimeView.setVisibility(View.GONE); alarmController.open();
} else { List<Date> alerts = alarmController.getTaskAlerts(task.getTaskIdentifier());
hasProperties = true; if(alerts.size() > 0) {
remainingTimeView.setText(remainingString); if(label.length() > 0)
if(task.isTaskCompleted()) label.append(". ");
remainingTimeView.setTextColor(r.getColor(R.color.taskList_completedDate)); label.append(r.getQuantityString(R.plurals.Nalarms, alerts.size(),
alerts.size())).append(" ").append(r.getString(R.string.taskList_alarmSuffix));
}
} finally {
alarmController.close();
}
reminders.setText(label);
}
setVisibility(reminders);
// repeats
final TextView repeats = ((TextView)view.findViewById(R.id.text_repeats));
if(visibleFields.REPEATS) {
RepeatInfo repeatInfo = task.getRepeat();
if(repeatInfo != null) {
repeats.setText(r.getString(R.string.taskList_repeatPrefix) +
" " + repeatInfo.getValue() + " " +
r.getString(repeatInfo.getInterval().getLabelResource()));
} }
} else {
remainingTimeView.setVisibility(View.GONE);
} }
setVisibility(repeats);
// tags // tags
List<TagModelForView> tags = hooks.getTagsFor(task); final TextView tags = ((TextView)view.findViewById(R.id.text_tags));
StringBuilder tagString = new StringBuilder(); if(visibleFields.TAGS) {
for(Iterator<TagModelForView> i = tags.iterator(); i.hasNext(); ) { List<TagModelForView> alltags = hooks.getTagsFor(task);
TagModelForView tag = i.next(); StringBuilder tagString = new StringBuilder();
tagString.append(tag.getName()); for(Iterator<TagModelForView> i = alltags.iterator(); i.hasNext(); ) {
if(i.hasNext()) TagModelForView tag = i.next();
tagString.append(", "); tagString.append(tag.getName());
} if(i.hasNext())
if(tagString.length() > 0) { tagString.append(", ");
tagsView.setText(r.getString(R.string.tags_prefix) + " " + }
tagString); if(alltags.size() > 0)
} else if(!hasProperties) { tags.setText(r.getString(R.string.taskList_tagsPrefix) + " " + tagString);
tagsView.setText(r.getString(R.string.no_tags));
} }
setVisibility(tags);
setTaskAppearance(task, name, progress); // notes
hooks.onCreatedTaskListView(view, task); final TextView notes = ((TextView)view.findViewById(R.id.text_notes));
if(visibleFields.NOTES) {
notes.setText(r.getString(R.string.taskList_notesPrefix) + " " + task.getNotes());
}
setVisibility(notes);
} }
private void addListeners(final int position, final View view) { private void addListeners(final int position, final View view) {

@ -41,9 +41,11 @@ public class TaskModelForList extends AbstractTaskModel {
TIMER_START, TIMER_START,
DEFINITE_DUE_DATE, DEFINITE_DUE_DATE,
PREFERRED_DUE_DATE, PREFERRED_DUE_DATE,
NOTIFICATIONS,
PROGRESS_PERCENTAGE, PROGRESS_PERCENTAGE,
COMPLETION_DATE, COMPLETION_DATE,
HIDDEN_UNTIL, HIDDEN_UNTIL,
NOTES,
REPEAT, REPEAT,
}; };
@ -169,6 +171,16 @@ public class TaskModelForList extends AbstractTaskModel {
} }
@Override @Override
public String getNotes() {
return super.getNotes();
}
@Override
public Integer getNotificationIntervalSeconds() {
return super.getNotificationIntervalSeconds();
}
@Override
public RepeatInfo getRepeat() { public RepeatInfo getRepeat() {
return super.getRepeat(); return super.getRepeat();
} }

@ -19,6 +19,7 @@ import android.util.Log;
import com.mdt.rtm.ApplicationInfo; import com.mdt.rtm.ApplicationInfo;
import com.mdt.rtm.ServiceException; import com.mdt.rtm.ServiceException;
import com.mdt.rtm.ServiceImpl; import com.mdt.rtm.ServiceImpl;
import com.mdt.rtm.ServiceInternalException;
import com.mdt.rtm.data.RtmList; import com.mdt.rtm.data.RtmList;
import com.mdt.rtm.data.RtmLists; import com.mdt.rtm.data.RtmLists;
import com.mdt.rtm.data.RtmTask; import com.mdt.rtm.data.RtmTask;
@ -130,7 +131,14 @@ public class RTMSyncService extends SynchronizationService {
} }
} catch (Exception e) { } catch (Exception e) {
showError(activity, e); // IO Exception
if(e instanceof ServiceInternalException &&
((ServiceInternalException)e).getEnclosedException() instanceof
IOException) {
showError(activity, e, "Sync Connection Error! Check your " +
"Internet connection & try again...");
} else
showError(activity, e, null);
} }
} }
@ -220,7 +228,7 @@ public class RTMSyncService extends SynchronizationService {
Preferences.setSyncRTMLastSync(activity, syncTime); Preferences.setSyncRTMLastSync(activity, syncTime);
} catch (Exception e) { } catch (Exception e) {
showError(activity, e); showError(activity, e, null);
} }
} }

@ -74,19 +74,25 @@ public abstract class SynchronizationService {
// --- utilities // --- utilities
/** Utility class for showing synchronization errors */ /** Utility method for showing synchronization errors. If message is null,
void showError(final Context context, final Throwable e) { * the contents of the throwable is displayed.
*/
void showError(final Context context, Throwable e, String message) {
Log.e("astrid", "Synchronization Error", e); Log.e("astrid", "Synchronization Error", e);
Resources r = context.getResources();
final String messageToDisplay;
if(message == null) {
messageToDisplay = r.getString(R.string.sync_error) + " " +
e.toString() + " - " + e.getStackTrace()[1];
} else {
messageToDisplay = message;
}
syncHandler.post(new Runnable() { syncHandler.post(new Runnable() {
@Override @Override
public void run() { public void run() {
if(progressDialog != null) if(progressDialog != null)
progressDialog.dismiss(); progressDialog.dismiss();
DialogUtilities.okDialog(context, messageToDisplay, null);
Resources r = context.getResources();
DialogUtilities.okDialog(context,
r.getString(R.string.sync_error) + " " +
e.toString() + " - " + e.getStackTrace()[0], null);
} }
}); });
} }

@ -33,9 +33,9 @@ public class Notifications extends BroadcastReceiver {
// stuff for scheduling // stuff for scheduling
/** minimum # of seconds before a deadline to notify */ /** minimum # of seconds before a deadline to notify */
private static final int DEADLINE_NOTIFY_SECS = 60 * 60; private static final int DEADLINE_NOTIFY_SECS = 10; //60 * 60;
/** # of seconds after deadline to repeat reminder*/ /** # of seconds after deadline to repeat reminder*/
private static final int DEADLINE_REPEAT = 10 * 60; private static final int DEADLINE_REPEAT = 20; //10 * 60;
// flags // flags
public static final int FLAG_DEFINITE_DEADLINE = 1 << 0; public static final int FLAG_DEFINITE_DEADLINE = 1 << 0;
@ -67,7 +67,6 @@ public class Notifications extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
long id = intent.getLongExtra(ID_KEY, 0); long id = intent.getLongExtra(ID_KEY, 0);
int flags = intent.getIntExtra(FLAGS_KEY, 0); int flags = intent.getIntExtra(FLAGS_KEY, 0);
Log.e("ALARM", "Alarm triggered id " + id);
Resources r = context.getResources(); Resources r = context.getResources();
String reminder; String reminder;
@ -79,6 +78,8 @@ public class Notifications extends BroadcastReceiver {
reminder = getRandomReminder(r); reminder = getRandomReminder(r);
long repeatInterval = intent.getLongExtra(REPEAT_KEY, 0); long repeatInterval = intent.getLongExtra(REPEAT_KEY, 0);
Log.e("ALARM", "Alarm triggered id " + id +", flags " + flags +
", repeat " + repeatInterval);
if(!showNotification(context, id, flags, repeatInterval, reminder)) { if(!showNotification(context, id, flags, repeatInterval, reminder)) {
deleteAlarm(context, id); deleteAlarm(context, id);
@ -168,15 +169,15 @@ public class Notifications extends BroadcastReceiver {
0, FLAG_PREFERRED_DEADLINE, task); 0, FLAG_PREFERRED_DEADLINE, task);
} }
if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AT_DEADLINE) > 0) { if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AT_DEADLINE) > 0) {
scheduleDeadline(context, task.getDefiniteDueDate(), 0, if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) == 0)
0, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, task); scheduleDeadline(context, task.getDefiniteDueDate(), 0,
0, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, task);
scheduleDeadline(context, task.getPreferredDueDate(), 0, scheduleDeadline(context, task.getPreferredDueDate(), 0,
0, FLAG_PREFERRED_DEADLINE | FLAG_OVERDUE, task); 0, FLAG_PREFERRED_DEADLINE | FLAG_OVERDUE, task);
} }
if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) > 0) { if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) > 0) {
scheduleDeadline(context, task.getDefiniteDueDate(), 0, scheduleDeadline(context, task.getDefiniteDueDate(), 0,
DEADLINE_REPEAT, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, DEADLINE_REPEAT, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, task);
task);
} }
// fixed alerts // fixed alerts

@ -45,10 +45,47 @@ public class Preferences {
editor.putBoolean(r.getString(R.string.p_colorize), DEFAULT_COLORIZE); editor.putBoolean(r.getString(R.string.p_colorize), DEFAULT_COLORIZE);
} }
setVisibilityPreferences(prefs, editor, r);
editor.commit(); editor.commit();
} }
/** CurrentVersion: the currently installed version of Astrid */ private static void setVisibilityPreferences(SharedPreferences p, Editor e, Resources r) {
if(!p.contains(r.getString(R.string.prefs_titleVisible))) {
e.putBoolean(r.getString(R.string.prefs_titleVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_titleVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_timeVisible))) {
e.putBoolean(r.getString(R.string.prefs_timeVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_timeVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_deadlineVisible))) {
e.putBoolean(r.getString(R.string.prefs_deadlineVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_deadlineVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_importanceVisible))) {
e.putBoolean(r.getString(R.string.prefs_importanceVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_importanceVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_reminderVisible))) {
e.putBoolean(r.getString(R.string.prefs_reminderVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_reminderVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_repeatVisible))) {
e.putBoolean(r.getString(R.string.prefs_repeatVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_repeatVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_tagsVisible))) {
e.putBoolean(r.getString(R.string.prefs_tagsVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_tagsVisible_default)));
}
if(!p.contains(r.getString(R.string.prefs_notesVisible))) {
e.putBoolean(r.getString(R.string.prefs_notesVisible),
Boolean.parseBoolean(r.getString(R.string.prefs_notesVisible_default)));
}
}
/** CurrentVersion: the currently installed version of Astrid */
public static int getCurrentVersion(Context context) { public static int getCurrentVersion(Context context) {
return getPrefs(context).getInt(P_CURRENT_VERSION, 0); return getPrefs(context).getInt(P_CURRENT_VERSION, 0);
} }
@ -203,7 +240,6 @@ public class Preferences {
// --- helper methods // --- helper methods
@SuppressWarnings("unused")
private static void clearPref(Context context, String key) { private static void clearPref(Context context, String key) {
Editor editor = getPrefs(context).edit(); Editor editor = getPrefs(context).edit();
editor.remove(key); editor.remove(key);
@ -224,4 +260,8 @@ public class Preferences {
return null; return null;
} }
} }
public static TaskFieldsVisibility getTaskFieldsVisibility(Context context) {
return TaskFieldsVisibility.getFromPreferences(context, getPrefs(context));
}
} }

@ -0,0 +1,55 @@
package com.timsu.astrid.utilities;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import com.timsu.astrid.R;
/** Helper struct to store preferences for field visibility */
public class TaskFieldsVisibility {
// --- they're like constants... except mutable =/
public boolean TITLE;
public boolean TIMES;
public boolean IMPORTANCE;
public boolean DEADLINE;
public boolean REMINDERS;
public boolean REPEATS;
public boolean TAGS;
public boolean NOTES;
private static class PrefReader {
SharedPreferences prefs;
Resources r;
public PrefReader(SharedPreferences prefs, Resources r) {
this.prefs = prefs;
this.r = r;
}
private boolean get(int key, int defValue) {
return prefs.getBoolean(r.getString(key),
Boolean.parseBoolean(r.getString(defValue)));
}
}
public static TaskFieldsVisibility getFromPreferences(Context context,
SharedPreferences prefs) {
TaskFieldsVisibility tf = new TaskFieldsVisibility();
Resources r = context.getResources();
PrefReader pr = new PrefReader(prefs, r);
tf.TITLE = pr.get(R.string.prefs_titleVisible, R.string.prefs_titleVisible_default);
tf.TIMES = pr.get(R.string.prefs_timeVisible, R.string.prefs_timeVisible_default);
tf.IMPORTANCE = pr.get(R.string.prefs_importanceVisible, R.string.prefs_importanceVisible_default);
tf.DEADLINE = pr.get(R.string.prefs_deadlineVisible, R.string.prefs_deadlineVisible_default);
tf.REMINDERS = pr.get(R.string.prefs_reminderVisible, R.string.prefs_reminderVisible_default);
tf.REPEATS = pr.get(R.string.prefs_repeatVisible, R.string.prefs_repeatVisible_default);
tf.TAGS = pr.get(R.string.prefs_tagsVisible, R.string.prefs_tagsVisible_default);
tf.NOTES = pr.get(R.string.prefs_notesVisible, R.string.prefs_notesVisible_default);
return tf;
}
}
Loading…
Cancel
Save