Awesome clean to awesome commit - made reminder dialog actually a dialog, and some code style stuff.

pull/14/head
Tim Su 14 years ago
parent 52eff1ff66
commit 5fb59b6f23

@ -135,6 +135,7 @@ public class GCalControlSet extends PopupControlSet {
values.put("calendar_id", calendarId); values.put("calendar_id", calendarId);
calendarUri = GCalHelper.createTaskEvent(task, cr, values); calendarUri = GCalHelper.createTaskEvent(task, cr, values);
if(calendarUri != null) {
task.setValue(Task.CALENDAR_URI, calendarUri.toString()); task.setValue(Task.CALENDAR_URI, calendarUri.toString());
if (calendarSelector.getSelectedItemPosition() != 0 && !hasEvent) { if (calendarSelector.getSelectedItemPosition() != 0 && !hasEvent) {
@ -144,6 +145,7 @@ public class GCalControlSet extends PopupControlSet {
intent.putExtra("endTime", values.getAsLong("dtend")); intent.putExtra("endTime", values.getAsLong("dtend"));
activity.startActivity(intent); activity.startActivity(intent);
} }
}
} catch (Exception e) { } catch (Exception e) {
exceptionService.displayAndReportError(activity, exceptionService.displayAndReportError(activity,
@ -174,6 +176,7 @@ public class GCalControlSet extends PopupControlSet {
return null; return null;
} }
@SuppressWarnings("nls")
private void viewCalendarEvent() { private void viewCalendarEvent() {
if(calendarUri == null) if(calendarUri == null)
return; return;

@ -38,6 +38,7 @@ import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TimePicker; import android.widget.TimePicker;
import android.widget.Toast;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.sql.QueryTemplate;
@ -157,6 +158,7 @@ public class NotificationFragment extends TaskListFragment implements OnTimeSetL
Task task = new Task(); Task task = new Task();
task.setId(taskId); task.setId(taskId);
PluginServices.getTaskService().setComplete(task, true); PluginServices.getTaskService().setComplete(task, true);
Toast.makeText(getActivity(), R.string.rmd_NoA_completed_toast, Toast.LENGTH_LONG).show();
getActivity().finish(); getActivity().finish();
} }
}); });

@ -5,9 +5,9 @@ import java.util.Date;
import android.app.Dialog; import android.app.Dialog;
import android.app.TimePickerDialog.OnTimeSetListener; import android.app.TimePickerDialog.OnTimeSetListener;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TimePicker; import android.widget.TimePicker;
import android.widget.Toast;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.utility.DateUtilities; 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.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.StatisticsService;
/**
* A dialog that shows your task reminder
*
* @author sbosley
*
*/
public class ReminderDialog extends Dialog {
public class ReminderDialog { public ReminderDialog(final AstridActivity activity, final long taskId, String title) {
super(activity, R.style.ReminderDialog);
public static void showReminderDialog(final AstridActivity activity, final long taskId, String title) {
final Dialog d = new Dialog(activity, R.style.ReminderDialog);
final SnoozeCallback dialogSnooze = new SnoozeCallback() { final SnoozeCallback dialogSnooze = new SnoozeCallback() {
@Override @Override
public void snoozeForTime(long time) { public void snoozeForTime(long time) {
@ -29,7 +34,7 @@ public class ReminderDialog {
task.setId(taskId); task.setId(taskId);
task.setValue(Task.REMINDER_SNOOZE, time); task.setValue(Task.REMINDER_SNOOZE, time);
PluginServices.getTaskService().save(task); PluginServices.getTaskService().save(task);
d.dismiss(); dismiss();
StatisticsService.reportEvent(StatisticsConstants.TASK_SNOOZE); StatisticsService.reportEvent(StatisticsConstants.TASK_SNOOZE);
} }
}; };
@ -44,47 +49,47 @@ public class ReminderDialog {
dialogSnooze.snoozeForTime(alarmTime.getTime()); dialogSnooze.snoozeForTime(alarmTime.getTime());
} }
}; };
d.setContentView(R.layout.astrid_reminder_view); setContentView(R.layout.astrid_reminder_view);
// set up listeners // set up listeners
d.findViewById(R.id.dismiss).setOnClickListener(new OnClickListener() { findViewById(R.id.dismiss).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View arg0) { 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 @Override
public void onClick(View arg0) { public void onClick(View arg0) {
NotificationFragment.snooze(activity, onTimeSet, dialogSnooze); NotificationFragment.snooze(activity, onTimeSet, dialogSnooze);
} }
}); });
d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() { findViewById(R.id.reminder_complete).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View arg0) { public void onClick(View arg0) {
Task task = new Task(); Task task = new Task();
task.setId(taskId); task.setId(taskId);
PluginServices.getTaskService().setComplete(task, true); 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 @Override
public void onClick(View v) { public void onClick(View v) {
d.dismiss(); dismiss();
activity.onTaskListItemClicked(taskId); activity.onTaskListItemClicked(taskId);
} }
}); });
((TextView) d.findViewById(R.id.reminder_title)).setText(title); ((TextView) findViewById(R.id.reminder_title)).setText(title);
((TextView) d.findViewById(R.id.reminder_message)).setText( ((TextView) findViewById(R.id.reminder_message)).setText(
Notifications.getRandomReminder(activity.getResources().getStringArray(R.array.reminder_responses))); Notifications.getRandomReminder(activity.getResources().getStringArray(R.array.reminder_responses)));
d.setOwnerActivity(activity); setOwnerActivity(activity);
d.show();
} }
} }

