Inject DateChangedAlerts

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

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

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

@ -44,7 +44,6 @@ import com.todoroo.astrid.tags.DeleteTagActivity;
import com.todoroo.astrid.tags.RenameTagActivity;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.ui.DateChangedAlerts;
import com.todoroo.astrid.ui.QuickAddBar;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags;
@ -375,7 +374,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
if (data != null) {
if (data.getParcelableExtra(TaskEditFragment.TOKEN_NEW_REPEATING_TASK) != null) {
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)) {
tagsChanged(true);

@ -5,9 +5,9 @@
*/
package com.todoroo.astrid.ui;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.text.Html;
import android.text.Spanned;
@ -24,11 +24,8 @@ import android.widget.TextView;
import com.google.ical.values.Frequency;
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.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
@ -38,9 +35,12 @@ import com.todoroo.astrid.ui.DateAndTimeDialog.DateAndTimeDialogListener;
import com.todoroo.astrid.utility.Flags;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import java.text.ParseException;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate;
/**
@ -51,17 +51,23 @@ import static org.tasks.date.DateTimeUtils.newDate;
public class DateChangedAlerts {
/** 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 */
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 */
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) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
public void showQuickAddMarkupDialog(final AstridActivity activity, Task task, String originalText) {
if (!preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return;
}
@ -95,8 +101,8 @@ public class DateChangedAlerts {
d.show();
}
public static void showRepeatChangedDialog(final AstridActivity activity, Task task) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
public void showRepeatChangedDialog(final Activity activity, Task task) {
if (!preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return;
}
@ -122,19 +128,9 @@ public class DateChangedAlerts {
d.show();
}
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,
public void showRepeatTaskRescheduledDialog(final GCalHelper gcalHelper, final TaskService taskService, final Activity activity, final Task task,
final long oldDueDate, final long newDueDate, final boolean lastTime) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
if (!preferences.getBoolean(PREF_SHOW_HELPERS, true)) {
return;
}
@ -222,7 +218,7 @@ public class DateChangedAlerts {
d.show();
}
private static void setupOkAndDismissButtons(final Dialog d) {
private void setupOkAndDismissButtons(final Dialog d) {
d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -237,8 +233,8 @@ public class DateChangedAlerts {
});
}
private static void setupHideCheckbox(final Dialog d) {
int numShows = getInt(PREF_NUM_HELPERS_SHOWN, 0);
private void setupHideCheckbox(final Dialog d) {
int numShows = preferences.getInt(PREF_NUM_HELPERS_SHOWN, 0);
numShows++;
if (numShows >= HIDE_CHECKBOX_AFTER_SHOWS) {
CheckBox checkbox = (CheckBox) d.findViewById(R.id.reminders_should_show);
@ -246,33 +242,14 @@ public class DateChangedAlerts {
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setBoolean(PREF_SHOW_HELPERS, !isChecked);
preferences.setBoolean(PREF_SHOW_HELPERS, !isChecked);
}
});
}
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();
preferences.setInt(PREF_NUM_HELPERS_SHOWN, numShows);
}
private static int getInt(String key, int defValue) {
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) {
private void setupDialogLayoutParams(Context context, Dialog d) {
LayoutParams params = d.getWindow().getAttributes();
params.width = LayoutParams.FILL_PARENT;
params.height = LayoutParams.WRAP_CONTENT;
@ -286,8 +263,7 @@ public class DateChangedAlerts {
}
private static Spanned constructSpeechBubbleTextForQuickAdd(Context context, Task task) {
private Spanned constructSpeechBubbleTextForQuickAdd(Context context, Task task) {
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 };
@ -319,12 +295,12 @@ public class DateChangedAlerts {
return Html.fromHtml(fullString);
}
private static String constructSpeechBubbleTextForRepeat(Context context, Task task) {
private String constructSpeechBubbleTextForRepeat(Context context, Task task) {
String recurrence = getRecurrenceString(context, task);
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) : "";
if(Task.hasDueTime(date)) {
dueString = String.format("%s at %s", dueString, //$NON-NLS-1$
@ -333,7 +309,7 @@ public class DateChangedAlerts {
return dueString;
}
private static String getRecurrenceString(Context context, Task task) {
private String getRecurrenceString(Context context, Task task) {
try {
RRule rrule = new RRule(task.sanitizedRecurrence());
@ -372,5 +348,4 @@ public class DateChangedAlerts {
}
return "";
}
}

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

Loading…
Cancel
Save