Cleaned up activity result code, added snooze minutes to snooze button, and updated the colors.

pull/14/head
Tim Su 16 years ago
parent d879e63129
commit 2c5c9ee356

@ -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="34" android:versionCode="35"
android:versionName="1.9.8"> android:versionName="1.9.9">
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.VIBRATE"/>

@ -20,7 +20,7 @@
--> -->
<resources> <resources>
<color name="task_list_overdue">#FF340A</color> <color name="task_list_overdue">#FFFB0000</color>
<color name="task_list_done">#ff777777</color> <color name="task_list_done">#ff777777</color>
<color name="taskList_dueDateOverdue">#ffFFBF9E</color> <color name="taskList_dueDateOverdue">#ffFFBF9E</color>
@ -32,9 +32,9 @@
<color name="view_table_values">#ffbbbbbb</color> <color name="view_table_values">#ffbbbbbb</color>
<color name="view_table_overdue">#ffff0000</color> <color name="view_table_overdue">#ffff0000</color>
<color name="importance_1">#fffff75c</color> <color name="importance_1">#ffffffff</color>
<color name="importance_2">#ffa1b4ff</color> <color name="importance_2">#ffc0c4dc</color>
<color name="importance_3">#ff5274ff</color> <color name="importance_3">#ff7381c8</color>
<color name="importance_4">#ff0033ff</color> <color name="importance_4">#ff446592</color>
</resources> </resources>

@ -179,12 +179,14 @@
<string name="notify_yes">Let's do it!</string> <string name="notify_yes">Let's do it!</string>
<string name="notify_snooze">Snooze!</string> <string name="notify_snooze">Snooze!</string>
<string name="notify_no">No, quit.</string> <string name="notify_no">No, quit.</string>
<string name="notify_snooze_title">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>
<!-- Notification --> <!-- Notification -->
<skip /> <skip />

@ -54,6 +54,7 @@ import com.timsu.astrid.data.tag.TagModelForView;
import com.timsu.astrid.data.task.TaskController; import com.timsu.astrid.data.task.TaskController;
import com.timsu.astrid.data.task.TaskIdentifier; import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.data.task.TaskModelForList; import com.timsu.astrid.data.task.TaskModelForList;
import com.timsu.astrid.utilities.Constants;
/** List all tags and allows a user to see all tasks for a given tag /** List all tags and allows a user to see all tasks for a given tag
@ -213,10 +214,23 @@ public class TagList extends Activity {
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, protected void onActivityResult(int requestCode, int resultCode,
Intent intent) { Intent intent) {
if(resultCode == TaskList.RESULT_CODE_CLEAR_TAG) switch(resultCode) {
case Constants.RESULT_GO_HOME:
finish(); finish();
else break;
default:
fillData(); fillData();
}
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus && TaskList.shouldCloseInstance) { // user wants to quit
finish();
}
} }
// --- list adapter // --- list adapter

@ -64,6 +64,7 @@ import com.timsu.astrid.data.tag.TagModelForView;
import com.timsu.astrid.data.task.TaskIdentifier; import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.data.task.TaskModelForEdit; import com.timsu.astrid.data.task.TaskModelForEdit;
import com.timsu.astrid.data.task.TaskModelForList; import com.timsu.astrid.data.task.TaskModelForList;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.Notifications; import com.timsu.astrid.utilities.Notifications;
import com.timsu.astrid.widget.DateControlSet; import com.timsu.astrid.widget.DateControlSet;
import com.timsu.astrid.widget.DateWithNullControlSet; import com.timsu.astrid.widget.DateWithNullControlSet;
@ -80,9 +81,6 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
private static final int DISCARD_ID = Menu.FIRST + 1; private static final int DISCARD_ID = Menu.FIRST + 1;
private static final int DELETE_ID = Menu.FIRST + 2; private static final int DELETE_ID = Menu.FIRST + 2;
// activity results
public static final int RESULT_DELETE = RESULT_FIRST_USER + 10;
// other constants // other constants
private static final int MAX_TAGS = 5; private static final int MAX_TAGS = 5;
private static final int MAX_ALERTS = 5; private static final int MAX_ALERTS = 5;
@ -451,6 +449,15 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
* ======================================================= event handlers * ======================================================= event handlers
* ====================================================================== */ * ====================================================================== */
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus && TaskList.shouldCloseInstance) { // user wants to quit
finish();
}
}
private void saveButtonClick() { private void saveButtonClick() {
setResult(RESULT_OK); setResult(RESULT_OK);
finish(); finish();
@ -473,7 +480,7 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
controller.deleteTask(model.getTaskIdentifier()); controller.deleteTask(model.getTaskIdentifier());
shouldSaveState = false; shouldSaveState = false;
setResult(RESULT_DELETE); setResult(Constants.RESULT_GO_HOME);
finish(); finish();
} }
}) })

