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

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

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

@ -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();
}
});

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

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

@ -54,8 +54,8 @@
<!-- Reminder: Snooze button (remind again later) -->
<string name="rmd_NoA_snooze">Snooze</string>
<!-- Reminder: Cancel reminder -->
<string name="rmd_NoA_goAway">Go Away!</string>
<!-- Reminder: Completed Toast -->
<string name="rmd_NoA_completed_toast">Congratulations on finishing \'%s\'!</string>
<!-- ============================================= reminder preferences == -->
@ -308,7 +308,7 @@
<item>Lovely weather for a job like this, isn\'t it?</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>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>
</string-array>

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

@ -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("<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);
}
@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) {

Loading…
Cancel
Save