Merge of default-calendar branch in launchpad from Sami Salonen. (lp:~ssalonen/astrid/default-calendar)

Tim Su 16 years ago
parent f96f29171f
commit 3be69a1d6b

@ -23,15 +23,15 @@
android:label="@string/read_tasks_permission" android:label="@string/read_tasks_permission"
android:description="@string/read_tasks_permission"/> android:description="@string/read_tasks_permission"/>
<uses-permission android:name="com.timsu.astrid.permission.READ_TASKS"/> <uses-permission android:name="com.timsu.astrid.permission.READ_TASKS"/>
<uses-sdk android:minSdkVersion="3" <uses-sdk android:minSdkVersion="3"
android:targetSdkVersion="4" /> android:targetSdkVersion="4" />
<supports-screens /> <supports-screens />
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false">
<!-- ======================== Activities ========================= --> <!-- ======================== Activities ========================= -->
<!-- Activity that displays the task list --> <!-- Activity that displays the task list -->
<activity android:name=".activities.TaskList"> <activity android:name=".activities.TaskList">
<intent-filter> <intent-filter>
@ -39,11 +39,11 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Activity that redirects to a task list, invoked by notifications --> <!-- Activity that redirects to a task list, invoked by notifications -->
<activity android:name=".activities.TaskListNotify" <activity android:name=".activities.TaskListNotify"
android:launchMode="singleTop" /> android:launchMode="singleTop" />
<!-- Activity that creates or edits tasks --> <!-- Activity that creates or edits tasks -->
<activity android:name=".activities.TaskEdit" <activity android:name=".activities.TaskEdit"
android:icon="@drawable/icon_add" android:icon="@drawable/icon_add"
@ -58,7 +58,7 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/task" /> <data android:mimeType="vnd.android.cursor.item/task" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Activity that views tags --> <!-- Activity that views tags -->
@ -68,13 +68,13 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Activity that lets users log in to sync providers --> <!-- Activity that lets users log in to sync providers -->
<activity android:name=".activities.SyncLoginActivity"/> <activity android:name=".activities.SyncLoginActivity"/>
<!-- Activity that lets users edit app preferences --> <!-- Activity that lets users edit app preferences -->
<activity android:name=".activities.EditPreferences"/> <activity android:name=".activities.EditPreferences"/>
<!-- Activity that lets users edit synchronization preferences --> <!-- Activity that lets users edit synchronization preferences -->
<activity android:name=".activities.SyncPreferences"/> <activity android:name=".activities.SyncPreferences"/>
@ -90,15 +90,15 @@
</activity> </activity>
<!-- ======================== Receivers ========================= --> <!-- ======================== Receivers ========================= -->
<receiver android:name=".utilities.Notifications" /> <receiver android:name=".utilities.Notifications" />
<receiver android:name=".utilities.LocaleReceiver"> <receiver android:name=".utilities.LocaleReceiver">
<intent-filter> <intent-filter>
<action android:name="com.timsu.astrid.action.LOCALE_ALERT" /> <action android:name="com.timsu.astrid.action.LOCALE_ALERT" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver android:name=".utilities.StartupReceiver"> <receiver android:name=".utilities.StartupReceiver">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.BOOT_COMPLETED" />
@ -116,14 +116,14 @@
<!-- ======================== Services ========================== --> <!-- ======================== Services ========================== -->
<service android:name=".appwidget.AstridAppWidgetProvider$UpdateService"></service> <service android:name=".appwidget.AstridAppWidgetProvider$UpdateService"></service>
<service android:name=".sync.SynchronizationService" /> <service android:name=".sync.SynchronizationService" />
<service android:name=".utilities.BackupService"/> <service android:name=".utilities.BackupService"/>
<!-- ======================== Providers ========================== --> <!-- ======================== Providers ========================== -->
<provider <provider
android:name=".provider.TasksProvider" android:name=".provider.TasksProvider"
android:authorities="com.timsu.astrid.tasksprovider" android:authorities="com.timsu.astrid.tasksprovider"
@ -131,7 +131,7 @@
android:grantUriPermissions="true" android:grantUriPermissions="true"
android:readPermission="com.timsu.astrid.permission.READ_TASKS" android:readPermission="com.timsu.astrid.permission.READ_TASKS"
/> />
</application> </application>
</manifest> </manifest>

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
ASTRID: Android's Simple Task Recording Dashboard ASTRID: Android's Simple Task Recording Dashboard
Copyright (c) 2009 Tim Su Copyright (c) 2009 Tim Su
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, but This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details. for more details.
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--> -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
@ -30,28 +30,31 @@
<string name="p_notif_quietStart">notif_qstart</string> <string name="p_notif_quietStart">notif_qstart</string>
<string name="p_notif_quietEnd">notif_qend</string> <string name="p_notif_quietEnd">notif_qend</string>
<string name="p_notif_defaultRemind">notif_default_reminder</string> <string name="p_notif_defaultRemind">notif_default_reminder</string>
<string name="p_notif_annoy">notif_annoy</string> <string name="p_notif_annoy">notif_annoy</string>
<string name="p_notif_vibrate">notif_vibrate</string> <string name="p_notif_vibrate">notif_vibrate</string>
<string name="p_notification_ringtone">notification_ringtone</string> <string name="p_notification_ringtone">notification_ringtone</string>
<string name="p_notif_icon">notif_theme</string> <string name="p_notif_icon">notif_theme</string>
<string name="p_colorize">colorize</string> <string name="p_colorize">colorize</string>
<string name="p_fontSize">font_size</string> <string name="p_fontSize">font_size</string>
<string name="p_nagging">nagging</string> <string name="p_nagging">nagging</string>
<string name="p_deadlineTime">deadline_time</string> <string name="p_deadlineTime">deadline_time</string>
<string name="p_backup">backup</string> <string name="p_backup">backup</string>
<string name="prefs_titleVisible">titleVisible</string> <string name="prefs_defaultCalendar">default_calendar_id</string>
<string name="prefs_defaultCalendar_default">1</string>
<string name="prefs_titleVisible">titleVisible</string>
<string name="prefs_titleVisible_default">true</string> <string name="prefs_titleVisible_default">true</string>
<string name="prefs_deadlineVisible">deadlineVisible</string> <string name="prefs_deadlineVisible">deadlineVisible</string>
<string name="prefs_deadlineVisible_default">true</string> <string name="prefs_deadlineVisible_default">true</string>