@ -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
}
}

@ -87,29 +87,6 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
context.sendOrderedBroadcast(broadcastIntent, null); context.sendOrderedBroadcast(broadcastIntent, null);
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
return; 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);
} }
} }

@ -54,8 +54,8 @@
<!-- Reminder: Snooze button (remind again later) --> <!-- Reminder: Snooze button (remind again later) -->
<string name="rmd_NoA_snooze">Snooze</string> <string name="rmd_NoA_snooze">Snooze</string>
<!-- Reminder: Cancel reminder --> <!-- Reminder: Completed Toast -->
<string name="rmd_NoA_goAway">Go Away!</string> <string name="rmd_NoA_completed_toast">Congratulations on finishing \'%s\'!</string>
<!-- ============================================= reminder preferences == --> <!-- ============================================= reminder preferences == -->
@ -308,7 +308,7 @@
<item>Lovely weather for a job like this, isn\'t it?</item> <item>Lovely weather for a job like this, isn\'t it?</item>
<item>A spot of tea while you work on this?</item> <item>A spot of tea while you work on this?</item>
<item>If only you had already done this, then you could go outside and play.</item> <item>If only you had already done this, then you could go outside and play.</item>
<item>It\s time. You can\t put off the inevitable.</item> <item>It\'s time. You can\'t put off the inevitable.</item>
<item>I die a little every time you ignore me.</item> <item>I die a little every time you ignore me.</item>
</string-array> </string-array>

@ -284,7 +284,7 @@ public class AstridActivity extends FragmentActivity
long taskId = customIntent.getLongExtra(NotificationFragment.TOKEN_ID, 0); long taskId = customIntent.getLongExtra(NotificationFragment.TOKEN_ID, 0);
if (taskId > 0) { if (taskId > 0) {
String text = intent.getStringExtra(Notifications.EXTRAS_TEXT); String text = intent.getStringExtra(Notifications.EXTRAS_TEXT);
ReminderDialog.showReminderDialog(AstridActivity.this, taskId, text); new ReminderDialog(AstridActivity.this, taskId, text).show();
} }
// Remove broadcast // Remove broadcast
@ -296,13 +296,18 @@ public class AstridActivity extends FragmentActivity
private class RepeatConfirmationReceiver extends BroadcastReceiver { private class RepeatConfirmationReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { 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) { if (taskId > 0) {
long oldDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); long oldDueDate = intent.getLongExtra(
long newDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0);
Task task = PluginServices.getTaskService().fetchById(taskId, DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES); long newDueDate = intent.getLongExtra(
AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0);
DateChangedAlerts.showRepeatTaskRescheduledDialog(AstridActivity.this, task, oldDueDate, newDueDate); Task task = PluginServices.getTaskService().fetchById(taskId,
DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES);
DateChangedAlerts.showRepeatTaskRescheduledDialog(
AstridActivity.this, task, oldDueDate, newDueDate);
} }
} }
} }

