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"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid"
android:versionCode="63"
android:versionName="2.0.0">
android:versionCode="64"
android:versionName="2.0.1">
<meta-data android:name="com.a0soft.gphone.aTrackDog.webURL"
android:value="http://www.weloveastrid.com" />
@ -29,7 +29,32 @@
android:theme="@android:style/Theme.Dialog"
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"/>

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

@ -32,7 +32,7 @@
<color name="taskList_dueDate">#ffF0E89E</color>
<color name="taskList_remainingTime">#ff88AAFF</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_table_values">#ffbbbbbb</color>

@ -46,6 +46,10 @@
<item quantity="one">%d / %d Active</item>
<item quantity="other">%d / %d Active</item>
</plurals>
<plurals name="Nalarms">
<item quantity="one">%d Alarm</item>
<item quantity="other">%d Alarms</item>
</plurals>
<plurals name="Ntags">
<item quantity="one">1 Tag</item>
<item quantity="other">%d Tags</item>
@ -75,18 +79,20 @@
<string name="taskList_titlePrefix">Astrid: </string>
<string name="taskList_titleTagPrefix">Tagged \"%s\": </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="tags_prefix">Tags: </string>
<string name="no_tags">No Tags</string>
<string name="taskList_remaining">Left</string>
<string name="taskList_overtime">Overtime</string>
<string name="taskList_spent">Spent</string>
<string name="taskList_hiddenPrefix">H</string>
<string name="taskList_dueIn">Due in</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_tags">Tags</string>
@ -220,9 +226,10 @@ When finished, restart Astrid and come back here.
<string name="sync_rtm_notes">
Welcome to Astrid\'s RTM sync!
\n\n
- Notifications and repeats are not synchronized.\n
- In RTM, deleting, or moving and then renaming a task, is not detected.\n
- Having ~50+ tasks in one list might cause that list to not be imported\n
Things that don\'t sync:\n
- Notifications and repeats\n
- In RTM, deleting, or moving+renaming tasks\n
\n
Wish me luck!\n
</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_deadlineTime_title">Default 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>

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

@ -26,20 +26,63 @@
android:summary="@string/prefs_notification_desc"
android:ringtoneType="notification"
android:showDefault="true"
android:showSilent="true"
/>
</PreferenceCategory>
android:showSilent="true" />
</PreferenceCategory>
<PreferenceCategory
<PreferenceCategory
android:title="@string/prefs_category_appearance">
<CheckBoxPreference
<CheckBoxPreference
android:key="@string/p_colorize"
android:title="@string/prefs_colorize_title"
android:summary="@string/prefs_colorize_desc" />
<EditTextPreference
<EditTextPreference
android:key="@string/p_fontSize"
android:title="@string/prefs_fontSize_title"
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

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