@ -59,17 +59,17 @@
<item quantity="one">1 Tag</item> <item quantity="one">1 Tag</item>
<item quantity="other">%d Tags</item> <item quantity="other">%d Tags</item>
</plurals> </plurals>
<!-- Time Constants --> <!-- Time Constants -->
<!-- used for long due dates. c.f. Java's SimpleDateFormat --> <!-- used for long due dates. c.f. Java's SimpleDateFormat -->
<string name="dateFormatter">MMM d</string> <string name="dateFormatter">MMM d</string>
<!-- used for alarms --> <!-- used for alarms -->
<string name="alarmDateFormatter">M/dd HH:mm</string> <string name="alarmDateFormatter">M/dd HH:mm</string>
<!-- vertical labels are used in dialog boxes --> <!-- vertical labels are used in dialog boxes -->
<string name="daysVertical">D\na\ny\ns</string> <string name="daysVertical">D\na\ny\ns</string>
<string name="hoursVertical">H\no\nu\nr\ns</string> <string name="hoursVertical">H\no\nu\nr\ns</string>
<plurals name="Ndays"> <plurals name="Ndays">
<!-- plurals: days --> <!-- plurals: days -->
<item quantity="one">1 Day</item> <item quantity="one">1 Day</item>
@ -110,10 +110,10 @@
<item quantity="one">1 Sec</item> <item quantity="one">1 Sec</item>
<item quantity="other">%d Sec</item> <item quantity="other">%d Sec</item>
</plurals> </plurals>
<!-- indicates time in past. %s is replaced by time unit i.e. 1 minute --> <!-- indicates time in past. %s is replaced by time unit i.e. 1 minute -->
<string name="ago_string">%s Ago</string> <string name="ago_string">%s Ago</string>
<!-- TaskList --> <!-- TaskList -->
<skip /> <skip />
<!-- title bar --> <!-- title bar -->
@ -123,9 +123,9 @@
<string name="taskList_hiddenSuffix"> hidden</string> <string name="taskList_hiddenSuffix"> hidden</string>
<string name="addtask_label">New Task</string> <string name="addtask_label">New Task</string>
<string name="missing_tag">Could Not Find Requested Tag!</string> <string name="missing_tag">Could Not Find Requested Tag!</string>
<!-- text displayed in task list item --> <!-- text displayed in task list item -->
<!-- prefix to show that a task is hidden --> <!-- prefix to show that a task is hidden -->
<string name="taskList_hiddenPrefix">H</string> <string name="taskList_hiddenPrefix">H</string>
<!-- i.e. Due in 4 days --> <!-- i.e. Due in 4 days -->
@ -143,7 +143,7 @@
<string name="taskList_elapsedTimePrefix">Spent:</string> <string name="taskList_elapsedTimePrefix">Spent:</string>
<!-- time interval to set frequency to remind user --> <!-- time interval to set frequency to remind user -->
<string name="taskList_periodicReminderPrefix">Poke Every</string> <string name="taskList_periodicReminderPrefix">Poke Every</string>
<!-- time interval to set repeated tasks--> <!-- time interval to set repeated tasks-->
<string name="taskList_repeatPrefix">Repeats Every</string> <string name="taskList_repeatPrefix">Repeats Every</string>
<!-- displayed when repeat is on remote server--> <!-- displayed when repeat is on remote server-->
@ -151,15 +151,15 @@
<string name="taskList_alarmPrefix">Next Alarm:</string> <string name="taskList_alarmPrefix">Next Alarm:</string>
<string name="taskList_tagsPrefix">Tags:</string> <string name="taskList_tagsPrefix">Tags:</string>
<string name="taskList_notesPrefix">Notes:</string> <string name="taskList_notesPrefix">Notes:</string>
<!-- i.e. Created: <create date> --> <!-- i.e. Created: <create date> -->
<string name="taskList_createdPrefix">Created:</string> <string name="taskList_createdPrefix">Created:</string>
<!-- i.e. Deleted: <delete date> --> <!-- i.e. Deleted: <delete date> -->
<string name="taskList_deleted">Deleted</string> <string name="taskList_deleted">Deleted</string>
<string name="quick_add_hint">Add New Task</string> <string name="quick_add_hint">Add New Task</string>
<!-- menu items --> <!-- menu items -->
<string name="taskList_menu_insert">New Task</string> <string name="taskList_menu_insert">New Task</string>
<string name="taskList_menu_tags">Tags</string> <string name="taskList_menu_tags">Tags</string>
@ -180,7 +180,7 @@
<string name="taskList_context_startTimer">Start Timer</string> <string name="taskList_context_startTimer">Start Timer</string>
<string name="taskList_context_stopTimer">Stop Timer</string> <string name="taskList_context_stopTimer">Stop Timer</string>
<string name="taskList_context_postpone">Postpone</string> <string name="taskList_context_postpone">Postpone</string>
<!-- filter menu items --> <!-- filter menu items -->
<string name="taskList_filter_title">Sort/Filters</string> <string name="taskList_filter_title">Sort/Filters</string>
<string name="taskList_filter_hidden">Hidden/Blocked Tasks</string> <string name="taskList_filter_hidden">Hidden/Blocked Tasks</string>
@ -190,7 +190,7 @@
<string name="taskList_sort_alpha">Sort By Name</string> <string name="taskList_sort_alpha">Sort By Name</string>
<string name="taskList_sort_duedate">Sort By Due Date</string> <string name="taskList_sort_duedate">Sort By Due Date</string>
<string name="taskList_sort_reverse">Sort Reverse</string> <string name="taskList_sort_reverse">Sort Reverse</string>
<string name="taskList_nonag_reminder">Select an Action:</string> <string name="taskList_nonag_reminder">Select an Action:</string>
<string name="taskList_postpone_count">Times You\'ve Postponed: %d</string> <string name="taskList_postpone_count">Times You\'ve Postponed: %d</string>
<string name="taskList_postpone_dialog">Postpone for how long?</string> <string name="taskList_postpone_dialog">Postpone for how long?</string>
@ -202,19 +202,19 @@
<string name="taskEdit_titleGeneric">Astrid: Editing Task</string> <string name="taskEdit_titleGeneric">Astrid: Editing Task</string>
<string name="taskEdit_titlePrefix">Astrid: Editing </string> <string name="taskEdit_titlePrefix">Astrid: Editing </string>
<string name="taskEdit_label">Astrid: New Task</string> <string name="taskEdit_label">Astrid: New Task</string>
<!-- tabs --> <!-- tabs -->
<string name="taskEdit_tab_basic">Basic</string> <string name="taskEdit_tab_basic">Basic</string>
<string name="taskEdit_tab_dates">Dates</string> <string name="taskEdit_tab_dates">Dates</string>
<string name="taskEdit_tab_alerts">Alerts</string> <string name="taskEdit_tab_alerts">Alerts</string>
<!-- labels --> <!-- labels -->
<string name="name_label">Summary</string> <string name="name_label">Summary</string>
<string name="name_hint">Task Name</string> <string name="name_hint">Task Name</string>
<string name="importance_label">How Important is it?</string> <string name="importance_label">How Important is it?</string>
<string name="tags_label">Tags:</string> <string name="tags_label">Tags:</string>
<string name="tag_hint">Tag Name</string> <string name="tag_hint">Tag Name</string>
<string name="estimatedDuration_label">How Long Will it Take?</string> <string name="estimatedDuration_label">How Long Will it Take?</string>
<string name="elapsedDuration_label">Time Already Spent on Task</string> <string name="elapsedDuration_label">Time Already Spent on Task</string>
<string name="definiteDueDate_label">Absolute Deadline</string> <string name="definiteDueDate_label">Absolute Deadline</string>
@ -227,7 +227,7 @@
<string name="blockingOn_label">Hide Until This Task is Done</string> <string name="blockingOn_label">Hide Until This Task is Done</string>
<string name="notes_label">Notes</string> <string name="notes_label">Notes</string>
<string name="notes_hint">Enter Task Notes</string> <string name="notes_hint">Enter Task Notes</string>
<string name="notification_label">Periodic Reminders</string> <string name="notification_label">Periodic Reminders</string>
<string name="notification_prefix">Every</string> <string name="notification_prefix">Every</string>
<string name="flags_label">Notify me...</string> <string name="flags_label">Notify me...</string>
@ -237,7 +237,7 @@
<string name="flag_nonstop">Alarm Clock Mode</string> <string name="flag_nonstop">Alarm Clock Mode</string>
<string name="alerts_label">Fixed Reminders</string> <string name="alerts_label">Fixed Reminders</string>
<string name="add_alert">Add New Reminder</string> <string name="add_alert">Add New Reminder</string>
<!-- dialog boxes --> <!-- dialog boxes -->
<string name="hour_minutes_dialog">Time (hours : minutes)</string> <string name="hour_minutes_dialog">Time (hours : minutes)</string>
<string name="notification_dialog">Remind Me Every</string> <string name="notification_dialog">Remind Me Every</string>
@ -250,7 +250,7 @@ If you don\'t want to see the new task right after you complete the old one, you
\n \n
</string> </string>
<string name="repeat_help_hide">Don't Show Help Anymore</string> <string name="repeat_help_hide">Don't Show Help Anymore</string>
<!-- buttons --> <!-- buttons -->
<string name="save_label">Save</string> <string name="save_label">Save</string>
<string name="discard_label">Discard</string> <string name="discard_label">Discard</string>
@ -259,17 +259,17 @@ If you don\'t want to see the new task right after you complete the old one, you
<string name="blank_button_title">Click to Set</string> <string name="blank_button_title">Click to Set</string>
<string name="startTimer_label">Start Timer</string> <string name="startTimer_label">Start Timer</string>
<string name="stopTimer_label">Stop Timer</string> <string name="stopTimer_label">Stop Timer</string>
<string name="taskEdit_menu_save">Save</string> <string name="taskEdit_menu_save">Save</string>
<string name="taskEdit_onTaskSave_Due">Task Saved: due in %s</string> <string name="taskEdit_onTaskSave_Due">Task Saved: due in %s</string>
<string name="taskEdit_onTaskSave_Overdue">Task Saved: due %s ago</string> <string name="taskEdit_onTaskSave_Overdue">Task Saved: due %s ago</string>
<string name="taskEdit_onTaskSave_notDue">Task Saved</string> <string name="taskEdit_onTaskSave_notDue">Task Saved</string>
<!-- TaskView --> <!-- TaskView -->
<skip /> <skip />
<string name="taskView_notifyTitle">Astrid says...</string> <string name="taskView_notifyTitle">Astrid says...</string>
<!-- Tag List --> <!-- Tag List -->
<skip /> <skip />
<string name="tagList_titlePrefix">Astrid: Tag View: </string> <string name="tagList_titlePrefix">Astrid: Tag View: </string>
@ -282,12 +282,12 @@ If you don\'t want to see the new task right after you complete the old one, you
<string name="tagList_shortcut_created">Shortcut created on your home screen!</string> <string name="tagList_shortcut_created">Shortcut created on your home screen!</string>
<string name="tagList_shortcut_prefix">Tag:</string> <string name="tagList_shortcut_prefix">Tag:</string>
<string name="tagList_untagged">[untagged]</string> <string name="tagList_untagged">[untagged]</string>
<string name="tagList_menu_sortAlpha">Sort A-Z</string> <string name="tagList_menu_sortAlpha">Sort A-Z</string>
<string name="tagList_menu_sortSize">Sort by Size</string> <string name="tagList_menu_sortSize">Sort by Size</string>
<!-- Synchronization --> <!-- Synchronization -->
<skip /> <skip />
<string name="sync_pref_group">Synchronization Services</string> <string name="sync_pref_group">Synchronization Services</string>
<string name="sync_pref_group_actions">Actions</string> <string name="sync_pref_group_actions">Actions</string>
@ -305,7 +305,7 @@ If you don\'t want to see the new task right after you complete the old one, you
<string name="sync_bgwifi_desc">If set, auto-sync only happens when Wifi is active</string> <string name="sync_bgwifi_desc">If set, auto-sync only happens when Wifi is active</string>
<string name="sync_error">Sync Error! Sorry for the inconvenience! Error:</string> <string name="sync_error">Sync Error! Sorry for the inconvenience! Error:</string>
<string name="sync_upgrade_v99"> <string name="sync_upgrade_v99">
Astrid 2.7 now performs synchronization with RTM in the background. You will Astrid 2.7 now performs synchronization with RTM in the background. You will
be directed to the preferences page to configure how often you want this to be directed to the preferences page to configure how often you want this to
occur (it is a minor drain on battery). occur (it is a minor drain on battery).
</string> </string>
@ -324,23 +324,23 @@ occur (it is a minor drain on battery).
<string name="sync_result_updated">Updated: %d</string> <string name="sync_result_updated">Updated: %d</string>
<string name="sync_result_deleted">Deleted: %d</string> <string name="sync_result_deleted">Deleted: %d</string>
<string name="sync_result_merged">Merged: %d</string> <string name="sync_result_merged">Merged: %d</string>
<string name="sync_progress_remote">Reading Remote Data</string> <string name="sync_progress_remote">Reading Remote Data</string>
<string name="sync_progress_rxlist">Reading List: %s</string> <string name="sync_progress_rxlist">Reading List: %s</string>
<string name="sync_progress_repeating">Synchronizing Repeating Task</string> <string name="sync_progress_repeating">Synchronizing Repeating Task</string>
<string name="sync_progress_localtx">Transmitting: %s</string> <string name="sync_progress_localtx">Transmitting: %s</string>
<string name="sync_progress_localdel">Locally Deleted Tasks</string> <string name="sync_progress_localdel">Locally Deleted Tasks</string>
<string name="sync_progress_remotetx">Receiving: %s</string> <string name="sync_progress_remotetx">Receiving: %s</string>
<string name="rtm_login_label">Please Log In to RTM...</string> <string name="rtm_login_label">Please Log In to RTM...</string>
<string name="rtm_login_error"> <string name="rtm_login_error">
Sorry, there was an error verifying your login. Please try again. Sorry, there was an error verifying your login. Please try again.
\n\n \n\n
Error Message: Error Message:
</string> </string>
<!-- Dialog Boxes --> <!-- Dialog Boxes -->
<skip /> <skip />
<string name="loading">Loading...</string> <string name="loading">Loading...</string>
<string name="updating">Updating List...</string> <string name="updating">Updating List...</string>
@ -352,13 +352,13 @@ Error Message:
<string name="notify_snooze">Snooze...</string> <string name="notify_snooze">Snooze...</string>
<string name="notify_no">Go Away!</string> <string name="notify_no">Go Away!</string>
<string name="notify_snooze_title">Hours/minutes to snooze?</string> <string name="notify_snooze_title">Hours/minutes to snooze?</string>
<string name="delete_title">Delete</string> <string name="delete_title">Delete</string>
<string name="delete_this_task_title">Delete this task?</string> <string name="delete_this_task_title">Delete this task?</string>
<string name="delete_this_tag_title">Remove this tag from all tasks?</string> <string name="delete_this_tag_title">Remove this tag from all tasks?</string>
<string name="stop_timer_title">Stop the timer?</string> <string name="stop_timer_title">Stop the timer?</string>
<string name="quick_tips"> <string name="quick_tips">
Some things you may not know about Astrid:\n Some things you may not know about Astrid:\n
\n \n
@ -369,10 +369,10 @@ Some things you may not know about Astrid:\n
\n \n
Thanks for using Astrid!\n Thanks for using Astrid!\n
</string> </string>
<!-- %s => name of the application --> <!-- %s => name of the application -->
<string name="task_killer_help"> <string name="task_killer_help">
It looks like you are using an app that can kill processes (%s)! If you can, It looks like you are using an app that can kill processes (%s)! If you can,
add Astrid to the exclusion list so it doesn\'t get killed. Otherwise, add Astrid to the exclusion list so it doesn\'t get killed. Otherwise,
Astrid might not let you know when your tasks are due.\n Astrid might not let you know when your tasks are due.\n
</string> </string>
@ -397,64 +397,64 @@ Skipped %d tasks.\n
<string name="import_file_prompt">Select a File to Restore</string> <string name="import_file_prompt">Select a File to Restore</string>
<!-- Locale Plugin --> <!-- Locale Plugin -->
<skip /> <skip />
<string name="locale_edit_alerts_title">Astrid Tag Alert</string> <string name="locale_edit_alerts_title">Astrid Tag Alert</string>
<string name="locale_edit_intro">Astrid will send you a reminder <string name="locale_edit_intro">Astrid will send you a reminder
when you have uncompleted tasks with the following criteria:</string> when you have uncompleted tasks with the following criteria:</string>
<string name="locale_pick_tag">Tagged with:</string> <string name="locale_pick_tag">Tagged with:</string>
<!-- Notification --> <!-- Notification -->
<skip /> <skip />
<string name="notif_definiteDueDate">Absolute Deadline!</string> <string name="notif_definiteDueDate">Absolute Deadline!</string>
<string name="notif_preferredDueDate">Goal Deadline!</string> <string name="notif_preferredDueDate">Goal Deadline!</string>
<string name="notif_timerStarted">Working on:</string> <string name="notif_timerStarted">Working on:</string>
<!-- $NUM is replaced with # of tasks + units, i.e. "1 task", $TAG is replaced with tag name --> <!-- $NUM is replaced with # of tasks + units, i.e. "1 task", $TAG is replaced with tag name -->
<string name="notif_tagNotification">You have $NUM tagged $TAG!</string> <string name="notif_tagNotification">You have $NUM tagged $TAG!</string>
<!-- Error Messages --> <!-- Error Messages -->
<skip /> <skip />
<string name="error_opening">Could not find this item: </string> <string name="error_opening">Could not find this item: </string>
<string name="error_saving">Could not save:s</string> <string name="error_saving">Could not save:s</string>
<string name="error_sdcard">Cannot access folder: %s</string> <string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string> <string name="error_sdcard_general">Cannot access your SD card!</string>
<skip /> <skip />
<string name="prefs_category_alerts">Notifications</string> <string name="prefs_category_alerts">Notifications</string>
<string name="prefs_quietStart_title">Quiet Hours Start</string> <string name="prefs_quietStart_title">Quiet Hours Start</string>
<string name="prefs_quietStart_desc">Start time to silence notifications for periodic reminders</string> <string name="prefs_quietStart_desc">Start time to silence notifications for periodic reminders</string>
<string name="prefs_quietEnd_title">Quiet Hours End</string> <string name="prefs_quietEnd_title">Quiet Hours End</string>
<string name="prefs_quietEnd_desc">End time to silence notifications</string> <string name="prefs_quietEnd_desc">End time to silence notifications</string>
<string name="prefs_defaultRemind_title">Default Reminders</string> <string name="prefs_defaultRemind_title">Default Reminders</string>
<string name="prefs_defaultRemind_desc">For new tasks, default reminder in days (i.e. 7). Blank to disable</string> <string name="prefs_defaultRemind_desc">For new tasks, default reminder in days (i.e. 7). Blank to disable</string>
<string name="prefs_annoy_title">Persistent Mode</string> <string name="prefs_annoy_title">Persistent Mode</string>
<string name="prefs_annoy_desc">If checked, LED and notifications must be cleared one at a time</string> <string name="prefs_annoy_desc">If checked, LED and notifications must be cleared one at a time</string>
<string name="prefs_notification_title">Notification Ringtone</string> <string name="prefs_notification_title">Notification Ringtone</string>
<string name="prefs_notification_desc">Choose a ringtone for Astrid\'s alerts</string> <string name="prefs_notification_desc">Choose a ringtone for Astrid\'s alerts</string>
<string name="prefs_notificon_title">Notification Icons</string> <string name="prefs_notificon_title">Notification Icons</string>
<string name="prefs_notificon_desc">Choose Astrid\'s notification bar icon</string> <string name="prefs_notificon_desc">Choose Astrid\'s notification bar icon</string>
<string name="prefs_vibrate_title">Vibrate on Alert</string> <string name="prefs_vibrate_title">Vibrate on Alert</string>
<string name="prefs_vibrate_desc">If checked, Astrid will vibrate when sounding an alarm</string> <string name="prefs_vibrate_desc">If checked, Astrid will vibrate when sounding an alarm</string>
<string name="prefs_category_appearance">Appearance</string> <string name="prefs_category_appearance">Appearance</string>
<string name="prefs_colorize_title">Colorize Task List</string> <string name="prefs_colorize_title">Colorize Task List</string>
<string name="prefs_colorize_desc">Different colors for different priorities</string> <string name="prefs_colorize_desc">Different colors for different priorities</string>
<string name="prefs_fontSize_title">Task List Size</string> <string name="prefs_fontSize_title">Task List Size</string>
<string name="prefs_fontSize_desc">Font size on the main listing page</string> <string name="prefs_fontSize_desc">Font size on the main listing page</string>
<string name="prefs_category_other">Other</string> <string name="prefs_category_other">Other</string>
<string name="prefs_nagging_title">Nag Messages</string> <string name="prefs_nagging_title">Nag Messages</string>
<string name="prefs_nagging_desc">Show Astrid\'s comments when viewing reminders and postponing tasks?</string> <string name="prefs_nagging_desc">Show Astrid\'s comments when viewing reminders and postponing tasks?</string>
@ -462,22 +462,27 @@ Skipped %d tasks.\n
<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="prefs_backup_title">Automatic Backups</string> <string name="prefs_backup_title">Automatic Backups</string>
<!-- backup summary when there is no backup message --> <!-- backup summary when there is no backup message -->
<string name="prefs_backup_desc">Perform daily backups to sdcard.</string> <string name="prefs_backup_desc">Perform daily backups to sdcard.</string>
<!-- backup failure message (%s -> error message) --> <!-- backup failure message (%s -> error message) -->
<string name="prefs_backup_desc_failure">Last backup failed: %s</string> <string name="prefs_backup_desc_failure">Last backup failed: %s</string>
<!-- backup failure error when error message is null --> <!-- backup failure error when error message is null -->
<string name="prefs_backup_desc_failure_null">Last backup failed, could not read SD card</string> <string name="prefs_backup_desc_failure_null">Last backup failed, could not read SD card</string>
<!-- backup success message (%s -> date) --> <!-- backup success message (%s -> date) -->
<string name="prefs_backup_desc_success">Latest backup was on %s</string> <string name="prefs_backup_desc_success">Latest backup was on %s</string>
<string name="prefs_defaultCalendar_title">Calendar</string>
<string name="prefs_defaultCalendar_desc">Calendar to store the events.</string>
<string name="prefs_defaultCalendar_astrid_default">Astrid default</string>
<string name="displayedFields_PrefScreen_Title">Displayed Fields</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="displayedFields_PrefScreen_Desc">Select the fields to show in task list</string>
<string name="prefs_titleVisible_title">Task Title</string> <string name="prefs_titleVisible_title">Task Title</string>
<string name="prefs_titleVisible_desc">Task description</string> <string name="prefs_titleVisible_desc">Task description</string>
<string name="prefs_deadlineVisible_title">Dates</string> <string name="prefs_deadlineVisible_title">Dates</string>
@ -501,14 +506,14 @@ Skipped %d tasks.\n
<string name="marketplace_description"> <string name="marketplace_description">
Astrid is the highly-acclaimed open-source task list that is simple enough to not get in your way, powerful enough to help you get stuff done! Tags, reminders, RememberTheMilk sync, Locale plug-in &amp; more! Astrid is the highly-acclaimed open-source task list that is simple enough to not get in your way, powerful enough to help you get stuff done! Tags, reminders, RememberTheMilk sync, Locale plug-in &amp; more!
</string> </string>
<!-- Automatically filled in by Launchpad: --> <!-- Automatically filled in by Launchpad: -->
<string name="about_translators">translator-credits</string> <string name="about_translators">translator-credits</string>
<!-- Widget text when loading tasks --> <!-- Widget text when loading tasks -->
<string name="widget_loading">Loading...</string> <string name="widget_loading">Loading...</string>
<!-- Permissions --> <!-- Permissions -->
<string name="read_tasks_permission">Read Astrid tasks</string> <string name="read_tasks_permission">Read Astrid tasks</string>
</resources> </resources>