@ -52,8 +52,10 @@ public class DateChangedAlerts {
final long taskId = task.getId(); final long taskId = task.getId();
d.setContentView(R.layout.astrid_reminder_view); 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); 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)); ((TextView) d.findViewById(R.id.reminder_title)).setText(activity.getString(R.string.TLA_quickadd_confirm_title, originalText));
Spanned speechBubbleText = constructSpeechBubbleTextForQuickAdd(activity, task); Spanned speechBubbleText = constructSpeechBubbleTextForQuickAdd(activity, task);
@ -91,9 +93,12 @@ public class DateChangedAlerts {
final Dialog d = new Dialog(activity, R.style.ReminderDialog); final Dialog d = new Dialog(activity, R.style.ReminderDialog);
d.setContentView(R.layout.astrid_reminder_view); 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); 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);
((Button) d.findViewById(R.id.reminder_edit)).setText(R.string.DLG_undo); 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))); ((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); String oldDueDateString = getRelativeDateAndTimeString(activity, oldDueDate);
@ -105,7 +110,7 @@ public class DateChangedAlerts {
setupOkAndDismissButtons(d); setupOkAndDismissButtons(d);
setupHideCheckbox(d); setupHideCheckbox(d);
d.findViewById(R.id.reminder_edit).setOnClickListener(new OnClickListener() { undoButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
d.dismiss(); d.dismiss();
@ -162,17 +167,17 @@ public class DateChangedAlerts {
String title = task.getValue(Task.TITLE); String title = task.getValue(Task.TITLE);
long date = task.getValue(Task.DUE_DATE); long date = task.getValue(Task.DUE_DATE);
String dueDate = ""; String dueString = "";
if (!TextUtils.isEmpty(task.getValue(Task.RECURRENCE))) { if (!TextUtils.isEmpty(task.getValue(Task.RECURRENCE))) {
dueDate = getRecurrenceString(context, task); dueString = getRecurrenceString(context, task);
} }
if (TextUtils.isEmpty(dueDate)) { if (TextUtils.isEmpty(dueString)) {
dueDate = getRelativeDateAndTimeString(context, date); dueString = getRelativeDateAndTimeString(context, date);
} }
if (!TextUtils.isEmpty(dueDate)) if (!TextUtils.isEmpty(dueString))
dueDate = context.getString(R.string.TLA_quickadd_confirm_speech_bubble_date, dueDate); dueString = context.getString(R.string.TLA_quickadd_confirm_speech_bubble_date, dueString);
int priority = task.getValue(Task.IMPORTANCE); int priority = task.getValue(Task.IMPORTANCE);
if (priority >= priorityStrings.length) if (priority >= priorityStrings.length)
@ -181,18 +186,20 @@ public class DateChangedAlerts {
int color = context.getResources().getColor(colorsArray[priority]) - 0xff000000; int color = context.getResources().getColor(colorsArray[priority]) - 0xff000000;
priorityString = String.format("<font color=\"#%s\">%s</font>", Integer.toHexString(color), priorityString); priorityString = String.format("<font color=\"#%s\">%s</font>", 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); return Html.fromHtml(fullString);
} }
@SuppressWarnings("nls")
private static String getRelativeDateAndTimeString(Context context, long date) { 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)) 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))); DateUtilities.getTimeString(context, new Date(date)));
return dueDate; return dueString;
} }
@SuppressWarnings("nls")
private static String getRecurrenceString(Context context, Task task) { private static String getRecurrenceString(Context context, Task task) {
try { try {
RRule rrule = new RRule(task.getValue(Task.RECURRENCE)); RRule rrule = new RRule(task.getValue(Task.RECURRENCE));
@ -201,22 +208,30 @@ public class DateChangedAlerts {
R.array.repeat_interval); R.array.repeat_interval);
String frequency = ""; String frequency = "";
Frequency freq = rrule.getFreq(); Frequency freq = rrule.getFreq();
if (freq == Frequency.DAILY) { switch(freq) {
case DAILY:
frequency = dateAbbrev[0].toLowerCase(); frequency = dateAbbrev[0].toLowerCase();
} else if (freq == Frequency.WEEKLY) { break;
case WEEKLY:
frequency = dateAbbrev[1].toLowerCase(); frequency = dateAbbrev[1].toLowerCase();
} else if (freq == Frequency.MONTHLY) { break;
case MONTHLY:
frequency = dateAbbrev[2].toLowerCase(); frequency = dateAbbrev[2].toLowerCase();
} else if (freq == Frequency.HOURLY) { break;
case HOURLY:
frequency = dateAbbrev[3].toLowerCase(); frequency = dateAbbrev[3].toLowerCase();
} else if (freq == Frequency.MINUTELY) { break;
case MINUTELY:
frequency = dateAbbrev[4].toLowerCase(); frequency = dateAbbrev[4].toLowerCase();
} else if (freq == Frequency.YEARLY) { break;
case YEARLY:
frequency = dateAbbrev[5].toLowerCase(); frequency = dateAbbrev[5].toLowerCase();
} }
if (!TextUtils.isEmpty(frequency)) { if (!TextUtils.isEmpty(frequency)) {
String date = String.format("%s %s", rrule.getInterval(), frequency); //$NON-NLS-1$ 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) { } catch (ParseException e) {

Loading…
Cancel
Save