Updated the way deadlines (absolute vs goal) are handled. Goal deadlines don't send reminders once they're overdue.

Also, did some cosmetic things.
pull/14/head
Tim Su 16 years ago
parent 0f426aa86a
commit f1e6f5a480

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

@ -15,22 +15,20 @@
-->
<resources>
<!-- Choices for the "Reminder minutes" spinner.
These must be kept in sync with the reminder_minutes_values array.
-->
<!-- Make these < 20 chars so the task name is displayed -->
<string-array name="reminders">
<item>Hi there! Have a second?</item>
<item>Can I see you for a moment?</item>
<item>Hi there! Have a sec?</item>
<item>Can I see you for a sec?</item>
<item>Have a few minutes?</item>
<item>I think you forgot to do something...</item>
<item>Excuse me?</item>
<item>When you have a minute...</item>
<item>Look what I dug up!</item>
<item>Are you free for a moment?</item>
<item>Your friendly neighborhood assistant here!</item>
<item>Hi! Can I bother you for a moment?</item>
<item>I would like a minute of your time.</item>
<item>It\'s a great day to get something done!</item>
<item>Did you forget?</item>
<item>Excuse me!</item>
<item>When you have a minute:</item>
<item>On your agenda:</item>
<item>Free for a moment?</item>
<item>Astrid here!</item>
<item>Hi! Can I bug you?</item>
<item>A minute of your time?</item>
<item>It\'s a great day to</item>
</string-array>
<!-- Astrid says... (user should answer yes or no)-->

@ -67,6 +67,7 @@
<string name="taskList_titleTagPrefix">Tagged \"%s\": </string>
<string name="taskList_hiddenSuffix"> hidden</string>
<string name="taskList_dueIn">Due in</string>
<string name="taskList_goalPrefix">Goal</string>
<string name="taskList_overdueBy">Overdue by</string>
<string name="addtask_label">New Task</string>
<string name="tags_prefix">Tags: </string>
@ -162,8 +163,8 @@
<!-- Notification -->
<skip />
<string name="notif_definiteDueDate">Absolute Deadline Coming Up!</string>
<string name="notif_preferredDueDate">Goal Deadline Coming Up!</string>
<string name="notif_definiteDueDate">Absolute Deadline!</string>
<string name="notif_preferredDueDate">Goal Deadline!</string>
<!-- Error MEssages -->
<skip />

@ -38,7 +38,6 @@ import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
@ -109,7 +108,7 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
final TextView tagsView = ((TextView)view.findViewById(R.id.text_tags));
final CheckBox progress = ((CheckBox)view.findViewById(R.id.cb1));
final ImageView timer = ((ImageView)view.findViewById(R.id.image1));
final LinearLayout properties = (LinearLayout)view.findViewById(R.id.prop_layout);
boolean hasProperties = false;
view.setTag(task);
progress.setTag(task);
@ -121,21 +120,29 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
// due date
Date dueDate = task.getDefiniteDueDate();
String dueString = "";
if(dueDate == null || (task.getPreferredDueDate() != null &&
task.getPreferredDueDate().getTime() < dueDate.getTime()))
task.getPreferredDueDate().before(dueDate))) {
// only prefix with "goal:" if the real deadline isn't overdue
if(task.getDefiniteDueDate() == null || task.getDefiniteDueDate().
after(new Date()))
dueString = r.getString(R.string.taskList_goalPrefix) + " ";
dueDate = task.getPreferredDueDate();
}
if(dueDate != null) {
int secondsLeft = (int)(dueDate.getTime() -
System.currentTimeMillis()) / 1000;
String dueString = " " + DateUtilities.getDurationString(r,
Math.abs(secondsLeft), 1);
if(secondsLeft > 0)
dueString = r.getString(R.string.taskList_dueIn) + dueString;
dueString += r.getString(R.string.taskList_dueIn) + " ";
else {
dueString = r.getString(R.string.taskList_overdueBy) + dueString;
dueString += r.getString(R.string.taskList_overdueBy) + " ";
dueDateView.setTextColor(r.getColor(R.color.taskList_dueDateOverdue));
}
dueString += DateUtilities.getDurationString(r, Math.abs(secondsLeft), 1);
dueDateView.setText(dueString);
hasProperties = true;
} else
dueDateView.setVisibility(View.GONE);
@ -152,7 +159,7 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
if(tagString.length() > 0) {
tagsView.setText(r.getString(R.string.tags_prefix) + " " +
tagString);
} else {
} else if(!hasProperties) {
tagsView.setText(r.getString(R.string.no_tags));
}

@ -137,7 +137,9 @@ public class Notifications extends BroadcastReceiver {
flags = FLAG_DEFINITE_DEADLINE;
}
}
if(task.getPreferredDueDate() != null) {
// for goal deadlines, once it's overdue, forget about it.
if(task.getPreferredDueDate() != null &&
task.getPreferredDueDate().getTime() > System.currentTimeMillis()) {
long deadlineWhen = task.getPreferredDueDate().getTime() -
DEADLINE_NOTIFY_SECS * 1000;
if(when == null || deadlineWhen < when) {
@ -279,8 +281,8 @@ public class Notifications extends BroadcastReceiver {
System.currentTimeMillis());
notification.setLatestEventInfo(context,
appName + ": " + reminder,
taskName,
appName,
reminder + " " + taskName,
pendingIntent);
notification.defaults = Notification.DEFAULT_ALL;

Loading…
Cancel
Save