Merge remote branch 'upstream/master' into dev

pull/14/head
Arne Jans 16 years ago
commit e33dd8a54d

@ -16,7 +16,7 @@ Getting Started With Development
*[Eclipse](http://eclipse.org)* (preferred: Eclipse IDE for Java Developers)
• *[Android SDK](http://developer.android.com/sdk/index.html)*
3. Use **git** to clone your forked repository (see Github's instructions if you need help).
3. Use **git** to clone your forked repository (see Github's instructions if you need help). Follow the [Github Line Ending Help](http://help.github.com/dealing-with-lineendings/)
4. Open up **eclipse** and import the *astrid* and *astrid-tests* projects.

@ -27,4 +27,11 @@ public class Order {
public String toString() {
return expression + SPACE + orderType;
}
public Order reverse() {
if(orderType == OrderType.ASC)
return new Order(expression, OrderType.DESC);
else
return new Order(expression, OrderType.ASC);
}
}

@ -70,7 +70,8 @@ public class LocaleReceiver extends BroadcastReceiver {
DependencyInjectionService.getInstance().inject(this);
Filter filter = new Filter(title, title, null, null);
filter.sqlQuery = sql;
TodorooCursor<Task> cursor = PluginServices.getTaskService().fetchFiltered(filter, null, Task.ID);
TodorooCursor<Task> cursor = PluginServices.getTaskService().fetchFiltered(
sql, null, Task.ID);
try {
if(cursor.getCount() == 0)
return;

@ -62,7 +62,9 @@ public class ProducteevDetailExposer extends BroadcastReceiver implements Detail
if(!extended) {
long dashboardId = metadata.getValue(ProducteevTask.DASHBOARD_ID);
long responsibleId = metadata.getValue(ProducteevTask.RESPONSIBLE_ID);
long responsibleId = -1;
if(metadata.containsNonNullValue(ProducteevTask.RESPONSIBLE_ID))
responsibleId = metadata.getValue(ProducteevTask.RESPONSIBLE_ID);
// display dashboard if not "no sync" or "default"
StoreObject ownerDashboard = null;

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- See the file "LICENSE" for the full license governing this code. -->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- hidden task status -->
<CheckBox android:id="@+id/hidden"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_hidden" />
<CheckBox android:id="@+id/completed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_completed" />
<CheckBox android:id="@+id/deleted"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_deleted" />
<!-- Sorting -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:gravity="center"
android:textSize="20sp"
android:textColor="#ffffff"
android:text="@string/SSD_sort_header"
android:background="@drawable/edit_titlebar"/>
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/sort_smart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_auto" />
<RadioButton android:id="@+id/sort_due"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_due" />
<RadioButton android:id="@+id/sort_importance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_importance" />
<RadioButton android:id="@+id/sort_alpha"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_alpha" />
<RadioButton android:id="@+id/sort_modified"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_modified" />
</RadioGroup>
<CheckBox android:id="@+id/reverse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SSD_sort_reverse" />
</LinearLayout>
</ScrollView>

@ -624,25 +624,25 @@ to the plugin creator for fastest service.
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Tasques Completades</string>
<string name="SSD_completed">Tasques Completades</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -617,25 +617,25 @@ to the plugin creator for fastest service.
<string name="BFE_Extended">Více...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Nedávno upravené</string>
<string name="SSD_sort_modified">Nedávno upravené</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Dokončené úkoly</string>
<string name="SSD_completed">Dokončené úkoly</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Skryté úkoly</string>
<string name="SSD_hidden">Skryté úkoly</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Podle názvu</string>
<string name="SSD_sort_alpha">Podle názvu</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">Podle data ukončení</string>
<string name="SSD_sort_due">Podle data ukončení</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">Podle důležitosti</string>
<string name="SSD_sort_importance">Podle důležitosti</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Smazané úkoly</string>
<string name="SSD_deleted">Smazané úkoly</string>

@ -617,25 +617,25 @@ to the plugin creator for fastest service.
<string name="BFE_Extended">Mehr...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Kürzlich bearbeitet</string>
<string name="SSD_sort_modified">Kürzlich bearbeitet</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Erledigte Aufgaben</string>
<string name="SSD_completed">Erledigte Aufgaben</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Versteckte Aufgaben</string>
<string name="SSD_hidden">Versteckte Aufgaben</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Nach Titel</string>
<string name="SSD_sort_alpha">Nach Titel</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">Nach Fälligkeit</string>
<string name="SSD_sort_due">Nach Fälligkeit</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">Nach Wichtigkeit</string>
<string name="SSD_sort_importance">Nach Wichtigkeit</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Gelöschte Aufgaben</string>
<string name="SSD_deleted">Gelöschte Aufgaben</string>

@ -618,25 +618,25 @@ Si puede añada Astrid a la lista de exclusión de modo que no sea matada. De ot
<string name="BFE_Extended">Más…</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recientemente modificado</string>
<string name="SSD_sort_modified">Recientemente modificado</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Tareas Finalizadas</string>
<string name="SSD_completed">Tareas Finalizadas</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Tareas ocultas</string>
<string name="SSD_hidden">Tareas ocultas</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Por título</string>
<string name="SSD_sort_alpha">Por título</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">Por fecha de vencimiento</string>
<string name="SSD_sort_due">Por fecha de vencimiento</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">Por importancia</string>
<string name="SSD_sort_importance">Por importancia</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Tareas eliminadas</string>
<string name="SSD_deleted">Tareas eliminadas</string>

@ -617,25 +617,25 @@ to the plugin creator for fastest service.
<string name="BFE_Extended">Plus...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Récemment modifié</string>
<string name="SSD_sort_modified">Récemment modifié</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Tâches complétées</string>
<string name="SSD_completed">Tâches complétées</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Tâches masquées</string>
<string name="SSD_hidden">Tâches masquées</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Par Titre</string>
<string name="SSD_sort_alpha">Par Titre</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">Par date d\'échéance</string>
<string name="SSD_sort_due">Par date d\'échéance</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">Par priorité</string>
<string name="SSD_sort_importance">Par priorité</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Tâches supprimées</string>
<string name="SSD_deleted">Tâches supprimées</string>

@ -631,25 +631,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Tugas Selesai</string>
<string name="SSD_completed">Tugas Selesai</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -620,25 +620,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">Altri...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Modificato di recente</string>
<string name="SSD_sort_modified">Modificato di recente</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Attività Completate</string>
<string name="SSD_completed">Attività Completate</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Attività Nascoste</string>
<string name="SSD_hidden">Attività Nascoste</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Per Titotlo</string>
<string name="SSD_sort_alpha">Per Titotlo</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">Per scadenza</string>
<string name="SSD_sort_due">Per scadenza</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">Per Importanza</string>
<string name="SSD_sort_importance">Per Importanza</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Attività Eliminate</string>
<string name="SSD_deleted">Attività Eliminate</string>

@ -622,25 +622,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">その他のフィルタ</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">最近編集したタスク</string>
<string name="SSD_sort_modified">最近編集したタスク</string>
<!-- Completed Filter -->
<string name="BFE_Completed">完了したタスク</string>
<string name="SSD_completed">完了したタスク</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">非表示のタスク</string>
<string name="SSD_hidden">非表示のタスク</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">タイトル順</string>
<string name="SSD_sort_alpha">タイトル順</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">期限順</string>
<string name="SSD_sort_due">期限順</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">重要度順</string>
<string name="SSD_sort_importance">重要度順</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">削除したタスク</string>
<string name="SSD_deleted">削除したタスク</string>

@ -628,25 +628,25 @@ Astrid might not let you know when your tasks are due.\n
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">완료된 할일</string>
<string name="SSD_completed">완료된 할일</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -617,25 +617,25 @@ to the plugin creator for fastest service.
<string name="BFE_Extended">Mer...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Nylig endret</string>
<string name="SSD_sort_modified">Nylig endret</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Fullførte oppgaver</string>
<string name="SSD_completed">Fullførte oppgaver</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Skjulte oppgaver</string>
<string name="SSD_hidden">Skjulte oppgaver</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Etter tittel</string>
<string name="SSD_sort_alpha">Etter tittel</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">Etter forfallsdato</string>
<string name="SSD_sort_due">Etter forfallsdato</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">Etter viktighet</string>
<string name="SSD_sort_importance">Etter viktighet</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Slettede oppgaver</string>
<string name="SSD_deleted">Slettede oppgaver</string>

@ -631,25 +631,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Afgeronde taken</string>
<string name="SSD_completed">Afgeronde taken</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -628,25 +628,25 @@ Astrid might not let you know when your tasks are due.\n
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Zakończone zadania</string>
<string name="SSD_completed">Zakończone zadania</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -621,25 +621,25 @@ Astrid might not let you know when your tasks are due.\n
<string name="BFE_Extended">Mais...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Tarefas Terminadas</string>
<string name="SSD_completed">Tarefas Terminadas</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">Por Título</string>
<string name="SSD_sort_alpha">Por Título</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -620,25 +620,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">Ещё...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Недавно изменённые</string>
<string name="SSD_sort_modified">Недавно изменённые</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Завершённые задачи</string>
<string name="SSD_completed">Завершённые задачи</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Скрытые задачи</string>
<string name="SSD_hidden">Скрытые задачи</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">По названию</string>
<string name="SSD_sort_alpha">По названию</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">По намеченному сроку</string>
<string name="SSD_sort_due">По намеченному сроку</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">По уровню важности</string>
<string name="SSD_sort_importance">По уровню важности</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Удалённые задачи</string>
<string name="SSD_deleted">Удалённые задачи</string>

@ -631,25 +631,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Färdiga uppgifter</string>
<string name="SSD_completed">Färdiga uppgifter</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -631,25 +631,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">Tamamlanmış Görevler</string>
<string name="SSD_completed">Tamamlanmış Görevler</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -631,25 +631,25 @@ you get stuff done. It features reminders, tags, sync, a widget and more.
<string name="BFE_Extended">More...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">Recently Modified</string>
<string name="SSD_sort_modified">Recently Modified</string>
<!-- Completed Filter -->
<string name="BFE_Completed">已完成的任务</string>
<string name="SSD_completed">已完成的任务</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">Hidden Tasks</string>
<string name="SSD_hidden">Hidden Tasks</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">By Title</string>
<string name="SSD_sort_alpha">By Title</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">By Due Date</string>
<string name="SSD_sort_due">By Due Date</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">By Importance</string>
<string name="SSD_sort_importance">By Importance</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">Deleted Tasks</string>
<string name="SSD_deleted">Deleted Tasks</string>

@ -617,25 +617,25 @@ to the plugin creator for fastest service.
<string name="BFE_Extended">更多...</string>
<!-- sort recent modification filter -->
<string name="BFE_Recent">最近修改過</string>
<string name="SSD_sort_modified">最近修改過</string>
<!-- Completed Filter -->
<string name="BFE_Completed">已完成的工作</string>
<string name="SSD_completed">已完成的工作</string>
<!-- hidden tasks filter -->
<string name="BFE_Hidden">隱藏的工作</string>
<string name="SSD_hidden">隱藏的工作</string>
<!-- sort Alphabetical filter -->
<string name="BFE_Alphabetical">依主旨</string>
<string name="SSD_sort_alpha">依主旨</string>
<!-- sort Due Date filter -->
<string name="BFE_DueDate">依到期日</string>
<string name="SSD_sort_due">依到期日</string>
<!-- sort Importance filter -->
<string name="BFE_Importance">依重要性</string>
<string name="SSD_sort_importance">依重要性</string>
<!-- deleted tasks filter -->
<string name="BFE_Deleted">刪除的工作</string>
<string name="SSD_deleted">刪除的工作</string>

@ -156,6 +156,9 @@
<!-- Menu: Add-ons -->
<string name="TLA_menu_addons">Add-ons</string>
<!-- Menu: Adjust Sort and Hidden Task Settings -->
<string name="TLA_menu_sort">Sort &amp; Hidden</string>
<!-- Menu: Settings -->
<string name="TLA_menu_settings">Settings</string>
@ -209,6 +212,47 @@ button: add task & go to the edit page.
<!-- Context Item: undelete task -->
<string name="TAd_contextUndeleteTask">Undelete Task</string>
<!-- ============================================== SortSelectionDialog == -->
<!-- Sort Selection: dialog title -->
<string name="SSD_title">Sorting and Hidden Tasks</string>
<!-- Hidden Task Selection: show completed tasks -->
<string name="SSD_completed">Show Completed Tasks</string>
<!-- Hidden Task Selection: show hidden tasks -->
<string name="SSD_hidden">Show Hidden Tasks</string>
<!-- Hidden Task Selection: show deleted tasks -->
<string name="SSD_deleted">Show Deleted Tasks</string>
<!-- Sort Selection: sort options header -->
<string name="SSD_sort_header">Sort Options</string>
<!-- Sort Selection: smart sort -->
<string name="SSD_sort_auto">Astrid Smart Sort</string>
<!-- Sort Selection: sort by alpha -->
<string name="SSD_sort_alpha">By Title</string>
<!-- Sort Selection: sort by due date -->
<string name="SSD_sort_due">By Due Date</string>
<!-- Sort Selection: sort by importance -->
<string name="SSD_sort_importance">By Importance</string>
<!-- Sort Selection: sort by modified date -->
<string name="SSD_sort_modified">By Last Modified</string>
<!-- Sort Selection: reverse -->
<string name="SSD_sort_reverse">Reverse Sort</string>
<!-- Sort Button: sort temporarily -->
<string name="SSD_save_temp">Just Once</string>
<!-- Sort Button: sort permanently -->
<string name="SSD_save_always">Always</string>
<!-- =============================================== FilterListActivity == -->
<!-- Filter List Activity Title -->

@ -0,0 +1,189 @@
package com.todoroo.astrid.activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioButton;
import com.timsu.astrid.R;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.model.Task;
import com.todoroo.astrid.service.TaskService;
/**
* Shows the sort / hidden dialog
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class SortSelectionActivity {
public static final int FLAG_REVERSE_SORT = 1 << 0;
public static final int FLAG_SHOW_COMPLETED = 1 << 1;
public static final int FLAG_SHOW_HIDDEN = 1 << 2;
public static final int FLAG_SHOW_DELETED = 1 << 3;
public static final int SORT_AUTO = 0;
public static final int SORT_ALPHA = 1;
public static final int SORT_DUE = 2;
public static final int SORT_IMPORTANCE = 3;
public static final int SORT_MODIFIED = 4;
public interface OnSortSelectedListener {
public void onSortSelected(boolean always, int flags, int sort);
}
/**
* Create the dialog
* @param activity
* @return
*/
public static AlertDialog createDialog(Activity activity,
OnSortSelectedListener listener, int flags, int sort) {
View body = activity.getLayoutInflater().inflate(R.layout.sort_selection_dialog, null);
if((flags & FLAG_REVERSE_SORT) > 0)
((CheckBox)body.findViewById(R.id.reverse)).setChecked(true);
if((flags & FLAG_SHOW_COMPLETED) > 0)
((CheckBox)body.findViewById(R.id.completed)).setChecked(true);
if((flags & FLAG_SHOW_HIDDEN) > 0)
((CheckBox)body.findViewById(R.id.hidden)).setChecked(true);
if((flags & FLAG_SHOW_DELETED) > 0)
((CheckBox)body.findViewById(R.id.deleted)).setChecked(true);
switch(sort) {
case SORT_ALPHA:
((RadioButton)body.findViewById(R.id.sort_alpha)).setChecked(true);
break;
case SORT_DUE:
((RadioButton)body.findViewById(R.id.sort_due)).setChecked(true);
break;
case SORT_IMPORTANCE:
((RadioButton)body.findViewById(R.id.sort_importance)).setChecked(true);
break;
case SORT_MODIFIED:
((RadioButton)body.findViewById(R.id.sort_modified)).setChecked(true);
break;
default:
((RadioButton)body.findViewById(R.id.sort_smart)).setChecked(true);
}
AlertDialog dialog = new AlertDialog.Builder(activity).
setTitle(R.string.SSD_title).
setIcon(android.R.drawable.ic_menu_sort_by_size).
setView(body).
setPositiveButton(R.string.SSD_save_always,
new DialogOkListener(body, listener, true)).
setNegativeButton(R.string.SSD_save_temp,
new DialogOkListener(body, listener, false)).
create();
dialog.setOwnerActivity(activity);
return dialog;
}
@SuppressWarnings("nls")
public static String adjustQueryForFlagsAndSort(String originalSql, int flags, int sort) {
// sort
if(!originalSql.toUpperCase().contains("ORDER BY")) {
Order order;
switch(sort) {
case SortSelectionActivity.SORT_ALPHA:
order = Order.asc(Functions.upper(Task.TITLE));
break;
case SortSelectionActivity.SORT_DUE:
order = Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0),
DateUtilities.now()*2, Task.DUE_DATE) + "+" + Task.IMPORTANCE);
break;
case SortSelectionActivity.SORT_IMPORTANCE:
order = Order.asc(Task.IMPORTANCE + "*" + (2*DateUtilities.now()) + //$NON-NLS-1$
"+" + Functions.caseStatement(Task.DUE_DATE.eq(0), //$NON-NLS-1$
Functions.now() + "+" + DateUtilities.ONE_WEEK, //$NON-NLS-1$
Task.DUE_DATE));
break;
case SortSelectionActivity.SORT_MODIFIED:
order = Order.desc(Task.MODIFICATION_DATE);
break;
default:
order = TaskService.defaultTaskOrder();
}
if((flags & SortSelectionActivity.FLAG_REVERSE_SORT) > 0)
order = order.reverse();
originalSql += " ORDER BY " + order;
}
// flags
if((flags & FLAG_SHOW_COMPLETED) > 0)
originalSql = originalSql.replace(Task.COMPLETION_DATE.eq(0).toString(),
Criterion.all.toString());
if((flags & FLAG_SHOW_HIDDEN) > 0)
originalSql = originalSql.replace(TaskCriteria.isVisible().toString(),
Criterion.all.toString());
if((flags & FLAG_SHOW_DELETED) > 0)
originalSql = originalSql.replace(Task.DELETION_DATE.eq(0).toString(),
Criterion.all.toString());
return originalSql;
}
// --- internal implementation
/** preference key for sort flags */
public static final String PREF_SORT_FLAGS = "sort_flags"; //$NON-NLS-1$
/** preference key for sort sort */
public static final String PREF_SORT_SORT = "sort_sort"; //$NON-NLS-1$
private SortSelectionActivity() {
// use the static method
}
private static class DialogOkListener implements OnClickListener {
private final OnSortSelectedListener listener;
private final boolean always;
private final View body;
public DialogOkListener(View body, OnSortSelectedListener listener, boolean always) {
this.body = body;
this.listener = listener;
this.always = always;
}
@Override
public void onClick(DialogInterface view, int button) {
int flags = 0;
int sort = 0;
if(((CheckBox)body.findViewById(R.id.reverse)).isChecked())
flags |= FLAG_REVERSE_SORT;
if(((CheckBox)body.findViewById(R.id.completed)).isChecked())
flags |= FLAG_SHOW_COMPLETED;
if(((CheckBox)body.findViewById(R.id.hidden)).isChecked())
flags |= FLAG_SHOW_HIDDEN;
if(((CheckBox)body.findViewById(R.id.deleted)).isChecked())
flags |= FLAG_SHOW_DELETED;
if(((RadioButton)body.findViewById(R.id.sort_alpha)).isChecked())
sort = SORT_ALPHA;
else if(((RadioButton)body.findViewById(R.id.sort_due)).isChecked())
sort = SORT_DUE;
else if(((RadioButton)body.findViewById(R.id.sort_importance)).isChecked())
sort = SORT_IMPORTANCE;
else if(((RadioButton)body.findViewById(R.id.sort_modified)).isChecked())
sort = SORT_MODIFIED;
else
sort = SORT_AUTO;
listener.onSortSelected(always, flags, sort);
}
}
}

@ -3,6 +3,7 @@ package com.todoroo.astrid.activity;
import java.util.Date;
import java.util.List;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicReference;
import android.app.AlertDialog;
import android.app.ListActivity;
@ -48,6 +49,7 @@ import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.utility.AndroidUtilities;
@ -56,6 +58,7 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Pair;
import com.todoroo.andlib.widget.GestureService;
import com.todoroo.andlib.widget.GestureService.GestureInterface;
import com.todoroo.astrid.activity.SortSelectionActivity.OnSortSelectedListener;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder;
import com.todoroo.astrid.api.AstridApiConstants;
@ -80,6 +83,8 @@ import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.utility.Preferences;
import com.todoroo.astrid.widget.TasksWidget;
/**
* Primary activity for the Bente application. Shows a list of upcoming
@ -88,29 +93,32 @@ import com.todoroo.astrid.utility.Flags;
* @author Tim Su <tim@todoroo.com>
*
*/
public class TaskListActivity extends ListActivity implements OnScrollListener, GestureInterface {
public class TaskListActivity extends ListActivity implements OnScrollListener,
GestureInterface, OnSortSelectedListener {
// --- activities
public static final int ACTIVITY_EDIT_TASK = 0;
public static final int ACTIVITY_SETTINGS = 1;
public static final int ACTIVITY_ADDONS = 2;
public static final int ACTIVITY_MENU_EXTERNAL = 3;
public static final int ACTIVITY_SORT = 2;
public static final int ACTIVITY_ADDONS = 3;
public static final int ACTIVITY_MENU_EXTERNAL = 4;
// --- menu codes
private static final int MENU_ADDONS_ID = Menu.FIRST + 1;
private static final int MENU_SETTINGS_ID = Menu.FIRST + 2;
private static final int MENU_HELP_ID = Menu.FIRST + 3;
private static final int MENU_ADDON_INTENT_ID = Menu.FIRST + 4;
private static final int MENU_SORT_ID = Menu.FIRST + 3;
private static final int MENU_HELP_ID = Menu.FIRST + 4;
private static final int MENU_ADDON_INTENT_ID = Menu.FIRST + 5;
private static final int CONTEXT_MENU_EDIT_TASK_ID = Menu.FIRST + 5;
private static final int CONTEXT_MENU_DELETE_TASK_ID = Menu.FIRST + 6;
private static final int CONTEXT_MENU_UNDELETE_TASK_ID = Menu.FIRST + 7;
private static final int CONTEXT_MENU_ADDON_INTENT_ID = Menu.FIRST + 8;
private static final int CONTEXT_MENU_EDIT_TASK_ID = Menu.FIRST + 6;
private static final int CONTEXT_MENU_DELETE_TASK_ID = Menu.FIRST + 7;
private static final int CONTEXT_MENU_UNDELETE_TASK_ID = Menu.FIRST + 8;
private static final int CONTEXT_MENU_ADDON_INTENT_ID = Menu.FIRST + 9;
/** menu code indicating the end of the context menu */
private static final int CONTEXT_MENU_DEBUG = Menu.FIRST + 9;
private static final int CONTEXT_MENU_DEBUG = Menu.FIRST + 10;
// --- constants
@ -143,6 +151,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
ImageButton quickAddButton;
EditText quickAddBox;
Filter filter;
int sortFlags;
int sortSort;
AtomicReference<String> sqlQueryTemplate = new AtomicReference<String>();
/* ======================================================================
* ======================================================= initialization
@ -213,6 +224,10 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
R.string.TLA_menu_settings);
item.setIcon(android.R.drawable.ic_menu_preferences);
item = menu.add(Menu.NONE, MENU_SORT_ID, Menu.NONE,
R.string.TLA_menu_sort);
item.setIcon(android.R.drawable.ic_menu_sort_by_size);
item = menu.add(Menu.NONE, MENU_HELP_ID, Menu.NONE,
R.string.TLA_menu_help);
item.setIcon(android.R.drawable.ic_menu_help);
@ -348,6 +363,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
} catch (VerifyError e) {
// failed check, no gestures :P
}
sortFlags = Preferences.getInt(SortSelectionActivity.PREF_SORT_FLAGS, 0);
sortSort= Preferences.getInt(SortSelectionActivity.PREF_SORT_SORT, 0);
}
public void bindServices() {
@ -509,21 +527,18 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
* Fill in the Task List with current items
* @param withCustomId force task with given custom id to be part of list
*/
@SuppressWarnings("nls")
protected void setUpTaskList() {
// use default ordering if none specified
if(!filter.sqlQuery.toUpperCase().contains("ORDER BY")) {
filter.sqlQuery += " ORDER BY " + TaskService.defaultTaskOrder();
}
sqlQueryTemplate.set(SortSelectionActivity.adjustQueryForFlagsAndSort(filter.sqlQuery,
sortFlags, sortSort));
// perform query
TodorooCursor<Task> currentCursor = taskService.fetchFiltered(
filter, null, TaskAdapter.PROPERTIES);
sqlQueryTemplate.get(), null, TaskAdapter.PROPERTIES);
startManagingCursor(currentCursor);
// set up list adapters
taskAdapter = new TaskAdapter(this, R.layout.task_adapter_row,
currentCursor, filter, false, null);
currentCursor, sqlQueryTemplate, false, null);
setListAdapter(taskAdapter);
getListView().setOnScrollListener(this);
registerForContextMenu(getListView());
@ -549,14 +564,13 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
}
// create a custom cursor
if(filter.sqlQuery == null)
filter.sqlQuery = "";
if(!filter.sqlQuery.contains("WHERE"))
filter.sqlQuery += " WHERE " + TaskCriteria.byId(withCustomId);
if(!sqlQueryTemplate.get().contains("WHERE"))
sqlQueryTemplate.set(sqlQueryTemplate.get() + " WHERE " + TaskCriteria.byId(withCustomId));
else
filter.sqlQuery = filter.sqlQuery.replace("WHERE ", "WHERE " +
TaskCriteria.byId(withCustomId) + " OR ");
currentCursor = taskService.fetchFiltered(filter, null, TaskAdapter.PROPERTIES);
sqlQueryTemplate.set(sqlQueryTemplate.get().replace("WHERE ", "WHERE " +
TaskCriteria.byId(withCustomId) + " OR "));
currentCursor = taskService.fetchFiltered(sqlQueryTemplate.get(), null, TaskAdapter.PROPERTIES);
getListView().setFilterText("");
startManagingCursor(currentCursor);
@ -717,6 +731,11 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
intent = new Intent(this, EditPreferences.class);
startActivityForResult(intent, ACTIVITY_SETTINGS);
return true;
case MENU_SORT_ID:
AlertDialog dialog = SortSelectionActivity.createDialog(this,
this, sortFlags, sortSort);
dialog.show();
return true;
case MENU_HELP_ID:
intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://weloveastrid.com/help-user-guide-astrid-v3/active-tasks/")); //$NON-NLS-1$
@ -727,8 +746,8 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
AndroidUtilities.startExternalIntent(this, intent, ACTIVITY_MENU_EXTERNAL);
return true;
// --- context menu items
// context menu items
case CONTEXT_MENU_ADDON_INTENT_ID: {
intent = item.getIntent();
AndroidUtilities.startExternalIntent(this, intent, ACTIVITY_MENU_EXTERNAL);
@ -805,4 +824,19 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
}
}
@Override
public void onSortSelected(boolean always, int flags, int sort) {
sortFlags = flags;
sortSort = sort;
if(always) {
Preferences.setInt(SortSelectionActivity.PREF_SORT_FLAGS, flags);
Preferences.setInt(SortSelectionActivity.PREF_SORT_SORT, sort);
ContextManager.getContext().startService(new Intent(ContextManager.getContext(),
TasksWidget.UpdateService.class));
}
setUpTaskList();
}
}

@ -5,6 +5,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import android.app.ListActivity;
import android.content.Context;
@ -15,12 +16,12 @@ import android.graphics.Paint;
import android.text.Html;
import android.text.util.Linkify;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.CheckBox;
@ -42,7 +43,6 @@ import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.alarms.AlarmDetailExposer;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.DetailExposer;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.TaskAction;
import com.todoroo.astrid.api.TaskDecoration;
import com.todoroo.astrid.model.Task;
@ -109,7 +109,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
private final LayoutInflater inflater;
private int fontSize;
private final Filter filter;
private final AtomicReference<String> query;
// the task that's expanded
private long expanded = -1;
@ -136,7 +136,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
* task listener. can be null
*/
public TaskAdapter(ListActivity activity, int resource,
Cursor c, Filter filter, boolean autoRequery,
Cursor c, AtomicReference<String> query, boolean autoRequery,
OnCompletedTaskListener onCompletedTaskListener) {
super(activity, c, autoRequery);
DependencyInjectionService.getInstance().inject(this);
@ -144,7 +144,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
inflater = (LayoutInflater) activity.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
this.filter = filter;
this.query = query;
this.resource = resource;
this.activity = activity;
this.onCompletedTaskListener = onCompletedTaskListener;
@ -169,7 +169,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
// perform query
TodorooCursor<Task> newCursor = taskService.fetchFiltered(
filter, constraint, TaskAdapter.PROPERTIES);
query.get(), constraint, TaskAdapter.PROPERTIES);
activity.startManagingCursor(newCursor);
return newCursor;
}

