Inject DateChangedAlerts

pull/189/head
Alex Baker 12 years ago
parent f645f21631
commit fe04383add

@ -18,6 +18,7 @@ import android.view.WindowManager.BadTokenException;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Toast; import android.widget.Toast;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
@ -87,6 +88,7 @@ public class AstridActivity extends InjectingActionBarActivity
@Inject StartupService startupService; @Inject StartupService startupService;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject DateChangedAlerts dateChangedAlerts;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -352,6 +354,15 @@ public class AstridActivity extends InjectingActionBarActivity
} }
private class RepeatConfirmationReceiver extends BroadcastReceiver { private class RepeatConfirmationReceiver extends BroadcastReceiver {
private final Property<?>[] REPEAT_RESCHEDULED_PROPERTIES =
new Property<?>[] {
Task.ID,
Task.TITLE,
Task.DUE_DATE,
Task.HIDE_UNTIL,
Task.REPEAT_UNTIL
};
@Override @Override
public void onReceive(Context context, final Intent intent) { public void onReceive(Context context, final Intent intent) {
long taskId = intent.getLongExtra( long taskId = intent.getLongExtra(
@ -362,11 +373,11 @@ public class AstridActivity extends InjectingActionBarActivity
AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0);
long newDueDate = intent.getLongExtra( long newDueDate = intent.getLongExtra(
AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0);
Task task = taskService.fetchById(taskId, DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES); Task task = taskService.fetchById(taskId, REPEAT_RESCHEDULED_PROPERTIES);
try { try {
boolean lastTime = AstridApiConstants.BROADCAST_EVENT_TASK_REPEAT_FINISHED.equals(intent.getAction()); boolean lastTime = AstridApiConstants.BROADCAST_EVENT_TASK_REPEAT_FINISHED.equals(intent.getAction());
DateChangedAlerts.showRepeatTaskRescheduledDialog( dateChangedAlerts.showRepeatTaskRescheduledDialog(
gcalHelper, taskService, AstridActivity.this, task, oldDueDate, newDueDate, lastTime); gcalHelper, taskService, AstridActivity.this, task, oldDueDate, newDueDate, lastTime);
} catch (BadTokenException e) { // Activity not running when tried to show dialog--rebroadcast } catch (BadTokenException e) { // Activity not running when tried to show dialog--rebroadcast

@ -182,6 +182,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
@Inject AlarmService alarmService; @Inject AlarmService alarmService;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject DateChangedAlerts dateChangedAlerts;
// --- UI components // --- UI components
@ -707,7 +708,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
// since the activity isn't actually finishing // since the activity isn't actually finishing
TaskListActivity tla = (TaskListActivity) getActivity(); TaskListActivity tla = (TaskListActivity) getActivity();
if (showRepeatAlert) { if (showRepeatAlert) {
DateChangedAlerts.showRepeatChangedDialog(tla, model); dateChangedAlerts.showRepeatChangedDialog(tla, model);
} }
if (tagsChanged) { if (tagsChanged) {

@ -44,7 +44,6 @@ import com.todoroo.astrid.tags.DeleteTagActivity;
import com.todoroo.astrid.tags.RenameTagActivity; import com.todoroo.astrid.tags.RenameTagActivity;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.ui.DateChangedAlerts;
import com.todoroo.astrid.ui.QuickAddBar; import com.todoroo.astrid.ui.QuickAddBar;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
@ -375,7 +374,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
if (data != null) { if (data != null) {
if (data.getParcelableExtra(TaskEditFragment.TOKEN_NEW_REPEATING_TASK) != null) { if (data.getParcelableExtra(TaskEditFragment.TOKEN_NEW_REPEATING_TASK) != null) {
Task repeating = data.getParcelableExtra(TaskEditFragment.TOKEN_NEW_REPEATING_TASK); Task repeating = data.getParcelableExtra(TaskEditFragment.TOKEN_NEW_REPEATING_TASK);
DateChangedAlerts.showRepeatChangedDialog(this, repeating); dateChangedAlerts.showRepeatChangedDialog(this, repeating);
} }
if (data.getBooleanExtra(TaskEditFragment.TOKEN_TAGS_CHANGED, false)) { if (data.getBooleanExtra(TaskEditFragment.TOKEN_TAGS_CHANGED, false)) {
tagsChanged(true); tagsChanged(true);

@ -5,9 +5,9 @@
*/ */
package com.todoroo.astrid.ui; package com.todoroo.astrid.ui;
import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.text.Html; import android.text.Html;
import android.text.Spanned; import android.text.Spanned;
@ -24,11 +24,8 @@ import android.widget.TextView;
import com.google.ical.values.Frequency; import com.google.ical.values.Frequency;
import com.google.ical.values.RRule; import com.google.ical.values.RRule;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
@ -38,9 +35,12 @@ import com.todoroo.astrid.ui.DateAndTimeDialog.DateAndTimeDialogListener;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences;
import java.text.ParseException; import java.text.ParseException;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDate;
/** /**
@ -51,17 +51,23 @@ import static org.tasks.date.DateTimeUtils.newDate;
public class DateChangedAlerts { public class DateChangedAlerts {
/** Preference key for how many of these helper dialogs we've shown */ /** Preference key for how many of these helper dialogs we've shown */
public static final String PREF_NUM_HELPERS_SHOWN = "pref_num_date_helpers"; //$NON-NLS-1$ private static final String PREF_NUM_HELPERS_SHOWN = "pref_num_date_helpers"; //$NON-NLS-1$
/** Preference key for whether or not we should show such dialogs */ /** Preference key for whether or not we should show such dialogs */
public static final int PREF_SHOW_HELPERS = R.string.p_showSmartConfirmation_key; private static final int PREF_SHOW_HELPERS = R.string.p_showSmartConfirmation_key;
/** Start showing the option to hide future notifs after this many confirmation dialogs */ /** Start showing the option to hide future notifs after this many confirmation dialogs */
public static final int HIDE_CHECKBOX_AFTER_SHOWS = 3; private static final int HIDE_CHECKBOX_AFTER_SHOWS = 3;
private final Preferences preferences;
@Inject
public DateChangedAlerts(Preferences preferences) {
this.preferences = preferences;
}
public static void showQuickAddMarkupDialog(final AstridActivity activity, Task task, String originalText) { public void showQuickAddMarkupDialog(final AstridActivity activity, Task task, String originalText) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) { if (!preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return; return;
} }
@ -95,8 +101,8 @@ public class DateChangedAlerts {
d.show(); d.show();
} }
public static void showRepeatChangedDialog(final AstridActivity activity, Task task) { public void showRepeatChangedDialog(final Activity activity, Task task) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) { if (!preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return; return;
} }
@ -122,19 +128,9 @@ public class DateChangedAlerts {
d.show(); d.show();
} }
public void showRepeatTaskRescheduledDialog(final GCalHelper gcalHelper, final TaskService taskService, final Activity activity, final Task task,
public static final Property<?>[] REPEAT_RESCHEDULED_PROPERTIES =
new Property<?>[] {
Task.ID,
Task.TITLE,
Task.DUE_DATE,
Task.HIDE_UNTIL,
Task.REPEAT_UNTIL
};
public static void showRepeatTaskRescheduledDialog(final GCalHelper gcalHelper, final TaskService taskService, final AstridActivity activity, final Task task,
final long oldDueDate, final long newDueDate, final boolean lastTime) { final long oldDueDate, final long newDueDate, final boolean lastTime) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) { if (!preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return; return;
} }
@ -222,7 +218,7 @@ public class DateChangedAlerts {
d.show(); d.show();
} }
private static void setupOkAndDismissButtons(final Dialog d) { private void setupOkAndDismissButtons(final Dialog d) {
d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() { d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -237,8 +233,8 @@ public class DateChangedAlerts {
}); });
} }
private static void setupHideCheckbox(final Dialog d) { private void setupHideCheckbox(final Dialog d) {
int numShows = getInt(PREF_NUM_HELPERS_SHOWN, 0); int numShows = preferences.getInt(PREF_NUM_HELPERS_SHOWN, 0);
numShows++; numShows++;
if (numShows >= HIDE_CHECKBOX_AFTER_SHOWS) { if (numShows >= HIDE_CHECKBOX_AFTER_SHOWS) {
CheckBox checkbox = (CheckBox) d.findViewById(R.id.reminders_should_show); CheckBox checkbox = (CheckBox) d.findViewById(R.id.reminders_should_show);
@ -246,33 +242,14 @@ public class DateChangedAlerts {
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() { checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setBoolean(PREF_SHOW_HELPERS, !isChecked); preferences.setBoolean(PREF_SHOW_HELPERS, !isChecked);
} }
}); });
} }
setInt(PREF_NUM_HELPERS_SHOWN, numShows); preferences.setInt(PREF_NUM_HELPERS_SHOWN, numShows);
}
private static void setBoolean(int keyResource, boolean value) {
Context context = ContextManager.getContext();
SharedPreferences.Editor editor = Preferences.getPrefs(context).edit();
editor.putBoolean(context.getString(keyResource), value);
editor.commit();
} }
private static int getInt(String key, int defValue) { private void setupDialogLayoutParams(Context context, Dialog d) {
Context context = ContextManager.getContext();
return Preferences.getPrefs(context).getInt(key, defValue);
}
private static void setInt(String key, int value) {
Context context = ContextManager.getContext();
SharedPreferences.Editor editor = Preferences.getPrefs(context).edit();
editor.putInt(key, value);
editor.commit();
}
private static void setupDialogLayoutParams(Context context, Dialog d) {
LayoutParams params = d.getWindow().getAttributes(); LayoutParams params = d.getWindow().getAttributes();
params.width = LayoutParams.FILL_PARENT; params.width = LayoutParams.FILL_PARENT;
params.height = LayoutParams.WRAP_CONTENT; params.height = LayoutParams.WRAP_CONTENT;
@ -286,8 +263,7 @@ public class DateChangedAlerts {
} }
private Spanned constructSpeechBubbleTextForQuickAdd(Context context, Task task) {
private static Spanned constructSpeechBubbleTextForQuickAdd(Context context, Task task) {
String[] priorityStrings = context.getResources().getStringArray(R.array.TLA_priority_strings); String[] priorityStrings = context.getResources().getStringArray(R.array.TLA_priority_strings);
int[] colorsArray = new int[] { R.color.importance_1, R.color.importance_2, R.color.importance_3, R.color.importance_4 }; int[] colorsArray = new int[] { R.color.importance_1, R.color.importance_2, R.color.importance_3, R.color.importance_4 };
@ -319,12 +295,12 @@ public class DateChangedAlerts {
return Html.fromHtml(fullString); return Html.fromHtml(fullString);
} }
private static String constructSpeechBubbleTextForRepeat(Context context, Task task) { private String constructSpeechBubbleTextForRepeat(Context context, Task task) {
String recurrence = getRecurrenceString(context, task); String recurrence = getRecurrenceString(context, task);
return context.getString(R.string.TLA_repeat_scheduled_speech_bubble, recurrence); return context.getString(R.string.TLA_repeat_scheduled_speech_bubble, recurrence);
} }
private static String getRelativeDateAndTimeString(Context context, long date) { private String getRelativeDateAndTimeString(Context context, long date) {
String dueString = date > 0 ? DateUtilities.getRelativeDay(context, date, false) : ""; String dueString = date > 0 ? DateUtilities.getRelativeDay(context, date, false) : "";
if(Task.hasDueTime(date)) { if(Task.hasDueTime(date)) {
dueString = String.format("%s at %s", dueString, //$NON-NLS-1$ dueString = String.format("%s at %s", dueString, //$NON-NLS-1$
@ -333,7 +309,7 @@ public class DateChangedAlerts {
return dueString; return dueString;
} }
private static String getRecurrenceString(Context context, Task task) { private String getRecurrenceString(Context context, Task task) {
try { try {
RRule rrule = new RRule(task.sanitizedRecurrence()); RRule rrule = new RRule(task.sanitizedRecurrence());
@ -372,5 +348,4 @@ public class DateChangedAlerts {
} }
return ""; return "";
} }
} }

@ -78,6 +78,7 @@ public class QuickAddBar extends LinearLayout {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject GCalHelper gcalHelper; @Inject GCalHelper gcalHelper;
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject DateChangedAlerts dateChangedAlerts;
private VoiceRecognizer voiceRecognizer; private VoiceRecognizer voiceRecognizer;
@ -336,12 +337,12 @@ public class QuickAddBar extends LinearLayout {
return task; return task;
} }
private static void showAlertForMarkupTask(AstridActivity activity, Task task, String originalText) { private void showAlertForMarkupTask(AstridActivity activity, Task task, String originalText) {
DateChangedAlerts.showQuickAddMarkupDialog(activity, task, originalText); dateChangedAlerts.showQuickAddMarkupDialog(activity, task, originalText);
} }
private static void showAlertForRepeatingTask(AstridActivity activity, Task task) { private void showAlertForRepeatingTask(AstridActivity activity, Task task) {
DateChangedAlerts.showRepeatChangedDialog(activity, task); dateChangedAlerts.showRepeatChangedDialog(activity, task);
} }
// --- instance methods // --- instance methods

Loading…
Cancel
Save