From a8958ac28794bb70619d9b194591d3af6dd45ecf Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 3 Jul 2015 00:39:07 -0500 Subject: [PATCH] AlertDialogs in popup control sets --- .../astrid/activity/TaskEditFragment.java | 10 +-- .../astrid/activity/TaskListFragment.java | 2 +- .../todoroo/astrid/adapter/TaskAdapter.java | 39 +++--------- .../todoroo/astrid/files/FilesControlSet.java | 4 +- .../astrid/gtasks/GtasksListFragment.java | 2 +- .../OrderedMetadataListFragmentHelper.java | 14 +++-- .../astrid/helper/TaskEditControlSetBase.java | 23 ------- .../astrid/repeats/RepeatControlSet.java | 26 ++++---- .../AstridOrderedListFragmentHelper.java | 13 ++-- .../astrid/subtasks/SubtasksListFragment.java | 4 +- .../subtasks/SubtasksTagListFragment.java | 4 +- .../todoroo/astrid/tags/TagsControlSet.java | 12 ++-- .../astrid/timers/TimerControlSet.java | 5 +- .../todoroo/astrid/ui/DeadlineControlSet.java | 29 +-------- .../todoroo/astrid/ui/PopupControlSet.java | 62 ++++++------------- src/main/res/layout/control_dialog_ok.xml | 18 ------ .../res/layout/control_set_files_dialog.xml | 1 - src/main/res/layout/control_set_repeat.xml | 21 ++----- src/main/res/layout/control_set_tag_list.xml | 3 +- .../res/layout/control_set_timers_dialog.xml | 3 +- .../layout/date_time_picker_no_shortcuts.xml | 6 -- src/main/res/layout/notes_view_dialog.xml | 37 ----------- 22 files changed, 94 insertions(+), 244 deletions(-) delete mode 100644 src/main/res/layout/control_dialog_ok.xml delete mode 100644 src/main/res/layout/notes_view_dialog.xml diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index e65a64661..79bf7fe06 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -351,11 +351,11 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { timerAction = new TimerActionControlSet(notificationManager, taskService, getActivity(), getView()); controls.add(timerAction); - TagsControlSet tagsControlSet = new TagsControlSet(metadataDao, tagDataDao, preferences, tagService, getActivity()); + TagsControlSet tagsControlSet = new TagsControlSet(metadataDao, tagDataDao, preferences, tagService, getActivity(), dialogBuilder); controls.add(tagsControlSet); controlSetMap.put(getString(R.string.TEA_ctrl_lists_pref), tagsControlSet); - RepeatControlSet repeatControls = new RepeatControlSet(preferences, getActivity()); + RepeatControlSet repeatControls = new RepeatControlSet(preferences, getActivity(), dialogBuilder); controlSetMap.put(getString(R.string.TEA_ctrl_repeat_pref), repeatControls); GCalControlSet gcalControl = new GCalControlSet(gcalHelper, getActivity()); @@ -367,7 +367,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { // deadline control, because // otherwise the correct date may not be written to the calendar event. // Order matters! - DeadlineControlSet deadlineControl = new DeadlineControlSet(preferences, getActivity()); + DeadlineControlSet deadlineControl = new DeadlineControlSet(preferences, getActivity(), dialogBuilder); controlSetMap.put(getString(R.string.TEA_ctrl_when_pref), deadlineControl); controls.add(repeatControls); @@ -397,12 +397,12 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { // TODO: Fix the fact that hideUntil doesn't update accordingly with date changes when lazy loaded. Until then, don't lazy load. hideUntilControls.getView(); - TimerControlSet timerControl = new TimerControlSet(preferences, getActivity()); + TimerControlSet timerControl = new TimerControlSet(preferences, getActivity(), dialogBuilder); timerAction.addListener(timerControl); controls.add(timerControl); controlSetMap.put(getString(R.string.TEA_ctrl_timer_pref), timerControl); - filesControlSet = new FilesControlSet(preferences, taskAttachmentDao, getActivity()); + filesControlSet = new FilesControlSet(preferences, taskAttachmentDao, getActivity(), dialogBuilder); controls.add(filesControlSet); controlSetMap.put(getString(R.string.TEA_ctrl_files_pref), filesControlSet); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index d34f1cbc3..85d39f8fc 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -627,7 +627,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr @Override public void onCompletedTask(Task item, boolean newState) { } - }); + }, dialogBuilder); } public static final String TAGS_METADATA_JOIN = "for_tags"; //$NON-NLS-1$ diff --git a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index 366b9d0fc..ed7ca6750 100644 --- a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -54,6 +54,7 @@ import com.todoroo.astrid.ui.CheckableImageView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; import java.util.Collections; @@ -145,6 +146,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { protected final Context context; protected final TaskListFragment fragment; + private DialogBuilder dialogBuilder; protected final Resources resources; protected final HashMap completedItems = new HashMap<>(0); protected OnCompletedTaskListener onCompletedTaskListener = null; @@ -164,7 +166,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { private final Map taskActionLoader = Collections.synchronizedMap(new HashMap()); public TaskAdapter(Context context, ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, TaskListFragment fragment, - Cursor c, AtomicReference query, OnCompletedTaskListener onCompletedTaskListener) { + Cursor c, AtomicReference query, OnCompletedTaskListener onCompletedTaskListener, DialogBuilder dialogBuilder) { super(context, c, false); this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; @@ -172,6 +174,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { this.context = context; this.query = query; this.fragment = fragment; + this.dialogBuilder = dialogBuilder; this.resources = fragment.getResources(); this.onCompletedTaskListener = onCompletedTaskListener; inflater = (LayoutInflater) fragment.getActivity().getSystemService( @@ -450,39 +453,15 @@ public class TaskAdapter extends CursorAdapter implements Filterable { return; } - int theme = preferences.getEditDialogTheme(); - final Dialog dialog = new Dialog(fragment.getActivity(), theme); - dialog.setTitle(R.string.TEA_note_label); - View notesView = LayoutInflater.from(fragment.getActivity()).inflate(R.layout.notes_view_dialog, null); - dialog.setContentView(notesView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); - - notesView.findViewById(R.id.edit_dlg_ok).setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - dialog.dismiss(); - } - }); - - final TextView notesField = (TextView) notesView.findViewById(R.id.notes); - notesField.setText(notes); - - LayoutParams params = dialog.getWindow().getAttributes(); - params.width = LayoutParams.FILL_PARENT; - params.height = LayoutParams.WRAP_CONTENT; - Configuration config = fragment.getResources().getConfiguration(); - int size = config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; - if (atLeastGingerbread() && size == Configuration.SCREENLAYOUT_SIZE_XLARGE) { - DisplayMetrics metrics = fragment.getResources().getDisplayMetrics(); - params.width = metrics.widthPixels / 2; - } - dialog.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); - - dialog.show(); + dialogBuilder.newDialog() + .setMessage(notes) + .setPositiveButton(android.R.string.ok, null) + .show(); } private void showFilesDialog(Task task) { FilesControlSet filesControlSet = new FilesControlSet(preferences, taskAttachmentDao, - fragment.getActivity()); + fragment.getActivity(), dialogBuilder); filesControlSet.readFromTask(task); filesControlSet.getView().performClick(); } diff --git a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java index d3256da41..527e9d37d 100644 --- a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -51,8 +51,8 @@ public class FilesControlSet extends PopupControlSet { private final DialogBuilder dialogBuilder; public FilesControlSet(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, - Activity activity) { - super(preferences, activity, R.layout.control_set_files_dialog, R.layout.control_set_files, R.string.TEA_control_files); + Activity activity, DialogBuilder dialogBuilder) { + super(preferences, activity, R.layout.control_set_files_dialog, R.layout.control_set_files, R.string.TEA_control_files, dialogBuilder); this.taskAttachmentDao = taskAttachmentDao; this.dialogBuilder = new DialogBuilder(activity, preferences); fileDisplayList = (LinearLayout) getView().findViewById(R.id.files_list); diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java index 5f121bd34..6a240a197 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -55,7 +55,7 @@ public class GtasksListFragment extends SubtasksListFragment { @Override protected OrderedListFragmentHelperInterface createFragmentHelper() { - return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater); + return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater, dialogBuilder); } @Override diff --git a/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java b/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java index 33ecf3c25..b7ef26d7c 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java +++ b/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java @@ -35,6 +35,7 @@ import com.todoroo.astrid.ui.DraggableListView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; import java.util.ArrayList; @@ -50,6 +51,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm private final DisplayMetrics metrics = new DisplayMetrics(); private final OrderedMetadataListUpdater updater; + private DialogBuilder dialogBuilder; private final TaskListFragment fragment; private final ActivityPreferences preferences; @@ -61,13 +63,17 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm private LIST list; - public OrderedMetadataListFragmentHelper(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, MetadataDao metadataDao, TaskListFragment fragment, OrderedMetadataListUpdater updater) { + public OrderedMetadataListFragmentHelper(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, + TaskService taskService, MetadataDao metadataDao, + TaskListFragment fragment, OrderedMetadataListUpdater updater, + DialogBuilder dialogBuilder) { this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; this.taskService = taskService; this.metadataDao = metadataDao; this.fragment = fragment; this.updater = updater; + this.dialogBuilder = dialogBuilder; } // --- ui component setup @@ -182,7 +188,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm public TaskAdapter createTaskAdapter(Context context, TodorooCursor cursor, AtomicReference sqlQueryTemplate) { - taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate); + taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder); taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { @Override @@ -197,8 +203,8 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm private final class DraggableTaskAdapter extends TaskAdapter { private DraggableTaskAdapter(Context context, ActivityPreferences preferences, TaskListFragment activity, - Cursor c, AtomicReference query) { - super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null); + Cursor c, AtomicReference query, DialogBuilder dialogBuilder) { + super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder); } @Override diff --git a/src/main/java/com/todoroo/astrid/helper/TaskEditControlSetBase.java b/src/main/java/com/todoroo/astrid/helper/TaskEditControlSetBase.java index ebb458783..3aa01b073 100644 --- a/src/main/java/com/todoroo/astrid/helper/TaskEditControlSetBase.java +++ b/src/main/java/com/todoroo/astrid/helper/TaskEditControlSetBase.java @@ -67,7 +67,6 @@ public abstract class TaskEditControlSetBase implements TaskEditControlSet { if (viewLayout != -1) { view = useTemplate ? inflateWithTemplate(viewLayout) : LayoutInflater.from(activity).inflate(viewLayout, null); afterInflate(); - setupOkButton(view); } if (model != null) { readFromTaskOnInitialize(); @@ -113,26 +112,4 @@ public abstract class TaskEditControlSetBase implements TaskEditControlSet { * Called when views need to be inflated */ protected abstract void afterInflate(); - - /** - * Sets up ok button background. Subclasses can override to customize look and feel - */ - protected void setupOkButton(View view) { - Button ok = (Button) view.findViewById(R.id.edit_dlg_ok); - Theme theme = activity.getTheme(); - TypedValue themeColor = new TypedValue(); - theme.resolveAttribute(R.attr.asThemeTextColor, themeColor, false); - TypedValue inverseColor = new TypedValue(); - theme.resolveAttribute(R.attr.asTextColorInverse, inverseColor, false); - - if (ok != null) { - ok.setBackgroundDrawable(EditDialogOkBackground.getBg(activity.getResources().getColor(themeColor.data))); - int[][] states = new int[2][]; - states[0] = new int[] { android.R.attr.state_pressed }; - states[1] = new int[] { android.R.attr.state_enabled }; - int[] colors = new int[] { inverseColor.data, activity.getResources().getColor(themeColor.data) }; - ColorStateList csl = new ColorStateList(states, colors); - ok.setTextColor(csl); - } - } } diff --git a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java index a4b270180..d87b908b6 100644 --- a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -8,6 +8,7 @@ package com.todoroo.astrid.repeats; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup.LayoutParams; @@ -37,6 +38,7 @@ import com.todoroo.astrid.ui.PopupControlSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; import java.text.DateFormatSymbols; @@ -93,8 +95,8 @@ public class RepeatControlSet extends PopupControlSet { // --- implementation - public RepeatControlSet(ActivityPreferences preferences, Activity activity) { - super(preferences, activity, R.layout.control_set_repeat, R.layout.control_set_repeat_display, R.string.repeat_enabled); + public RepeatControlSet(ActivityPreferences preferences, Activity activity, DialogBuilder dialogBuilder) { + super(preferences, activity, R.layout.control_set_repeat, R.layout.control_set_repeat_display, R.string.repeat_enabled, dialogBuilder); } /** Set up the repeat value button */ @@ -399,7 +401,6 @@ public class RepeatControlSet extends PopupControlSet { @Override protected Dialog buildDialog(String title, final PopupDialogClickListener okListener, final DialogInterface.OnCancelListener cancelListener) { - PopupDialogClickListener doRepeatButton = new PopupDialogClickListener() { @Override public boolean onClick(DialogInterface d, int which) { @@ -411,22 +412,25 @@ public class RepeatControlSet extends PopupControlSet { return okListener.onClick(d, which); } }; - final Dialog d = super.buildDialog(title, doRepeatButton, cancelListener); - View.OnClickListener dontRepeatButton = new View.OnClickListener() { + return super.buildDialog(title, doRepeatButton, cancelListener); + } + + @Override + protected void additionalDialogSetup(AlertDialog.Builder builder) { + super.additionalDialogSetup(builder); + + builder.setNeutralButton(R.string.repeat_dont, new DialogInterface.OnClickListener() { @Override - public void onClick(View view) { + public void onClick(DialogInterface dialog, int which) { doRepeat = false; refreshDisplayView(); - DialogUtilities.dismissDialog(activity, d); + dialog.dismiss(); for (RepeatChangedListener l : listeners) { l.repeatChanged(doRepeat); } } - }; - getDialogView().findViewById(R.id.edit_dont_repeat).setOnClickListener(dontRepeatButton); - - return d; + }); } } diff --git a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java index 53cfc75bc..86a538091 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java +++ b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java @@ -31,6 +31,7 @@ import com.todoroo.astrid.ui.DraggableListView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; import java.util.ArrayList; @@ -45,6 +46,7 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen private final DisplayMetrics metrics = new DisplayMetrics(); private final AstridOrderedListUpdater updater; + private DialogBuilder dialogBuilder; private final TaskListFragment fragment; private final ActivityPreferences preferences; private final TaskAttachmentDao taskAttachmentDao; @@ -54,12 +56,15 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen private LIST list; - public AstridOrderedListFragmentHelper(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, TaskListFragment fragment, AstridOrderedListUpdater updater) { + public AstridOrderedListFragmentHelper(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao, + TaskService taskService, TaskListFragment fragment, + AstridOrderedListUpdater updater, DialogBuilder dialogBuilder) { this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; this.taskService = taskService; this.fragment = fragment; this.updater = updater; + this.dialogBuilder = dialogBuilder; } // --- ui component setup @@ -172,7 +177,7 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen public TaskAdapter createTaskAdapter(Context context, TodorooCursor cursor, AtomicReference sqlQueryTemplate) { - taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate); + taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder); getTouchListView().setItemHightNormal(taskAdapter.computeFullRowHeight()); @@ -189,8 +194,8 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen private final class DraggableTaskAdapter extends TaskAdapter { private DraggableTaskAdapter(Context context, ActivityPreferences preferences, TaskListFragment activity, - Cursor c, AtomicReference query) { - super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null); + Cursor c, AtomicReference query, DialogBuilder dialogBuilder) { + super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder); } @Override diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java index f3ac3da74..379aec6c2 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java @@ -19,6 +19,7 @@ import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForApplication; import org.tasks.preferences.ActivityPreferences; @@ -41,6 +42,7 @@ public class SubtasksListFragment extends TaskListFragment { @Inject TaskAttachmentDao taskAttachmentDao; @Inject ActivityPreferences preferences; @Inject @ForApplication Context context; + @Inject DialogBuilder dialogBuilder; @Override public void onAttach(Activity activity) { @@ -50,7 +52,7 @@ public class SubtasksListFragment extends TaskListFragment { } protected OrderedListFragmentHelperInterface createFragmentHelper() { - return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater); + return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); } @Override diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java index 8a924ae6a..45116d91c 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java @@ -19,6 +19,7 @@ import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.service.TaskService; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForApplication; import org.tasks.preferences.ActivityPreferences; @@ -31,6 +32,7 @@ public class SubtasksTagListFragment extends TagViewFragment { @Inject TaskAttachmentDao taskAttachmentDao; @Inject ActivityPreferences preferences; @Inject @ForApplication Context context; + @Inject DialogBuilder dialogBuilder; private AstridOrderedListFragmentHelper helper; @@ -40,7 +42,7 @@ public class SubtasksTagListFragment extends TagViewFragment { public void onAttach(Activity activity) { super.onAttach(activity); - helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater); + helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); } @Override diff --git a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java index a4cb2458a..123a4a926 100644 --- a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java +++ b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java @@ -6,6 +6,7 @@ package com.todoroo.astrid.tags; import android.app.Activity; +import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -35,6 +36,7 @@ import com.todoroo.astrid.ui.PopupControlSet; import com.todoroo.astrid.utility.Flags; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; import java.util.ArrayList; @@ -70,8 +72,8 @@ public final class TagsControlSet extends PopupControlSet { private final TagDataDao tagDataDao; private final TagService tagService; - public TagsControlSet(MetadataDao metadataDao, TagDataDao tagDataDao, ActivityPreferences preferences, TagService tagService, Activity activity) { - super(preferences, activity, R.layout.control_set_tag_list, R.layout.control_set_tags, R.string.TEA_tags_label_long); + public TagsControlSet(MetadataDao metadataDao, TagDataDao tagDataDao, ActivityPreferences preferences, TagService tagService, Activity activity, DialogBuilder dialogBuilder) { + super(preferences, activity, R.layout.control_set_tag_list, R.layout.control_set_tags, R.string.TEA_tags_label_long, dialogBuilder); this.metadataDao = metadataDao; this.tagDataDao = tagDataDao; this.tagService = tagService; @@ -276,12 +278,6 @@ public final class TagsControlSet extends PopupControlSet { } } - @Override - protected void additionalDialogSetup() { - super.additionalDialogSetup(); - dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); - } - @Override protected void afterInflate() { TagData[] allTags = getTagArray(); diff --git a/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java b/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java index f40d56d71..a3e614b0c 100644 --- a/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java +++ b/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java @@ -19,6 +19,7 @@ import com.todoroo.astrid.ui.PopupControlSet; import com.todoroo.astrid.ui.TimeDurationControlSet; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; /** @@ -33,8 +34,8 @@ public class TimerControlSet extends PopupControlSet implements TimerActionListe private final TextView displayEdit; private ActivityPreferences preferences; - public TimerControlSet(ActivityPreferences preferences, final Activity activity) { - super(preferences, activity, R.layout.control_set_timers_dialog, R.layout.control_set_timers, R.string.TEA_timer_controls); + public TimerControlSet(ActivityPreferences preferences, final Activity activity, DialogBuilder dialogBuilder) { + super(preferences, activity, R.layout.control_set_timers_dialog, R.layout.control_set_timers, R.string.TEA_timer_controls, dialogBuilder); this.preferences = preferences; displayEdit = (TextView) getView().findViewById(R.id.display_row_edit); diff --git a/src/main/java/com/todoroo/astrid/ui/DeadlineControlSet.java b/src/main/java/com/todoroo/astrid/ui/DeadlineControlSet.java index 47bd91191..d07a5ffd7 100644 --- a/src/main/java/com/todoroo/astrid/ui/DeadlineControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/DeadlineControlSet.java @@ -7,29 +7,23 @@ package com.todoroo.astrid.ui; import android.app.Activity; import android.text.TextUtils; -import android.util.DisplayMetrics; import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.data.Task; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; public class DeadlineControlSet extends PopupControlSet { private DateAndTimePicker dateAndTimePicker; - public DeadlineControlSet(ActivityPreferences preferences, Activity activity) { - super(preferences, activity, R.layout.control_set_deadline_dialog, R.layout.control_set_deadline, 0); + public DeadlineControlSet(ActivityPreferences preferences, Activity activity, DialogBuilder dialogBuilder) { + super(preferences, activity, R.layout.control_set_deadline_dialog, R.layout.control_set_deadline, 0, dialogBuilder); } @Override @@ -63,23 +57,6 @@ public class DeadlineControlSet extends PopupControlSet { dateAndTimePicker = (DateAndTimePicker) getDialogView().findViewById(R.id.date_and_time); LinearLayout body = (LinearLayout) getDialogView().findViewById(R.id.datetime_body); body.setGravity(Gravity.CENTER_HORIZONTAL); - Button okButton = (Button) LayoutInflater.from(activity).inflate(R.layout.control_dialog_ok, null); - DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); - LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, (int) (45 * metrics.density)); - body.addView(okButton, params); - } - - @Override - protected void setupOkButton(View view) { - super.setupOkButton(view); - Button okButton = (Button) view.findViewById(R.id.edit_dlg_ok); - okButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - onOkClick(); - DialogUtilities.dismissDialog(DeadlineControlSet.this.activity, DeadlineControlSet.this.dialog); - } - }); } @Override diff --git a/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java b/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java index 2c086fea1..8542e2367 100644 --- a/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/PopupControlSet.java @@ -8,11 +8,11 @@ package com.todoroo.astrid.ui; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; import android.util.DisplayMetrics; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; -import android.view.Window; import android.widget.Button; import com.todoroo.andlib.utility.DialogUtilities; @@ -20,13 +20,15 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.TaskEditControlSetBase; import org.tasks.R; +import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.ActivityPreferences; public abstract class PopupControlSet extends TaskEditControlSetBase { protected final View displayView; protected final ActivityPreferences preferences; - protected Dialog dialog; + private DialogBuilder dialogBuilder; + protected AlertDialog dialog; private final String titleString; public interface PopupDialogClickListener { @@ -48,9 +50,11 @@ public abstract class PopupControlSet extends TaskEditControlSetBase { } }; - public PopupControlSet(ActivityPreferences preferences, Activity activity, int viewLayout, int taskEditViewLayout, final int title) { + public PopupControlSet(ActivityPreferences preferences, Activity activity, int viewLayout, + int taskEditViewLayout, final int title, DialogBuilder dialogBuilder) { super(activity, viewLayout, false); this.preferences = preferences; + this.dialogBuilder = dialogBuilder; if (taskEditViewLayout != -1) { this.displayView = inflateWithTemplate(taskEditViewLayout); } else { @@ -74,46 +78,20 @@ public abstract class PopupControlSet extends TaskEditControlSetBase { } protected Dialog buildDialog(String title, final PopupDialogClickListener okClickListener, DialogInterface.OnCancelListener cancelClickListener) { - dialog = new Dialog(activity, preferences.getEditDialogTheme()); - if (title.length() == 0) { - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - } else { - dialog.setTitle(title); - } - - View v = getDialogView(); - - dialog.setContentView(v, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); - Button dismiss = (Button) v.findViewById(R.id.edit_dlg_ok); - if (dismiss != null) { - dismiss.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View view) { - if (okClickListener.onClick(dialog, 0)) { - DialogUtilities.dismissDialog(activity, dialog); + AlertDialog.Builder builder = dialogBuilder.newDialog() + .setView(getDialogView()) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (okClickListener.onClick(dialog, 0)) { + dialog.dismiss(); + } } - } - }); - } - - LayoutParams params = dialog.getWindow().getAttributes(); - params.width = LayoutParams.FILL_PARENT; - params.height = LayoutParams.WRAP_CONTENT; - - if (ActivityPreferences.isTabletSized(activity)) { - DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); - if ((metrics.widthPixels / metrics.density) >= ActivityPreferences.MIN_TABLET_HEIGHT) { - params.width = (3 * metrics.widthPixels) / 5; - } else if ((metrics.widthPixels / metrics.density) >= ActivityPreferences.MIN_TABLET_WIDTH) { - params.width = (4 * metrics.widthPixels) / 5; - } - } - - dialog.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); + }) + .setOnCancelListener(cancelClickListener); - dialog.setOnCancelListener(cancelClickListener); - dialog.setOwnerActivity(PopupControlSet.this.activity); - additionalDialogSetup(); + additionalDialogSetup(builder); + dialog = builder.show(); return dialog; } @@ -129,7 +107,7 @@ public abstract class PopupControlSet extends TaskEditControlSetBase { }; } - protected void additionalDialogSetup() { + protected void additionalDialogSetup(AlertDialog.Builder builder) { // Will be called after dialog is set up. // Subclasses can override } diff --git a/src/main/res/layout/control_dialog_ok.xml b/src/main/res/layout/control_dialog_ok.xml deleted file mode 100644 index 4333e3d4f..000000000 --- a/src/main/res/layout/control_dialog_ok.xml +++ /dev/null @@ -1,18 +0,0 @@ - - -