diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java b/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java index 076029347..b4a2c6915 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java @@ -135,14 +135,16 @@ public class GCalControlSet extends PopupControlSet { values.put("calendar_id", calendarId); calendarUri = GCalHelper.createTaskEvent(task, cr, values); - task.setValue(Task.CALENDAR_URI, calendarUri.toString()); - - if (calendarSelector.getSelectedItemPosition() != 0 && !hasEvent) { - // pop up the new event - Intent intent = new Intent(Intent.ACTION_EDIT, calendarUri); - intent.putExtra("beginTime", values.getAsLong("dtstart")); - intent.putExtra("endTime", values.getAsLong("dtend")); - activity.startActivity(intent); + if(calendarUri != null) { + task.setValue(Task.CALENDAR_URI, calendarUri.toString()); + + if (calendarSelector.getSelectedItemPosition() != 0 && !hasEvent) { + // pop up the new event + Intent intent = new Intent(Intent.ACTION_EDIT, calendarUri); + intent.putExtra("beginTime", values.getAsLong("dtstart")); + intent.putExtra("endTime", values.getAsLong("dtend")); + activity.startActivity(intent); + } } } catch (Exception e) { @@ -174,6 +176,7 @@ public class GCalControlSet extends PopupControlSet { return null; } + @SuppressWarnings("nls") private void viewCalendarEvent() { if(calendarUri == null) return; diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationFragment.java b/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationFragment.java index 84554ef37..d7f059faf 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/NotificationFragment.java @@ -38,6 +38,7 @@ import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; import android.widget.TimePicker; +import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.andlib.sql.QueryTemplate; @@ -157,6 +158,7 @@ public class NotificationFragment extends TaskListFragment implements OnTimeSetL Task task = new Task(); task.setId(taskId); PluginServices.getTaskService().setComplete(task, true); + Toast.makeText(getActivity(), R.string.rmd_NoA_completed_toast, Toast.LENGTH_LONG).show(); getActivity().finish(); } }); diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java index 93fc82377..b7f3e7f50 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java @@ -5,9 +5,9 @@ import java.util.Date; import android.app.Dialog; import android.app.TimePickerDialog.OnTimeSetListener; import android.view.View; -import android.view.View.OnClickListener; import android.widget.TextView; import android.widget.TimePicker; +import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.andlib.utility.DateUtilities; @@ -17,11 +17,16 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; +/** + * A dialog that shows your task reminder + * + * @author sbosley + * + */ +public class ReminderDialog extends Dialog { -public class ReminderDialog { - - public static void showReminderDialog(final AstridActivity activity, final long taskId, String title) { - final Dialog d = new Dialog(activity, R.style.ReminderDialog); + public ReminderDialog(final AstridActivity activity, final long taskId, String title) { + super(activity, R.style.ReminderDialog); final SnoozeCallback dialogSnooze = new SnoozeCallback() { @Override public void snoozeForTime(long time) { @@ -29,7 +34,7 @@ public class ReminderDialog { task.setId(taskId); task.setValue(Task.REMINDER_SNOOZE, time); PluginServices.getTaskService().save(task); - d.dismiss(); + dismiss(); StatisticsService.reportEvent(StatisticsConstants.TASK_SNOOZE); } }; @@ -44,47 +49,47 @@ public class ReminderDialog { dialogSnooze.snoozeForTime(alarmTime.getTime()); } }; - d.setContentView(R.layout.astrid_reminder_view); + setContentView(R.layout.astrid_reminder_view); // set up listeners - d.findViewById(R.id.dismiss).setOnClickListener(new OnClickListener() { + findViewById(R.id.dismiss).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { - d.dismiss(); + dismiss(); } }); - d.findViewById(R.id.reminder_snooze).setOnClickListener(new OnClickListener() { + findViewById(R.id.reminder_snooze).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { NotificationFragment.snooze(activity, onTimeSet, dialogSnooze); } }); - d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() { + findViewById(R.id.reminder_complete).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Task task = new Task(); task.setId(taskId); PluginServices.getTaskService().setComplete(task, true); - d.dismiss(); + Toast.makeText(activity, R.string.rmd_NoA_completed_toast, Toast.LENGTH_LONG).show(); + dismiss(); } }); - d.findViewById(R.id.reminder_edit).setOnClickListener(new OnClickListener() { + findViewById(R.id.reminder_edit).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - d.dismiss(); + dismiss(); activity.onTaskListItemClicked(taskId); } }); - ((TextView) d.findViewById(R.id.reminder_title)).setText(title); - ((TextView) d.findViewById(R.id.reminder_message)).setText( + ((TextView) findViewById(R.id.reminder_title)).setText(title); + ((TextView) findViewById(R.id.reminder_message)).setText( Notifications.getRandomReminder(activity.getResources().getStringArray(R.array.reminder_responses))); - d.setOwnerActivity(activity); - d.show(); + setOwnerActivity(activity); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderView.java b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderView.java deleted file mode 100644 index 5d6987ca3..000000000 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderView.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.todoroo.astrid.reminders; - -import android.content.Context; -import android.util.AttributeSet; -import android.widget.LinearLayout; - -public class ReminderView extends LinearLayout { - - public ReminderView(Context context, AttributeSet attrs) { - super(context, attrs); - // TODO Auto-generated constructor stub - } - -} diff --git a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java index 98d64e1f7..6d3c52cee 100644 --- a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java +++ b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java @@ -87,29 +87,6 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { context.sendOrderedBroadcast(broadcastIntent, null); Flags.set(Flags.REFRESH); return; - -// // clone to create new task -// Flags.set(Flags.ACTFM_SUPPRESS_SYNC); -// Flags.set(Flags.GTASKS_SUPPRESS_SYNC); -// Task clone = PluginServices.getTaskService().clone(task); -// clone.setValue(Task.DUE_DATE, newDueDate); -// clone.setValue(Task.HIDE_UNTIL, hideUntil); -// clone.setValue(Task.COMPLETION_DATE, 0L); -// clone.setValue(Task.TIMER_START, 0L); -// clone.setValue(Task.ELAPSED_SECONDS, 0); -// clone.setValue(Task.REMINDER_SNOOZE, 0L); -// clone.setValue(Task.REMINDER_LAST, 0L); -// clone.setValue(Task.CALENDAR_URI, ""); //$NON-NLS-1$ -// -// GCalHelper.createTaskEventIfEnabled(clone, false); -// PluginServices.getTaskService().save(clone); -// -// // clear recurrence from completed task so it can be re-completed -// task.setValue(Task.RECURRENCE, ""); //$NON-NLS-1$ -// task.setValue(Task.DETAILS_DATE, 0L); -// -// PluginServices.getTaskService().save(task); - } } diff --git a/astrid/res/values/strings-reminders.xml b/astrid/res/values/strings-reminders.xml index 638b88d16..294a11918 100644 --- a/astrid/res/values/strings-reminders.xml +++ b/astrid/res/values/strings-reminders.xml @@ -54,8 +54,8 @@ Snooze - - Go Away! + + Congratulations on finishing \'%s\'! @@ -308,7 +308,7 @@ Lovely weather for a job like this, isn\'t it? A spot of tea while you work on this? If only you had already done this, then you could go outside and play. - It\’s time. You can\’t put off the inevitable. + It\'s time. You can\'t put off the inevitable. I die a little every time you ignore me. diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java index a127f555a..843a71642 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java @@ -284,7 +284,7 @@ public class AstridActivity extends FragmentActivity long taskId = customIntent.getLongExtra(NotificationFragment.TOKEN_ID, 0); if (taskId > 0) { String text = intent.getStringExtra(Notifications.EXTRAS_TEXT); - ReminderDialog.showReminderDialog(AstridActivity.this, taskId, text); + new ReminderDialog(AstridActivity.this, taskId, text).show(); } // Remove broadcast @@ -296,13 +296,18 @@ public class AstridActivity extends FragmentActivity private class RepeatConfirmationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, 0); + long taskId = intent.getLongExtra( + AstridApiConstants.EXTRAS_TASK_ID, 0); if (taskId > 0) { - long oldDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); - long newDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); - Task task = PluginServices.getTaskService().fetchById(taskId, DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES); - - DateChangedAlerts.showRepeatTaskRescheduledDialog(AstridActivity.this, task, oldDueDate, newDueDate); + long oldDueDate = intent.getLongExtra( + AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); + long newDueDate = intent.getLongExtra( + AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); + Task task = PluginServices.getTaskService().fetchById(taskId, + DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES); + + DateChangedAlerts.showRepeatTaskRescheduledDialog( + AstridActivity.this, task, oldDueDate, newDueDate); } } } diff --git a/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java b/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java index 8bb4b3155..63fb56fca 100644 --- a/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java +++ b/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java @@ -52,8 +52,10 @@ public class DateChangedAlerts { final long taskId = task.getId(); d.setContentView(R.layout.astrid_reminder_view); + Button okButton = (Button) d.findViewById(R.id.reminder_complete); + d.findViewById(R.id.reminder_snooze).setVisibility(View.GONE); - ((Button) d.findViewById(R.id.reminder_complete)).setText(R.string.DLG_ok); + okButton.setText(R.string.DLG_ok); ((TextView) d.findViewById(R.id.reminder_title)).setText(activity.getString(R.string.TLA_quickadd_confirm_title, originalText)); Spanned speechBubbleText = constructSpeechBubbleTextForQuickAdd(activity, task); @@ -91,9 +93,12 @@ public class DateChangedAlerts { final Dialog d = new Dialog(activity, R.style.ReminderDialog); d.setContentView(R.layout.astrid_reminder_view); + Button okButton = (Button) d.findViewById(R.id.reminder_complete); + Button undoButton = (Button) d.findViewById(R.id.reminder_edit); + d.findViewById(R.id.reminder_snooze).setVisibility(View.GONE); - ((Button) d.findViewById(R.id.reminder_complete)).setText(R.string.DLG_ok); - ((Button) d.findViewById(R.id.reminder_edit)).setText(R.string.DLG_undo); + okButton.setText(R.string.DLG_ok); + undoButton.setText(R.string.DLG_undo); ((TextView) d.findViewById(R.id.reminder_title)).setText(activity.getString(R.string.repeat_rescheduling_dialog_title, task.getValue(Task.TITLE))); String oldDueDateString = getRelativeDateAndTimeString(activity, oldDueDate); @@ -105,7 +110,7 @@ public class DateChangedAlerts { setupOkAndDismissButtons(d); setupHideCheckbox(d); - d.findViewById(R.id.reminder_edit).setOnClickListener(new OnClickListener() { + undoButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { d.dismiss(); @@ -162,17 +167,17 @@ public class DateChangedAlerts { String title = task.getValue(Task.TITLE); long date = task.getValue(Task.DUE_DATE); - String dueDate = ""; + String dueString = ""; if (!TextUtils.isEmpty(task.getValue(Task.RECURRENCE))) { - dueDate = getRecurrenceString(context, task); + dueString = getRecurrenceString(context, task); } - if (TextUtils.isEmpty(dueDate)) { - dueDate = getRelativeDateAndTimeString(context, date); + if (TextUtils.isEmpty(dueString)) { + dueString = getRelativeDateAndTimeString(context, date); } - if (!TextUtils.isEmpty(dueDate)) - dueDate = context.getString(R.string.TLA_quickadd_confirm_speech_bubble_date, dueDate); + if (!TextUtils.isEmpty(dueString)) + dueString = context.getString(R.string.TLA_quickadd_confirm_speech_bubble_date, dueString); int priority = task.getValue(Task.IMPORTANCE); if (priority >= priorityStrings.length) @@ -181,18 +186,20 @@ public class DateChangedAlerts { int color = context.getResources().getColor(colorsArray[priority]) - 0xff000000; priorityString = String.format("%s", Integer.toHexString(color), priorityString); - String fullString = context.getString(R.string.TLA_quickadd_confirm_speech_bubble, title, dueDate, priorityString); + String fullString = context.getString(R.string.TLA_quickadd_confirm_speech_bubble, title, dueString, priorityString); return Html.fromHtml(fullString); } + @SuppressWarnings("nls") private static String getRelativeDateAndTimeString(Context context, long date) { - String dueDate = date > 0 ? DateUtilities.getRelativeDay(context, date, false) : ""; + String dueString = date > 0 ? DateUtilities.getRelativeDay(context, date, false) : ""; if(Task.hasDueTime(date)) - dueDate = String.format("%s at %s", dueDate, //$NON-NLS-1$ + dueString = String.format("%s at %s", dueString, //$NON-NLS-1$ DateUtilities.getTimeString(context, new Date(date))); - return dueDate; + return dueString; } + @SuppressWarnings("nls") private static String getRecurrenceString(Context context, Task task) { try { RRule rrule = new RRule(task.getValue(Task.RECURRENCE)); @@ -201,22 +208,30 @@ public class DateChangedAlerts { R.array.repeat_interval); String frequency = ""; Frequency freq = rrule.getFreq(); - if (freq == Frequency.DAILY) { + switch(freq) { + case DAILY: frequency = dateAbbrev[0].toLowerCase(); - } else if (freq == Frequency.WEEKLY) { + break; + case WEEKLY: frequency = dateAbbrev[1].toLowerCase(); - } else if (freq == Frequency.MONTHLY) { + break; + case MONTHLY: frequency = dateAbbrev[2].toLowerCase(); - } else if (freq == Frequency.HOURLY) { + break; + case HOURLY: frequency = dateAbbrev[3].toLowerCase(); - } else if (freq == Frequency.MINUTELY) { + break; + case MINUTELY: frequency = dateAbbrev[4].toLowerCase(); - } else if (freq == Frequency.YEARLY) { + break; + case YEARLY: frequency = dateAbbrev[5].toLowerCase(); } + if (!TextUtils.isEmpty(frequency)) { String date = String.format("%s %s", rrule.getInterval(), frequency); //$NON-NLS-1$ - return String.format(context.getString(R.string.repeat_detail_duedate), date).toLowerCase(); // Every freq int + return String.format(context.getString(R.string.repeat_detail_duedate), + date).toLowerCase(); // Every freq int } } catch (ParseException e) {