@ -25,14 +25,15 @@ public final class R {
public static final class attr {
}
public static final class color {
public static final int importance_1=0x7f07000e;
public static final int importance_2=0x7f07000f;
public static final int importance_3=0x7f070010;
public static final int importance_4=0x7f070011;
public static final int taskList_completedDate=0x7f070009;
public static final int importance_1=0x7f07000f;
public static final int importance_2=0x7f070010;
public static final int importance_3=0x7f070011;
public static final int importance_4=0x7f070012;
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_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_importance_1=0x7f070003;
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_normal=0x7f070001;
public static final int task_list_overdue=0x7f070000;
public static final int view_header_done=0x7f07000b;
public static final int view_table_overdue=0x7f07000d;
public static final int view_table_values=0x7f07000c;
public static final int view_header_done=0x7f07000c;
public static final int view_table_overdue=0x7f07000e;
public static final int view_table_values=0x7f07000d;
}
public static final class drawable {
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 alert_container=0x7f0b0035;
public static final int alerts_label=0x7f0b0034;
public static final int btn_tasklist=0x7f0b0049;
public static final int btn_viewtask=0x7f0b0048;
public static final int btn_tasklist=0x7f0b004d;
public static final int btn_viewtask=0x7f0b004c;
public static final int button=0x7f0b0003;
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 cell_creationDate=0x7f0b0054;
public static final int cell_definiteDueDate=0x7f0b0052;
public static final int cell_elapsed=0x7f0b004f;
public static final int cell_estimated=0x7f0b0050;
public static final int cell_notes=0x7f0b0051;
public static final int cell_preferredDueDate=0x7f0b0053;
public static final int cell_creationDate=0x7f0b0058;
public static final int cell_definiteDueDate=0x7f0b0056;
public static final int cell_elapsed=0x7f0b0053;
public static final int cell_estimated=0x7f0b0054;
public static final int cell_notes=0x7f0b0055;
public static final int cell_preferredDueDate=0x7f0b0057;
public static final int container=0x7f0b0005;
public static final int date=0x7f0b0000;
public static final int decrement=0x7f0b0008;
public static final int definiteDueDate_date=0x7f0b0020;
public static final int definiteDueDate_label=0x7f0b001e;
public static final int definiteDueDate_notnull=0x7f0b001f;
public static final int definiteDueDate_time=0x7f0b0021;
public static final int delete=0x7f0b001c;
public static final int discard=0x7f0b001b;
public static final int edit=0x7f0b0055;
public static final int definiteDueDate_date=0x7f0b0022;
public static final int definiteDueDate_label=0x7f0b0020;
public static final int definiteDueDate_notnull=0x7f0b0021;
public static final int definiteDueDate_time=0x7f0b0023;
public static final int delete=0x7f0b001e;
public static final int discard=0x7f0b001d;
public static final int edit=0x7f0b0059;
public static final int elapsedDuration=0x7f0b0030;
public static final int elapsedDuration_label=0x7f0b002f;
public static final int estimatedDuration=0x7f0b002e;
public static final int estimatedDuration_label=0x7f0b002d;
public static final int estimatedDuration=0x7f0b0019;
public static final int estimatedDuration_label=0x7f0b0018;
public static final int event=0x7f0b0011;
public static final int flag_after=0x7f0b003a;
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 forget=0x7f0b000b;
public static final int frame=0x7f0b000f;
public static final int greeting=0x7f0b0046;
public static final int hiddenUntil_date=0x7f0b0028;
public static final int hiddenUntil_label=0x7f0b0026;
public static final int hiddenUntil_notnull=0x7f0b0027;
public static final int hiddenUntil_time=0x7f0b0029;
public static final int greeting=0x7f0b004a;
public static final int hiddenUntil_date=0x7f0b002a;
public static final int hiddenUntil_label=0x7f0b0028;
public static final int hiddenUntil_notnull=0x7f0b0029;
public static final int hiddenUntil_time=0x7f0b002b;
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_label=0x7f0b0014;
public static final int increment=0x7f0b0006;
public static final int name=0x7f0b0013;
public static final int name_label=0x7f0b0012;
public static final int notes=0x7f0b0019;
public static final int notes_label=0x7f0b0018;
public static final int notes=0x7f0b001b;
public static final int notes_label=0x7f0b001a;
public static final int notification=0x7f0b0033;
public static final int notification_label=0x7f0b0032;
public static final int numberPicker=0x7f0b0009;
public static final int preferredDueDate_date=0x7f0b0024;
public static final int preferredDueDate_label=0x7f0b0022;
public static final int preferredDueDate_notnull=0x7f0b0023;
public static final int preferredDueDate_time=0x7f0b0025;
public static final int progress=0x7f0b004e;
public static final int prop_layout=0x7f0b0042;
public static final int repeat_interval=0x7f0b002c;
public static final int repeat_label=0x7f0b002a;
public static final int repeat_value=0x7f0b002b;
public static final int preferredDueDate_date=0x7f0b0026;
public static final int preferredDueDate_label=0x7f0b0024;
public static final int preferredDueDate_notnull=0x7f0b0025;
public static final int preferredDueDate_time=0x7f0b0027;
public static final int progress=0x7f0b0052;
public static final int repeat_interval=0x7f0b002e;
public static final int repeat_label=0x7f0b002c;
public static final int repeat_value=0x7f0b002d;
public static final int row_layout=0x7f0b003e;
public static final int save=0x7f0b001a;
public static final int scroll_view=0x7f0b004a;
public static final int save=0x7f0b001c;
public static final int scroll_view=0x7f0b004e;
public static final int sync=0x7f0b000c;
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 taglist=0x7f0b000e;
public static final int taglist_layout=0x7f0b000d;
public static final int tags_container=0x7f0b0017;
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_layout=0x7f0b003b;
public static final int taskname=0x7f0b0047;
public static final int taskname=0x7f0b004b;
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_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 timepicker_input=0x7f0b0007;
public static final int timerButton=0x7f0b004d;
public static final int view_layout=0x7f0b004b;
public static final int timerButton=0x7f0b0051;
public static final int view_layout=0x7f0b004f;
}
public static final class layout {
public static final int edit_alert_item=0x7f030000;
@ -192,47 +197,50 @@ public final class R {
}
public static final class plurals {
public static final int NactiveTasks=0x7f090001;
public static final int Nalarms=0x7f090002;
/** Time Constants
*/
public static final int Ndays=0x7f090003;
public static final int Nhours=0x7f090004;
public static final int Nminutes=0x7f090005;
public static final int Nseconds=0x7f090006;
public static final int Ntags=0x7f090002;
public static final int Ndays=0x7f090004;
public static final int Nhours=0x7f090005;
public static final int Nminutes=0x7f090006;
public static final int Nseconds=0x7f090007;
public static final int Ntags=0x7f090003;
/** Plurals
*/
public static final int Ntasks=0x7f090000;
}
public static final class string {
public static final int add_alert=0x7f080042;
public static final int addtask_label=0x7f080012;
public static final int ago_suffix=0x7f08005c;
public static final int alerts_label=0x7f080041;
public static final int add_alert=0x7f080047;
public static final int addtask_label=0x7f08000d;
public static final int ago_suffix=0x7f080061;
public static final int alerts_label=0x7f080046;
/** application
*/
public static final int app_name=0x7f080000;
public static final int blank_button_title=0x7f08004c;
public static final int blockingOn_label=0x7f080038;
public static final int blank_button_title=0x7f080051;
public static final int blockingOn_label=0x7f08003d;
public static final int days=0x7f080008;
public static final int definiteDueDate_label=0x7f080033;
public static final int delete_label=0x7f08004b;
public static final int delete_this_tag_title=0x7f08007d;
public static final int delete_this_task_title=0x7f08007c;
public static final int delete_title=0x7f08007b;
public static final int discard_label=0x7f08004a;
public static final int edit_label=0x7f080053;
public static final int elapsedDuration_label=0x7f080032;
public static final int error_opening=0x7f080081;
public static final int error_saving=0x7f080082;
public static final int estimatedDuration_label=0x7f080031;
public static final int flag_after=0x7f080040;
public static final int flag_before=0x7f08003e;
public static final int flag_during=0x7f08003f;
public static final int flags_label=0x7f08003d;
public static final int hiddenUntil_label=0x7f080035;
public static final int definiteDueDate_label=0x7f080038;
public static final int delete_label=0x7f080050;
public static final int delete_this_tag_title=0x7f080083;
public static final int delete_this_task_title=0x7f080082;
public static final int delete_title=0x7f080081;
public static final int discard_label=0x7f08004f;
public static final int displayedFields_PrefScreen_Desc=0x7f0800a5;
public static final int displayedFields_PrefScreen_Title=0x7f0800a4;
public static final int edit_label=0x7f080058;
public static final int elapsedDuration_label=0x7f080037;
public static final int error_opening=0x7f080087;
public static final int error_saving=0x7f080088;
public static final int estimatedDuration_label=0x7f080036;
public static final int flag_after=0x7f080045;
public static final int flag_before=0x7f080043;
public static final int flag_during=0x7f080044;
public static final int flags_label=0x7f080042;
public static final int hiddenUntil_label=0x7f08003a;
/** dialog boxes
*/
public static final int hour_minutes_dialog=0x7f080043;
public static final int hour_minutes_dialog=0x7f080048;
public static final int hours=0x7f080009;
/** Importance Labels
*/
@ -240,140 +248,178 @@ 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=0x7f08002f;
public static final int information_title=0x7f080075;
public static final int key_notification_ringtone=0x7f080087;
public static final int name_hint=0x7f08002e;
public static final int importance_label=0x7f080034;
public static final int information_title=0x7f08007b;
public static final int key_notification_ringtone=0x7f08008d;
public static final int name_hint=0x7f080033;
/** labels
*/
public static final int name_label=0x7f08002d;
public static final int no_tags=0x7f080014;
public static final int notes_hint=0x7f08003a;
public static final int notes_label=0x7f080039;
public static final int notif_definiteDueDate=0x7f08007f;
public static final int notif_preferredDueDate=0x7f080080;
public static final int notification_dialog=0x7f080044;
public static final int notification_label=0x7f08003b;
public static final int notification_prefix=0x7f08003c;
public static final int notify_no=0x7f080079;
public static final int notify_snooze=0x7f080078;
public static final int notify_snooze_title=0x7f08007a;
public static final int notify_yes=0x7f080077;
public static final int overdue_suffix=0x7f08005b;
public static final int p_colorize=0x7f08008a;
public static final int p_deadlineTime=0x7f080089;
public static final int p_fontSize=0x7f080088;
public static final int p_notif_annoy=0x7f080085;
public static final int p_notif_defaultRemind=0x7f080086;
public static final int p_notif_quietEnd=0x7f080084;
public static final int p_notif_quietStart=0x7f080083;
public static final int p_sync_every=0x7f080067;
public static final int p_sync_rtm=0x7f080066;
public static final int preferredDueDate_label=0x7f080034;
public static final int prefs_annoy_desc=0x7f080093;
public static final int prefs_annoy_title=0x7f080092;
public static final int prefs_category_alerts=0x7f08008b;
public static final int prefs_category_appearance=0x7f080096;
public static final int prefs_category_other=0x7f08009b;
public static final int prefs_colorize_desc=0x7f08009a;
public static final int prefs_colorize_title=0x7f080099;
public static final int prefs_deadlineTime_desc=0x7f08009d;
public static final int prefs_deadlineTime_title=0x7f08009c;
public static final int prefs_defaultRemind_desc=0x7f080091;
public static final int prefs_defaultRemind_title=0x7f080090;
public static final int prefs_fontSize_desc=0x7f080098;
public static final int prefs_fontSize_title=0x7f080097;
public static final int prefs_notification_desc=0x7f080095;
public static final int prefs_notification_title=0x7f080094;
public static final int prefs_quietEnd_desc=0x7f08008f;
public static final int prefs_quietEnd_title=0x7f08008e;
public static final int prefs_quietStart_desc=0x7f08008d;
public static final int prefs_quietStart_title=0x7f08008c;
public static final int progress_dialog=0x7f08005d;
public static final int progress_suffix=0x7f080052;
public static final int question_title=0x7f080076;
public static final int name_label=0x7f080032;
public static final int notes_hint=0x7f08003f;
public static final int notes_label=0x7f08003e;
public static final int notif_definiteDueDate=0x7f080085;
public static final int notif_preferredDueDate=0x7f080086;
public static final int notification_dialog=0x7f080049;
public static final int notification_label=0x7f080040;
public static final int notification_prefix=0x7f080041;
public static final int notify_no=0x7f08007f;
public static final int notify_snooze=0x7f08007e;
public static final int notify_snooze_title=0x7f080080;
public static final int notify_yes=0x7f08007d;
public static final int overdue_suffix=0x7f080060;
public static final int p_colorize=0x7f080090;
public static final int p_deadlineTime=0x7f08008f;
public static final int p_fontSize=0x7f08008e;
public static final int p_notif_annoy=0x7f08008b;
public static final int p_notif_defaultRemind=0x7f08008c;
public static final int p_notif_quietEnd=0x7f08008a;
public static final int p_notif_quietStart=0x7f080089;
public static final int p_sync_every=0x7f08006c;
public static final int p_sync_rtm=0x7f08006b;
public static final int preferredDueDate_label=0x7f080039;
public static final int prefs_annoy_desc=0x7f080099;
public static final int prefs_annoy_title=0x7f080098;
public static final int prefs_category_alerts=0x7f080091;
public static final int prefs_category_appearance=0x7f08009c;
public static final int prefs_category_other=0x7f0800a1;
public static final int prefs_colorize_desc=0x7f0800a0;
public static final int prefs_colorize_title=0x7f08009f;
public static final int prefs_deadlineTime_desc=0x7f0800a3;
public static final int prefs_deadlineTime_title=0x7f0800a2;
public static final int prefs_deadlineVisible=0x7f0800aa;
public static final int prefs_deadlineVisible_default=0x7f0800ad;
public static final int prefs_deadlineVisible_desc=0x7f0800ac;
public static final int prefs_deadlineVisible_title=0x7f0800ab;
public static final int prefs_defaultRemind_desc=0x7f080097;
public static final int prefs_defaultRemind_title=0x7f080096;
public static final int prefs_fontSize_desc=0x7f08009e;
public static final int prefs_fontSize_title=0x7f08009d;
public static final int prefs_importanceVisible=0x7f0800b2;
public static final int prefs_importanceVisible_default=0x7f0800b5;
public static final int prefs_importanceVisible_desc=0x7f0800b4;
public static final int prefs_importanceVisible_title=0x7f0800b3;
public static final int prefs_notesVisible=0x7f0800c2;
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
*/
public static final int repeat_days=0x7f080005;
public static final int repeat_help_dialog=0x7f080047;
public static final int repeat_help_dialog_title=0x7f080046;
public static final int repeat_help_hide=0x7f080048;
public static final int repeat_label=0x7f080036;
public static final int repeat_help_dialog=0x7f08004c;
public static final int repeat_help_dialog_title=0x7f08004b;
public static final int repeat_help_hide=0x7f08004d;
public static final int repeat_label=0x7f08003b;
public static final int repeat_months=0x7f080007;
public static final int repeat_picker_title=0x7f080045;
public static final int repeat_value_unset=0x7f080037;
public static final int repeat_picker_title=0x7f08004a;
public static final int repeat_value_unset=0x7f08003c;
public static final int repeat_weeks=0x7f080006;
/** buttons
*/
public static final int save_label=0x7f080049;
public static final int startTimer_label=0x7f080050;
public static final int stopTimer_label=0x7f080051;
public static final int stop_timer_title=0x7f08007e;
public static final int sync_auth_request=0x7f080070;
public static final int sync_error=0x7f08006f;
public static final int sync_every_desc=0x7f08006e;
public static final int sync_every_title=0x7f08006d;
public static final int sync_forget=0x7f080073;
public static final int sync_forget_confirm=0x7f080074;
public static final int sync_now=0x7f080072;
public static final int sync_pref_group=0x7f080068;
public static final int sync_pref_group_actions=0x7f080069;
public static final int sync_pref_group_options=0x7f08006a;
public static final int sync_rtm_desc=0x7f08006c;
public static final int sync_rtm_notes=0x7f080071;
public static final int sync_rtm_title=0x7f08006b;
public static final int tagList_context_create=0x7f08005f;
public static final int tagList_context_delete=0x7f080061;
public static final int tagList_context_edit=0x7f080060;
public static final int tagList_context_hideTag=0x7f080063;
public static final int tagList_context_showTag=0x7f080062;
public static final int tagList_menu_sortAlpha=0x7f080064;
public static final int tagList_menu_sortSize=0x7f080065;
public static final int tagList_titlePrefix=0x7f08005e;
public static final int tags_label=0x7f080030;
public static final int tags_prefix=0x7f080013;
public static final int taskEdit_menu_save=0x7f08004d;
public static final int taskEdit_titleGeneric=0x7f080028;
public static final int taskEdit_titlePrefix=0x7f080029;
public static final int taskList_completedPrefix=0x7f08000f;
public static final int taskList_context_delete=0x7f08001d;
public static final int taskList_context_edit=0x7f08001c;
public static final int taskList_context_startTimer=0x7f08001e;
public static final int taskList_context_stopTimer=0x7f08001f;
public static final int taskList_dueIn=0x7f08000d;
public static final int taskList_filter_done=0x7f080022;
public static final int taskList_filter_hidden=0x7f080021;
public static final int taskList_filter_tagged=0x7f080023;
public static final int taskList_filter_title=0x7f080020;
public static final int taskList_goalPrefix=0x7f08000e;
public static final int taskList_hiddenPrefix=0x7f080011;
public static final int save_label=0x7f08004e;
public static final int startTimer_label=0x7f080055;
public static final int stopTimer_label=0x7f080056;
public static final int stop_timer_title=0x7f080084;
public static final int sync_auth_request=0x7f080075;
public static final int sync_error=0x7f080074;
public static final int sync_every_desc=0x7f080073;
public static final int sync_every_title=0x7f080072;
public static final int sync_forget=0x7f080078;
public static final int sync_forget_confirm=0x7f080079;
public static final int sync_no_synchronizers=0x7f08007a;
public static final int sync_now=0x7f080077;
public static final int sync_pref_group=0x7f08006d;
public static final int sync_pref_group_actions=0x7f08006e;
public static final int sync_pref_group_options=0x7f08006f;
public static final int sync_rtm_desc=0x7f080071;
public static final int sync_rtm_notes=0x7f080076;
public static final int sync_rtm_title=0x7f080070;
public static final int tagList_context_create=0x7f080064;
public static final int tagList_context_delete=0x7f080066;
public static final int tagList_context_edit=0x7f080065;
public static final int tagList_context_hideTag=0x7f080068;
public static final int tagList_context_showTag=0x7f080067;
public static final int tagList_menu_sortAlpha=0x7f080069;
public static final int tagList_menu_sortSize=0x7f08006a;
public static final int tagList_titlePrefix=0x7f080063;
public static final int tags_label=0x7f080035;
public static final int taskEdit_menu_save=0x7f080052;
public static final int taskEdit_titleGeneric=0x7f08002d;
public static final int taskEdit_titlePrefix=0x7f08002e;
public static final int taskList_alarmSuffix=0x7f080017;
public static final int taskList_completedPrefix=0x7f080012;
public static final int taskList_context_delete=0x7f080022;
public static final int taskList_context_edit=0x7f080021;
public static final int taskList_context_startTimer=0x7f080023;
public static final int taskList_context_stopTimer=0x7f080024;
public static final int taskList_dueIn=0x7f08000f;
public static final int taskList_elapsedTimePrefix=0x7f080014;
public static final int taskList_estimatedTimePrefix=0x7f080013;
public static final int taskList_filter_done=0x7f080027;
public static final int taskList_filter_hidden=0x7f080026;
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_menu_filters=0x7f080017;
public static final int taskList_menu_help=0x7f08001b;
public static final int taskList_menu_insert=0x7f080015;
public static final int taskList_menu_more=0x7f080018;
public static final int taskList_menu_settings=0x7f08001a;
public static final int taskList_menu_sync=0x7f080019;
public static final int taskList_menu_tags=0x7f080016;
public static final int taskList_overdueBy=0x7f080010;
public static final int taskList_sort_alpha=0x7f080025;
public static final int taskList_sort_auto=0x7f080024;
public static final int taskList_sort_duedate=0x7f080026;
public static final int taskList_sort_reverse=0x7f080027;
public static final int taskList_menu_filters=0x7f08001c;
public static final int taskList_menu_help=0x7f080020;
public static final int taskList_menu_insert=0x7f08001a;
public static final int taskList_menu_more=0x7f08001d;
public static final int taskList_menu_settings=0x7f08001f;
public static final int taskList_menu_sync=0x7f08001e;
public static final int taskList_menu_tags=0x7f08001b;
public static final int taskList_notesPrefix=0x7f080019;
public static final int taskList_overdueBy=0x7f080011;
public static final int taskList_periodicReminderPrefix=0x7f080015;
public static final int taskList_repeatPrefix=0x7f080016;
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_titleTagPrefix=0x7f08000b;
public static final int taskView_creationDate=0x7f080058;
public static final int taskView_definiteDueDate=0x7f080056;
public static final int taskView_elapsed=0x7f080054;
public static final int taskView_estimated=0x7f080055;
public static final int taskView_notes=0x7f08005a;
public static final int taskView_notifyTitle=0x7f08004f;
public static final int taskView_preferredDueDate=0x7f080057;
public static final int taskView_tags=0x7f080059;
public static final int taskView_title=0x7f08004e;
public static final int task_edit_tab_1=0x7f08002a;
public static final int task_edit_tab_2=0x7f08002b;
public static final int task_edit_tab_3=0x7f08002c;
public static final int taskView_creationDate=0x7f08005d;
public static final int taskView_definiteDueDate=0x7f08005b;
public static final int taskView_elapsed=0x7f080059;
public static final int taskView_estimated=0x7f08005a;
public static final int taskView_notes=0x7f08005f;
public static final int taskView_notifyTitle=0x7f080054;
public static final int taskView_preferredDueDate=0x7f08005c;
public static final int taskView_tags=0x7f08005e;
public static final int taskView_title=0x7f080053;
public static final int task_edit_tab_1=0x7f08002f;
public static final int task_edit_tab_2=0x7f080030;
public static final int task_edit_tab_3=0x7f080031;
}
public static final class style {
public static final int Alert=0x7f0a0000;

@ -146,11 +146,6 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
.setIndicator("Alerts",
r.getDrawable(R.drawable.ic_dialog_alert_c))
.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();
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.removeAll(tagIds);
tagsToAdd = tagIds;
tagsToAdd.removeAll(taskTags);
// perform the database updates
for(TagIdentifier tagId : tagsToDelete)
tagController.removeTag(model.getTaskIdentifier(), tagId);
for(TagIdentifier tagId : tagsToAdd)

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

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

@ -19,6 +19,7 @@ import android.util.Log;
import com.mdt.rtm.ApplicationInfo;
import com.mdt.rtm.ServiceException;
import com.mdt.rtm.ServiceImpl;
import com.mdt.rtm.ServiceInternalException;
import com.mdt.rtm.data.RtmList;
import com.mdt.rtm.data.RtmLists;
import com.mdt.rtm.data.RtmTask;
@ -130,7 +131,14 @@ public class RTMSyncService extends SynchronizationService {
}
} 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);
} catch (Exception e) {
showError(activity, e);
showError(activity, e, null);
}
}