@ -1,117 +1,121 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen <PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory <PreferenceCategory
android:title="@string/prefs_category_alerts"> android:title="@string/prefs_category_alerts">
<ListPreference <ListPreference
android:key="@string/p_notif_quietStart" android:key="@string/p_notif_quietStart"
android:entries="@array/EPr_quiet_hours_start" android:entries="@array/EPr_quiet_hours_start"
android:entryValues="@array/EPr_quiet_hours_start_values" android:entryValues="@array/EPr_quiet_hours_start_values"
android:title="@string/prefs_quietStart_title" android:title="@string/prefs_quietStart_title"
android:summary="@string/prefs_quietStart_desc" /> android:summary="@string/prefs_quietStart_desc" />
<ListPreference <ListPreference
android:key="@string/p_notif_quietEnd" android:key="@string/p_notif_quietEnd"
android:entries="@array/EPr_quiet_hours_end" android:entries="@array/EPr_quiet_hours_end"
android:entryValues="@array/EPr_quiet_hours_end_values" android:entryValues="@array/EPr_quiet_hours_end_values"
android:title="@string/prefs_quietEnd_title" android:title="@string/prefs_quietEnd_title"
android:summary="@string/prefs_quietEnd_desc" /> android:summary="@string/prefs_quietEnd_desc" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/p_notif_annoy" android:key="@string/p_notif_annoy"
android:title="@string/prefs_annoy_title" android:title="@string/prefs_annoy_title"
android:summary="@string/prefs_annoy_desc" /> android:summary="@string/prefs_annoy_desc" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/p_notif_vibrate" android:key="@string/p_notif_vibrate"
android:title="@string/prefs_vibrate_title" android:title="@string/prefs_vibrate_title"
android:summary="@string/prefs_vibrate_desc" /> android:summary="@string/prefs_vibrate_desc" />
<EditTextPreference <EditTextPreference
android:key="@string/p_notif_defaultRemind" android:key="@string/p_notif_defaultRemind"
android:title="@string/prefs_defaultRemind_title" android:title="@string/prefs_defaultRemind_title"
android:summary="@string/prefs_defaultRemind_desc" /> android:summary="@string/prefs_defaultRemind_desc" />
<RingtonePreference <RingtonePreference
android:key="@string/p_notification_ringtone" android:key="@string/p_notification_ringtone"
android:title="@string/prefs_notification_title" android:title="@string/prefs_notification_title"
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" />
<ListPreference <ListPreference
android:key="@string/p_notif_icon" android:key="@string/p_notif_icon"
android:entries="@array/notif_icon_entries" android:entries="@array/notif_icon_entries"
android:entryValues="@array/notif_icon_values" android:entryValues="@array/notif_icon_values"
android:title="@string/prefs_notificon_title" android:title="@string/prefs_notificon_title"
android:summary="@string/prefs_notificon_desc" /> android:summary="@string/prefs_notificon_desc" />
</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" />
<ListPreference <ListPreference
android:key="@string/p_fontSize" android:key="@string/p_fontSize"
android:entries="@array/EPr_font_size" android:entries="@array/EPr_font_size"
android:entryValues="@array/EPr_font_size" android:entryValues="@array/EPr_font_size"
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 <PreferenceScreen
android:title="@string/displayedFields_PrefScreen_Title" android:title="@string/displayedFields_PrefScreen_Title"
android:summary="@string/displayedFields_PrefScreen_Desc"> android:summary="@string/displayedFields_PrefScreen_Desc">
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_deadlineVisible" android:key="@string/prefs_deadlineVisible"
android:title="@string/prefs_deadlineVisible_title" android:title="@string/prefs_deadlineVisible_title"
android:summary="@string/prefs_deadlineVisible_desc" android:summary="@string/prefs_deadlineVisible_desc"
android:defaultValue="@string/prefs_deadlineVisible_default" /> android:defaultValue="@string/prefs_deadlineVisible_default" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_tagsVisible" android:key="@string/prefs_tagsVisible"
android:title="@string/prefs_tagsVisible_title" android:title="@string/prefs_tagsVisible_title"
android:summary="@string/prefs_tagsVisible_desc" android:summary="@string/prefs_tagsVisible_desc"
android:defaultValue="@string/prefs_tagsVisible_default" /> android:defaultValue="@string/prefs_tagsVisible_default" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_importanceVisible" android:key="@string/prefs_importanceVisible"
android:title="@string/prefs_importanceVisible_title" android:title="@string/prefs_importanceVisible_title"
android:summary="@string/prefs_importanceVisible_desc" android:summary="@string/prefs_importanceVisible_desc"
android:defaultValue="@string/prefs_importanceVisible_default" /> android:defaultValue="@string/prefs_importanceVisible_default" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_timeVisible" android:key="@string/prefs_timeVisible"
android:title="@string/prefs_timeVisible_title" android:title="@string/prefs_timeVisible_title"
android:summary="@string/prefs_timeVisible_desc" android:summary="@string/prefs_timeVisible_desc"
android:defaultValue="@string/prefs_timeVisible_default" /> android:defaultValue="@string/prefs_timeVisible_default" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_reminderVisible" android:key="@string/prefs_reminderVisible"
android:title="@string/prefs_reminderVisible_title" android:title="@string/prefs_reminderVisible_title"
android:summary="@string/prefs_reminderVisible_desc" android:summary="@string/prefs_reminderVisible_desc"
android:defaultValue="@string/prefs_reminderVisible_default" /> android:defaultValue="@string/prefs_reminderVisible_default" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_repeatVisible" android:key="@string/prefs_repeatVisible"
android:title="@string/prefs_repeatVisible_title" android:title="@string/prefs_repeatVisible_title"
android:summary="@string/prefs_repeatVisible_desc" android:summary="@string/prefs_repeatVisible_desc"
android:defaultValue="@string/prefs_repeatVisible_default" /> android:defaultValue="@string/prefs_repeatVisible_default" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/prefs_notesVisible" android:key="@string/prefs_notesVisible"
android:title="@string/prefs_notesVisible_title" android:title="@string/prefs_notesVisible_title"
android:summary="@string/prefs_notesVisible_desc" android:summary="@string/prefs_notesVisible_desc"
android:defaultValue="@string/prefs_notesVisible_default" /> android:defaultValue="@string/prefs_notesVisible_default" />
</PreferenceScreen> </PreferenceScreen>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory
android:title="@string/prefs_category_other"> android:title="@string/prefs_category_other">
<CheckBoxPreference <CheckBoxPreference
android:key="@string/p_nagging" android:key="@string/p_nagging"
android:title="@string/prefs_nagging_title" android:title="@string/prefs_nagging_title"
android:summary="@string/prefs_nagging_desc" android:summary="@string/prefs_nagging_desc"
android:defaultValue="true" /> android:defaultValue="true" />
<EditTextPreference <EditTextPreference
android:key="@string/p_deadlineTime" android:key="@string/p_deadlineTime"
android:title="@string/prefs_deadlineTime_title" android:title="@string/prefs_deadlineTime_title"
android:summary="@string/prefs_deadlineTime_desc" /> android:summary="@string/prefs_deadlineTime_desc" />
<CheckBoxPreference <CheckBoxPreference
android:key="@string/p_backup" android:key="@string/p_backup"
android:title="@string/prefs_backup_title" android:title="@string/prefs_backup_title"
android:summary="@string/prefs_backup_desc" android:summary="@string/prefs_backup_desc"
android:defaultValue="true" /> android:defaultValue="true" />
<ListPreference
android:key="@string/prefs_defaultCalendar"
android:title="@string/prefs_defaultCalendar_title"
android:summary="@string/prefs_defaultCalendar_desc" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

