Fixed completed task sorting yet again, and fixed a bug with multiple alerts.

pull/14/head
Tim Su 17 years ago
parent 13a8852090
commit 98a8970f53

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid" package="com.timsu.astrid"
android:versionCode="29" android:versionCode="30"
android:versionName="1.9.4"> android:versionName="1.9.5">
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.VIBRATE"/>

@ -107,7 +107,7 @@ public class TaskModelForList extends AbstractTaskModel {
// bubble completed tasks to the bottom // bubble completed tasks to the bottom
if(isTaskCompleted()) { if(isTaskCompleted()) {
if(getCompletionDate() == null) if(getCompletionDate() == null)
weight += 20000; weight += 1e6;
else else
weight = (int)Math.max(10000 + (System.currentTimeMillis() - weight = (int)Math.max(10000 + (System.currentTimeMillis() -
getCompletionDate().getTime()) / 1000, 10000); getCompletionDate().getTime()) / 1000, 10000);

@ -42,6 +42,7 @@ public class Notifications extends BroadcastReceiver {
public static final int FLAG_PREFERRED_DEADLINE = 2; public static final int FLAG_PREFERRED_DEADLINE = 2;
public static final int FLAG_OVERDUE = 4; public static final int FLAG_OVERDUE = 4;
public static final int FLAG_FIXED = 8; public static final int FLAG_FIXED = 8;
// higher bits are for different alerts
private static Random random = new Random(); private static Random random = new Random();
@ -154,7 +155,7 @@ public class Notifications extends BroadcastReceiver {
0, FLAG_PREFERRED_DEADLINE | FLAG_OVERDUE, task); 0, FLAG_PREFERRED_DEADLINE | FLAG_OVERDUE, task);
} }
if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) > 0) { if((task.getNotificationFlags() & TaskModelForList.NOTIFY_AFTER_DEADLINE) > 0) {
scheduleDeadline(context, task.getDefiniteDueDate(), DEADLINE_REPEAT, scheduleDeadline(context, task.getDefiniteDueDate(), 0,
DEADLINE_REPEAT, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE, DEADLINE_REPEAT, FLAG_DEFINITE_DEADLINE | FLAG_OVERDUE,
task); task);
} }
@ -162,6 +163,7 @@ public class Notifications extends BroadcastReceiver {
// fixed alerts // fixed alerts
Cursor cursor = alertController.getTaskAlertsCursor(task.getTaskIdentifier()); Cursor cursor = alertController.getTaskAlertsCursor(task.getTaskIdentifier());
Date currentDate = new Date(); Date currentDate = new Date();
int alertId = 0;
while(cursor.getCount() > 0 && !cursor.isLast()) { while(cursor.getCount() > 0 && !cursor.isLast()) {
cursor.moveToNext(); cursor.moveToNext();
Date alert = new Alert(cursor).getDate(); Date alert = new Alert(cursor).getDate();
@ -169,7 +171,7 @@ public class Notifications extends BroadcastReceiver {
continue; continue;
scheduleAlarm(context, task.getTaskIdentifier().getId(), scheduleAlarm(context, task.getTaskIdentifier().getId(),
alert.getTime(), FLAG_FIXED); alert.getTime(), FLAG_FIXED | (alertId++ << 4));
} }
cursor.close(); cursor.close();
} }

Loading…
Cancel
Save