@ -51,6 +51,7 @@ import com.timsu.astrid.data.tag.TagModelForView;
import com.timsu.astrid.data.task.TaskController; import com.timsu.astrid.data.task.TaskController;
import com.timsu.astrid.data.task.TaskIdentifier; import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.data.task.TaskModelForList; import com.timsu.astrid.data.task.TaskModelForList;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.StartupReceiver; import com.timsu.astrid.utilities.StartupReceiver;
@ -65,9 +66,6 @@ public class TaskList extends Activity {
// bundle tokens // bundle tokens
public static final String TAG_TOKEN = "tag"; public static final String TAG_TOKEN = "tag";
// result codes
public static final int RESULT_CODE_CLEAR_TAG = RESULT_FIRST_USER;
// activities // activities
private static final int ACTIVITY_CREATE = 0; private static final int ACTIVITY_CREATE = 0;
private static final int ACTIVITY_VIEW = 1; private static final int ACTIVITY_VIEW = 1;
@ -354,14 +352,6 @@ public class TaskList extends Activity {
* ======================================================= event handlers * ======================================================= event handlers
* ====================================================================== */ * ====================================================================== */
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
// we would fill the list, but it is already happening on focus change
}
@Override @Override
public void onWindowFocusChanged(boolean hasFocus) { public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus); super.onWindowFocusChanged(hasFocus);
@ -454,7 +444,7 @@ public class TaskList extends Activity {
fillData(); fillData();
return true; return true;
case CONTEXT_FILTER_TAG: case CONTEXT_FILTER_TAG:
setResult(RESULT_CODE_CLEAR_TAG); setResult(Constants.RESULT_GO_HOME);
finish(); finish();
return true; return true;
} }

@ -37,6 +37,7 @@ import android.widget.TextView;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.timsu.astrid.data.task.TaskIdentifier; import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.data.task.TaskModelForView; import com.timsu.astrid.data.task.TaskModelForView;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.DateUtilities; import com.timsu.astrid.utilities.DateUtilities;
import com.timsu.astrid.widget.NumberPicker; import com.timsu.astrid.widget.NumberPicker;
import com.timsu.astrid.widget.NumberPickerDialog; import com.timsu.astrid.widget.NumberPickerDialog;
@ -56,9 +57,6 @@ public class TaskView extends TaskModificationActivity<TaskModelForView> {
private static final int EDIT_ID = Menu.FIRST; private static final int EDIT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1; private static final int DELETE_ID = Menu.FIRST + 1;
// activity results
public static final int RESULT_DISMISS = RESULT_FIRST_USER + 20;
// UI components // UI components
private TextView name; private TextView name;
private TextView elapsed; private TextView elapsed;
@ -231,15 +229,26 @@ public class TaskView extends TaskModificationActivity<TaskModelForView> {
* ======================================================= event handlers * ======================================================= event handlers
* ====================================================================== */ * ====================================================================== */
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus && TaskList.shouldCloseInstance) { // user wants to quit
finish();
}
}
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, protected void onActivityResult(int requestCode, int resultCode,
Intent intent) { Intent intent) {
switch(resultCode) {
// if user doesn't click 'back', finish this activity too case Constants.RESULT_GO_HOME:
if(resultCode != RESULT_CANCELED) { case RESULT_CANCELED:
setResult(resultCode); setResult(resultCode);
finish(); finish();
} else { break;
default:
populateFields(); populateFields();
} }
} }