@ -20,11 +20,13 @@
package com.timsu.astrid.activities; package com.timsu.astrid.activities;
import android.os.Bundle; import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.timsu.astrid.utilities.Calendars;
import com.timsu.astrid.utilities.Constants; import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.Preferences; import com.timsu.astrid.utilities.Preferences;
@ -45,6 +47,9 @@ public class EditPreferences extends PreferenceActivity {
String backupSummary = Preferences.getBackupSummary(this); String backupSummary = Preferences.getBackupSummary(this);
if(backupSummary != null && backupPreference != null) if(backupSummary != null && backupPreference != null)
backupPreference.setSummary(backupSummary); backupPreference.setSummary(backupSummary);
ListPreference defaultCalendarPreference = (ListPreference) findPreference(getString(R.string.prefs_defaultCalendar));
Calendars.initCalendarsPreference(this, defaultCalendarPreference);
} }
@Override @Override

@ -766,12 +766,13 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
protected void onPause() { protected void onPause() {
// create calendar event // create calendar event
if(addToCalendar.isChecked() && model.getCalendarUri() == null) { if(addToCalendar.isChecked() && model.getCalendarUri() == null) {
Uri uri = Uri.parse("content://calendar/events"); Uri uri = Uri.parse("content://calendar/events");
ContentResolver cr = getContentResolver(); ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put("title", name.getText().toString()); values.put("title", name.getText().toString());
values.put("calendar_id", 1); values.put("calendar_id", Preferences.getDefaultCalendarIDSafe(this));
values.put("description", notes.getText().toString()); values.put("description", notes.getText().toString());
values.put("hasAlarm", 0); values.put("hasAlarm", 0);
values.put("transparency", 0); values.put("transparency", 0);
@ -781,11 +782,13 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
model.getDefiniteDueDate(), model.getEstimatedSeconds(), model.getDefiniteDueDate(), model.getEstimatedSeconds(),
values); values);
Uri result = cr.insert(uri, values); Uri result = null;
if(result != null) try{
model.setCalendarUri(result.toString()); result = cr.insert(uri, values);
else model.setCalendarUri(result.toString());
Log.e("astrid", "Error creating calendar event!"); } catch (IllegalArgumentException e) {
Log.e("astrid", "Error creating calendar event!", e);
}
} }
if(shouldSaveState) if(shouldSaveState)

