Preference so that smart reminder confirmations can be turned on and off

pull/14/head
Sam Bosley 13 years ago
parent 818487e693
commit 52eff1ff66

@ -20,7 +20,7 @@ import com.todoroo.astrid.service.StatisticsService;
public class ReminderDialog {
public static Dialog createReminderDialog(final AstridActivity activity, final long taskId, String title) {
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() {
@Override
@ -83,7 +83,8 @@ public class ReminderDialog {
((TextView) d.findViewById(R.id.reminder_message)).setText(
Notifications.getRandomReminder(activity.getResources().getStringArray(R.array.reminder_responses)));
return d;
d.setOwnerActivity(activity);
d.show();
}
}

@ -34,6 +34,15 @@
<include layout="@layout/astrid_speech_bubble"/>
<CheckBox
android:id="@+id/reminders_should_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginBottom="10dip"
android:text="@string/TLA_quickadd_confirm_hide_helpers"
android:visibility="gone"/>
<Button
android:id="@+id/reminder_edit"
android:layout_width="fill_parent"

@ -196,6 +196,8 @@
<item>36</item>
<item>48</item>
</string-array>
<string name="p_showSmartConfirmation_key">showSmartConfirmation</string>
<!-- ========================================================= DEFAULTS == -->

@ -158,6 +158,8 @@
<string name="TLA_quickadd_confirm_speech_bubble_date">for %s</string>
<string name="TLA_quickadd_confirm_hide_helpers">Don\'t display future confirmations</string>
<string-array name="TLA_priority_strings">
<item>highest priority</item>
<item>high priority</item>
@ -447,6 +449,10 @@
<!-- Preference: Task List Font Size Title -->
<string name="EPr_fontSize_title">Task List Size</string>
<!-- Preference: Show confirmation for smart reminders -->
<string name="EPr_showSmartConfirmation_title">Show confirmation for smart reminders</string>
<!-- Preference: Task List Font Size Description -->
<string name="EPr_fontSize_desc">Font size on the main listing page</string>

@ -21,6 +21,11 @@
android:key="@string/p_showNotes"
android:title="@string/EPr_showNotes_title"
android:defaultValue="false" />
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_showSmartConfirmation_key"
android:title="@string/EPr_showSmartConfirmation_title"
android:defaultValue="true"/>
<com.todoroo.astrid.ui.MultilineListPreference
android:key="@string/p_theme"
@ -29,6 +34,11 @@
android:title="@string/EPr_theme_title" />
</PreferenceCategory>
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_statistics"
android:title="@string/EPr_statistics_title"
android:defaultValue="true" />
<PreferenceCategory
android:title="@string/EPr_powerpack_header">
<PreferenceScreen
@ -51,9 +61,5 @@
</PreferenceScreen>
</PreferenceCategory>
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_statistics"
android:title="@string/EPr_statistics_title"
android:defaultValue="true" />
</PreferenceScreen>

@ -1,6 +1,5 @@
package com.todoroo.astrid.activity;
import android.app.Dialog;
import android.app.PendingIntent.CanceledException;
import android.content.BroadcastReceiver;
import android.content.Context;
@ -285,9 +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);
Dialog d = ReminderDialog.createReminderDialog(AstridActivity.this, taskId, text);
d.setOwnerActivity(AstridActivity.this);
d.show();
ReminderDialog.showReminderDialog(AstridActivity.this, taskId, text);
}
// Remove broadcast
@ -305,10 +302,7 @@ public class AstridActivity extends FragmentActivity
long newDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0);
Task task = PluginServices.getTaskService().fetchById(taskId, DateChangedAlerts.REPEAT_RESCHEDULED_PROPERTIES);
Dialog d = DateChangedAlerts.createRepeatTaskRescheduledDialog(AstridActivity.this, task, oldDueDate, newDueDate);
d.setOwnerActivity(AstridActivity.this);
d.show();
// Do some stuff
DateChangedAlerts.showRepeatTaskRescheduledDialog(AstridActivity.this, task, oldDueDate, newDueDate);
}
}
}