@ -8,7 +8,11 @@ import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.Notifications; import com.timsu.astrid.utilities.Notifications;
import com.timsu.astrid.widget.NumberPicker;
import com.timsu.astrid.widget.NumberPickerDialog;
import com.timsu.astrid.widget.NumberPickerDialog.OnNumberPickedListener;
public class TaskViewNotifier extends TaskView { public class TaskViewNotifier extends TaskView {
@ -39,14 +43,14 @@ public class TaskViewNotifier extends TaskView {
.setMessage(response) .setMessage(response)
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)
// yes, i will do it: just closes this box // yes, i will do it: just closes this dialog
.setPositiveButton(R.string.notify_yes, null) .setPositiveButton(R.string.notify_yes, null)
// no, i will ignore: quits application // no, i will ignore: quits application
.setNegativeButton(R.string.notify_no, new DialogInterface.OnClickListener() { .setNegativeButton(R.string.notify_no, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
setResult(RESULT_CANCELED); setResult(Constants.RESULT_GO_HOME);
TaskList.shouldCloseInstance = true; TaskList.shouldCloseInstance = true;
finish(); finish();
} }
@ -56,15 +60,27 @@ public class TaskViewNotifier extends TaskView {
.setNeutralButton(R.string.notify_snooze, new DialogInterface.OnClickListener() { .setNeutralButton(R.string.notify_snooze, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
snoozeAlert();
}
})
.show();
}
private void snoozeAlert() {
Resources r = getResources();
// ask how long
new NumberPickerDialog(this,
new OnNumberPickedListener() {
@Override
public void onNumberPicked(NumberPicker view, int number) {
Notifications.createSnoozeAlarm(TaskViewNotifier.this, Notifications.createSnoozeAlarm(TaskViewNotifier.this,
model.getTaskIdentifier()); model.getTaskIdentifier(), number * 60);
setResult(RESULT_CANCELED); setResult(Constants.RESULT_GO_HOME);
TaskList.shouldCloseInstance = true; TaskList.shouldCloseInstance = true;
finish(); finish();
} }
}) }, r.getString(R.string.notify_snooze_title), 15, 15, 0, 120).show();
.show();
} }
} }

@ -0,0 +1,12 @@
package com.timsu.astrid.utilities;
import android.app.Activity;
/** Astrid constants */
public class Constants {
// result codes
/** Return to the task list view */
public static final int RESULT_GO_HOME = Activity.RESULT_FIRST_USER;
}

@ -36,8 +36,6 @@ public class Notifications extends BroadcastReceiver {
private static final int DEADLINE_NOTIFY_SECS = 60 * 60; private static final int DEADLINE_NOTIFY_SECS = 60 * 60;
/** # of seconds after deadline to repeat reminder*/ /** # of seconds after deadline to repeat reminder*/
private static final int DEADLINE_REPEAT = 10 * 60; private static final int DEADLINE_REPEAT = 10 * 60;
/** # of seconds to snooze */
private static final int SNOOZE_SECONDS = 10 * 60;
// flags // flags
public static final int FLAG_DEFINITE_DEADLINE = 1 << 0; public static final int FLAG_DEFINITE_DEADLINE = 1 << 0;
@ -207,9 +205,10 @@ public class Notifications extends BroadcastReceiver {
} }
/** Create a 'snooze' reminder for this task */ /** Create a 'snooze' reminder for this task */
public static void createSnoozeAlarm(Context context, TaskIdentifier id) { public static void createSnoozeAlarm(Context context, TaskIdentifier id,
int secondsToSnooze) {
scheduleAlarm(context, id.getId(), System.currentTimeMillis() + scheduleAlarm(context, id.getId(), System.currentTimeMillis() +
SNOOZE_SECONDS * 1000, FLAG_SNOOZE); secondsToSnooze * 1000, FLAG_SNOOZE);
} }
/** Helper method to create a PendingIntent from an ID & flags */ /** Helper method to create a PendingIntent from an ID & flags */

Loading…
Cancel
Save