@ -0,0 +1,179 @@
package com.timsu.astrid.utilities;
import android.content.ContentResolver;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
import android.preference.ListPreference;
import android.preference.PreferenceManager;
import android.util.Log;
import com.timsu.astrid.R;
public class Calendars {
// Private SDK
private static final Uri CALENDAR_CONTENT_URI = Uri
.parse("content://calendar/calendars"); // Calendars.CONTENT_URI
private static final String ID_COLUMN_NAME = "_id";
private static final String DISPLAY_COLUMN_NAME = "displayName";
private static final String ACCES_LEVEL_COLUMN_NAME = "access_level";
private static final String[] CALENDARS_PROJECTION = new String[] {
ID_COLUMN_NAME, // Calendars._ID,
DISPLAY_COLUMN_NAME // Calendars.DISPLAY_NAME
};
// Only show calendars that the user can modify. Access level 500
// corresponds to Calendars.CONTRIBUTOR_ACCESS
private static final String CALENDARS_WHERE = ACCES_LEVEL_COLUMN_NAME + " >= 500";
private static final String CALENDARS_WHERE_ID = ACCES_LEVEL_COLUMN_NAME+" >= 500 AND" + ID_COLUMN_NAME +"=?";
private static final String CALENDARS_SORT = "displayName ASC";
/**
* Ensures that the default calendar preference is pointing to
* user-modifiable calendar that exists. If the calendar does not exist
* anymore, the preference is reset to default value.
*
* @param context
* Context
*/
public static void ensureValidDefaultCalendarPreference(Context context) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
Resources r = context.getResources();
Editor editor = prefs.edit();
// We default the 'defaultCalendar' setting when it is undefined
// or when the calendar does not exist anymore
if (!prefs.contains(r.getString(R.string.prefs_defaultCalendar))
|| !Calendars.isCalendarPresent(context, prefs.getString(r
.getString(R.string.prefs_defaultCalendar), null))) {
editor.putString(r.getString(R.string.prefs_defaultCalendar), r
.getString(R.string.prefs_defaultCalendar_default));
editor.commit();
}
}
/**
* Appends all user-modifiable calendars to listPreference. Always includes
* entry called "Astrid default" with calendar id of
* prefs_defaultCalendar_default.
*
* @param context
* context
* @param listPreference
* preference to init
*/
public static void initCalendarsPreference(Context context,
ListPreference listPreference) {
ContentResolver cr = context.getContentResolver();
Resources r = context.getResources();
Cursor c = cr.query(CALENDAR_CONTENT_URI, CALENDARS_PROJECTION,
CALENDARS_WHERE, null, CALENDARS_SORT);
// Fetch the current setting. Invalid calendar id will
// be changed to default value.
String currentSetting = String.valueOf(Preferences
.getDefaultCalendarIDSafe(context));
int currentSettingIndex = -1;
if (c == null) {
// Something went wrong when querying calendars
// Let's keep the "Astrid default" only.
listPreference
.setEntries(new String[] { r
.getString(R.string.prefs_defaultCalendar_astrid_default) });
listPreference.setEntryValues(new String[] { r
.getString(R.string.prefs_defaultCalendar_default) });
listPreference.setValueIndex(0);
listPreference.setEnabled(true);
return;
}
int calendarCount = c.getCount();
String[] entries = new String[calendarCount];
String[] entryValues = new String[calendarCount];
// Iterate calendars one by one, and fill up the list preference
try {
int row = 0;
int idColumn = c.getColumnIndex(ID_COLUMN_NAME);
int nameColumn = c.getColumnIndex(DISPLAY_COLUMN_NAME);
while (c.moveToNext()) {
String id = c.getString(idColumn);
String name = c.getString(nameColumn);
entries[row] = name;
entryValues[row] = id;
// We found currently selected calendar
if (currentSetting.equals(id)) {
currentSettingIndex = row;
}
row++;
}
if (currentSettingIndex == -1) {
// Should not happen!
// Let's keep the "Astrid default" only.
Log.d("astrid", "initCalendarsPreference: Unknown calendar.");
listPreference
.setEntries(new String[] { r
.getString(R.string.prefs_defaultCalendar_astrid_default) });
listPreference.setEntryValues(new String[] { r
.getString(R.string.prefs_defaultCalendar_default) });
listPreference.setValueIndex(0);
listPreference.setEnabled(true);
}
listPreference.setEntries(entries);
listPreference.setEntryValues(entryValues);
listPreference.setValueIndex(currentSettingIndex);
listPreference.setEnabled(true);
} finally {
c.deactivate();
}
}
/**
* Checks whether user-modifiable calendar is present with a given id.
*
* @param context
* Context
* @param id
* Calendar ID to search for
* @return true, if user-modifiable calendar with the given id exists; false
* otherwise.
*/
private static boolean isCalendarPresent(Context context, String id) {
if (id == null)
return false;
ContentResolver cr = context.getContentResolver();
Cursor c = null;
try {
c = cr.query(CALENDAR_CONTENT_URI, CALENDARS_PROJECTION,
CALENDARS_WHERE_ID, new String[] { id }, CALENDARS_SORT);
} finally {
if (c != null) {
c.deactivate();
}
}
return (c != null) && (c.getCount() != 0);
}
}