@ -74,19 +74,25 @@ public abstract class SynchronizationService {
// --- utilities
/** Utility class for showing synchronization errors */
void showError(final Context context, final Throwable e) {
/** Utility method for showing synchronization errors. If message is null,
* the contents of the throwable is displayed.
*/
void showError(final Context context, Throwable e, String message) {
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() {
@Override
public void run() {
if(progressDialog != null)
progressDialog.dismiss();
Resources r = context.getResources();
DialogUtilities.okDialog(context,
r.getString(R.string.sync_error) + " " +
e.toString() + " - " + e.getStackTrace()[0], null);
DialogUtilities.okDialog(context, messageToDisplay, null);
}
});
}

@ -33,9 +33,9 @@ public class Notifications extends BroadcastReceiver {
// stuff for scheduling
/** 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*/
private static final int DEADLINE_REPEAT = 10 * 60;
private static final int DEADLINE_REPEAT = 20; //10 * 60;
// flags
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) {
long id = intent.getLongExtra(ID_KEY, 0);
int flags = intent.getIntExtra(FLAGS_KEY, 0);
Log.e("ALARM", "Alarm triggered id " + id);
Resources r = context.getResources();
String reminder;
@ -79,6 +78,8 @@ public class Notifications extends BroadcastReceiver {
reminder = getRandomReminder(r);
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)) {
deleteAlarm(context, id);
@ -168,15 +169,15 @@ public class Notifications extends BroadcastReceiver {
0, FLAG_PREFERRED_DEADLINE, task);
}
if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AT_DEADLINE) > 0) {
scheduleDeadline(context, task.getDefiniteDueDate(), 0,
0, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, task);
if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) == 0)
scheduleDeadline(context, task.getDefiniteDueDate(), 0,
0, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, task);
scheduleDeadline(context, task.getPreferredDueDate(), 0,
0, FLAG_PREFERRED_DEADLINE | FLAG_OVERDUE, task);
}
if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) > 0) {
scheduleDeadline(context, task.getDefiniteDueDate(), 0,
DEADLINE_REPEAT, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE,
task);
DEADLINE_REPEAT, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, task);
}
// fixed alerts

@ -45,10 +45,47 @@ public class Preferences {
editor.putBoolean(r.getString(R.string.p_colorize), DEFAULT_COLORIZE);
}
setVisibilityPreferences(prefs, editor, r);
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) {
return getPrefs(context).getInt(P_CURRENT_VERSION, 0);
}
@ -203,7 +240,6 @@ public class Preferences {
// --- helper methods
@SuppressWarnings("unused")
private static void clearPref(Context context, String key) {
Editor editor = getPrefs(context).edit();
editor.remove(key);
@ -224,4 +260,8 @@ public class Preferences {
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