@ -13,7 +13,6 @@ import org.weloveastrid.rmilk.MilkUtilities;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.PendingIntent.CanceledException;
import android.app.SearchManager;
import android.content.BroadcastReceiver;
@ -1190,8 +1189,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
}
private static void showAlertForMarkupTask(AstridActivity activity, Task task, String originalText) {
Dialog d = DateChangedAlerts.createQuickAddMarkupDialog(activity, task, originalText);
d.show();
DateChangedAlerts.showQuickAddMarkupDialog(activity, task, originalText);
}
@Override

@ -11,6 +11,9 @@ import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import com.google.ical.values.Frequency;
@ -18,6 +21,7 @@ import com.google.ical.values.RRule;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task;
@ -30,7 +34,20 @@ import com.todoroo.astrid.utility.Flags;
*/
public class DateChangedAlerts {
public static Dialog createQuickAddMarkupDialog(final AstridActivity activity, Task task, String originalText) {
/** 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$
/** Preference key for whether or not we should show such dialogs */
public 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;
public static void showQuickAddMarkupDialog(final AstridActivity activity, Task task, String originalText) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true))
return;
final Dialog d = new Dialog(activity, R.style.ReminderDialog);
final long taskId = task.getId();
d.setContentView(R.layout.astrid_reminder_view);
@ -43,18 +60,9 @@ public class DateChangedAlerts {
((TextView) d.findViewById(R.id.reminder_message)).setText(speechBubbleText, TextView.BufferType.SPANNABLE);
d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
d.findViewById(R.id.dismiss).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
setupOkAndDismissButtons(d);
setupHideCheckbox(d);
d.findViewById(R.id.reminder_edit).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -63,7 +71,8 @@ public class DateChangedAlerts {
}
});
return d;
d.setOwnerActivity(activity);
d.show();
}
@ -75,7 +84,10 @@ public class DateChangedAlerts {
Task.HIDE_UNTIL
};
public static Dialog createRepeatTaskRescheduledDialog(final AstridActivity activity, final Task task, final long oldDueDate, final long newDueDate) {
public static void showRepeatTaskRescheduledDialog(final AstridActivity activity, final Task task, final long oldDueDate, final long newDueDate) {
if (!Preferences.getBoolean(PREF_SHOW_HELPERS, true))
return;
final Dialog d = new Dialog(activity, R.style.ReminderDialog);
d.setContentView(R.layout.astrid_reminder_view);
@ -90,35 +102,56 @@ public class DateChangedAlerts {
((TextView) d.findViewById(R.id.reminder_message)).setText(speechBubbleText);
d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() {
setupOkAndDismissButtons(d);
setupHideCheckbox(d);
d.findViewById(R.id.reminder_edit).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
task.setValue(Task.DUE_DATE, oldDueDate);
long hideUntil = task.getValue(Task.HIDE_UNTIL);
if (hideUntil > 0)
task.setValue(Task.HIDE_UNTIL, hideUntil - (newDueDate - oldDueDate));
PluginServices.getTaskService().save(task);
Flags.set(Flags.REFRESH);
}
});
d.findViewById(R.id.dismiss).setOnClickListener(new OnClickListener() {
d.setOwnerActivity(activity);
d.show();
}
private static void setupOkAndDismissButtons(final Dialog d) {
d.findViewById(R.id.reminder_complete).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
d.findViewById(R.id.reminder_edit).setOnClickListener(new OnClickListener() {
d.findViewById(R.id.dismiss).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
task.setValue(Task.DUE_DATE, oldDueDate);
long hideUntil = task.getValue(Task.HIDE_UNTIL);
if (hideUntil > 0)
task.setValue(Task.HIDE_UNTIL, hideUntil - (newDueDate - oldDueDate));
PluginServices.getTaskService().save(task);
Flags.set(Flags.REFRESH);
}
});
return d;
}
private static 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);
checkbox.setVisibility(View.VISIBLE);
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Preferences.setBoolean(PREF_SHOW_HELPERS, !isChecked);
}
});
}
Preferences.setInt(PREF_NUM_HELPERS_SHOWN, numShows);
}
@SuppressWarnings("nls")

Loading…
Cancel
Save