@ -68,6 +68,8 @@ public class Preferences {
editor.putString(P_BACKUP_ERROR, null); editor.putString(P_BACKUP_ERROR, null);
} }
Calendars.ensureValidDefaultCalendarPreference(context);
setVisibilityPreferences(prefs, editor, r); setVisibilityPreferences(prefs, editor, r);
editor.commit(); editor.commit();
@ -110,7 +112,7 @@ public class Preferences {
// --- system preferences // --- system preferences
/** CurrentVersion: the currently installed version of Astrid */ /** 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);
} }
@ -444,6 +446,28 @@ public class Preferences {
editor.commit(); editor.commit();
} }
/** Get default calendar id. */
public static String getDefaultCalendarID(Context context) {
Resources r = context.getResources();
return getPrefs(context).getString(
r.getString(R.string.prefs_defaultCalendar),
r.getString(R.string.prefs_defaultCalendar_default));
}
/** Get default calendar id. Returns default value if the calendar does not exist anymore.*/
public static String getDefaultCalendarIDSafe(Context context) {
Calendars.ensureValidDefaultCalendarPreference(context);
return getDefaultCalendarID(context);
}
/** Set default calendar id */
public static void setDefaultCalendarID(Context context, String value) {
Resources r = context.getResources();
Editor editor = getPrefs(context).edit();
editor.putString(r.getString(R.string.prefs_defaultCalendar), value);
editor.commit();
}
// --- helper methods // --- helper methods
/** Clear the given preference */ /** Clear the given preference */

Loading…
Cancel
Save