@ -9,10 +9,9 @@ import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task;
@ -157,14 +156,14 @@ public class TaskService {
* @return
*/
@SuppressWarnings("nls")
public TodorooCursor<Task> fetchFiltered(Filter filter, CharSequence constraint,
public TodorooCursor<Task> fetchFiltered(String queryTemplate, CharSequence constraint,
Property<?>... properties) {
Criterion whereConstraint = null;
if(constraint != null)
whereConstraint = Functions.upper(Task.TITLE).like("%" +
constraint.toString().toUpperCase() + "%");
if(filter == null || filter.sqlQuery == null) {
if(queryTemplate == null) {
if(whereConstraint == null)
return taskDao.query(Query.select(properties));
else
@ -173,12 +172,13 @@ public class TaskService {
String sql;
if(whereConstraint != null) {
if(!filter.sqlQuery.toUpperCase().contains("WHERE"))
sql = filter.sqlQuery + " WHERE " + whereConstraint;
if(!queryTemplate.toUpperCase().contains("WHERE"))
sql = queryTemplate + " WHERE " + whereConstraint;
else
sql = filter.sqlQuery.replace("WHERE ", "WHERE " + whereConstraint + " AND ");
sql = queryTemplate.replace("WHERE ", "WHERE " + whereConstraint + " AND ");
} else
sql = filter.sqlQuery;
sql = queryTemplate;
return taskDao.query(Query.select(properties).withQueryTemplate(sql));
}

@ -224,6 +224,31 @@ public class Preferences {
editor.commit();
}
// --- preference fetching (int)
/** Gets a int preference
*
* @param key
* @param defValue
* @return default if value is unset otherwise the value
*/
public static int getInt(String key, int defValue) {
Context context = ContextManager.getContext();
return getPrefs(context).getInt(key, defValue);
}
/**
* Sets int preference
* @param key
* @param value
*/
public static void setInt(String key, int value) {
Context context = ContextManager.getContext();
Editor editor = getPrefs(context).edit();
editor.putInt(key, value);
editor.commit();
}
// --- preference fetching (long)
/** Gets a long preference

@ -19,6 +19,7 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.SortSelectionActivity;
import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.Filter;
@ -27,6 +28,7 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.model.Task;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Preferences;
public class TasksWidget extends AppWidgetProvider {
@ -98,10 +100,13 @@ public class TasksWidget extends AppWidgetProvider {
TodorooCursor<Task> cursor = null;
try {
Filter inboxFilter = CoreFilterExposer.buildInboxFilter(getResources());
inboxFilter.sqlQuery += "ORDER BY " + TaskService.defaultTaskOrder() + " LIMIT " + numberOfTasks;
int flags = Preferences.getInt(SortSelectionActivity.PREF_SORT_FLAGS, 0);
int sort = Preferences.getInt(SortSelectionActivity.PREF_SORT_SORT, 0);
String query = SortSelectionActivity.adjustQueryForFlagsAndSort(
inboxFilter.sqlQuery, flags, sort) + " LIMIT " + numberOfTasks;
database.openForReading();
cursor = taskService.fetchFiltered(inboxFilter, null, Task.TITLE, Task.DUE_DATE);
cursor = taskService.fetchFiltered(query, null, Task.TITLE, Task.DUE_DATE);
Task task = new Task();
for (int i = 0; i < cursor.getCount() && i < numberOfTasks; i++) {
cursor.moveToPosition(i);

Loading…
Cancel
Save