From 77116bfb232c93a3910713fd0c423812a093b96e Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 1 Apr 2016 14:11:47 -0500 Subject: [PATCH] Convert sort activity to dialog --- src/main/AndroidManifest.xml | 4 - .../astrid/activity/TaskListActivity.java | 17 ++++- .../astrid/activity/TaskListFragment.java | 17 ++--- .../SortDialog.java} | 75 ++++++++++++------- .../injection/BaseActivityComponent.java | 7 +- .../injection/DialogFragmentComponent.java | 3 + 6 files changed, 74 insertions(+), 49 deletions(-) rename src/main/java/org/tasks/{activities/SortActivity.java => dialogs/SortDialog.java} (71%) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index eb2a8f24a..146df2af5 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -111,10 +111,6 @@ android:theme="@style/TranslucentDialog" android:taskAffinity="" /> - - * */ -public class TaskListFragment extends InjectingListFragment implements SwipeRefreshLayout.OnRefreshListener, Toolbar.OnMenuItemClickListener { +public class TaskListFragment extends InjectingListFragment implements + SwipeRefreshLayout.OnRefreshListener, + Toolbar.OnMenuItemClickListener { public static TaskListFragment newTaskListFragment(Filter filter) { TaskListFragment fragment = new TaskListFragment(); @@ -109,12 +111,12 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr } private static final String EXTRA_FILTER = "extra_filter"; + private static final String FRAG_TAG_SORT_DIALOG = "frag_tag_sort_dialog"; public static final String TAG_TASKLIST_FRAGMENT = "tasklist_fragment"; //$NON-NLS-1$ public static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; private static final int REQUEST_EDIT_FILTER = 11544; - private static final int REQUEST_SORT = 11545; // --- activities @@ -337,9 +339,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr voiceInputAssistant.startVoiceRecognitionActivity(R.string.voice_create_prompt); return true; case R.id.menu_sort: - startActivityForResult(new Intent(getActivity(), SortActivity.class) {{ - putExtra(SortActivity.EXTRA_MANUAL_ENABLED, hasDraggableOption()); - }}, REQUEST_SORT); + SortDialog.newSortDialog(hasDraggableOption()).show(getFragmentManager(), FRAG_TAG_SORT_DIALOG); return true; case R.id.menu_show_hidden: item.setChecked(!item.isChecked()); @@ -741,11 +741,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr ((TaskListActivity) getActivity()).refreshNavigationDrawer(); broadcaster.refresh(); } - } else if (requestCode == REQUEST_SORT) { - if (resultCode == Activity.RESULT_OK) { - broadcaster.refresh(); - ((TaskListActivity) getActivity()).onFilterItemClicked(filter); - } } else { super.onActivityResult(requestCode, resultCode, data); } diff --git a/src/main/java/org/tasks/activities/SortActivity.java b/src/main/java/org/tasks/dialogs/SortDialog.java similarity index 71% rename from src/main/java/org/tasks/activities/SortActivity.java rename to src/main/java/org/tasks/dialogs/SortDialog.java index 474103181..f9b911730 100644 --- a/src/main/java/org/tasks/activities/SortActivity.java +++ b/src/main/java/org/tasks/dialogs/SortDialog.java @@ -1,5 +1,7 @@ -package org.tasks.activities; +package org.tasks.dialogs; +import android.app.Activity; +import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; @@ -9,9 +11,8 @@ import android.widget.Button; import com.todoroo.astrid.core.SortHelper; import org.tasks.R; -import org.tasks.dialogs.DialogBuilder; -import org.tasks.injection.ActivityComponent; -import org.tasks.injection.InjectingAppCompatActivity; +import org.tasks.injection.DialogFragmentComponent; +import org.tasks.injection.InjectingDialogFragment; import org.tasks.preferences.Preferences; import java.util.ArrayList; @@ -23,22 +24,39 @@ import timber.log.Timber; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; -public class SortActivity extends InjectingAppCompatActivity { +public class SortDialog extends InjectingDialogFragment { - public static final String EXTRA_MANUAL_ENABLED = "extra_manual_enabled"; + public static SortDialog newSortDialog(boolean manualEnabled) { + SortDialog sortDialog = new SortDialog(); + sortDialog.manualEnabled = manualEnabled; + return sortDialog; + } + + public interface SortDialogCallback { + void sortChanged(); + } + + private static final String EXTRA_MANUAL_ENABLED = "extra_manual_enabled"; + private static final String EXTRA_SELECTED_INDEX = "extra_selected_index"; @Inject Preferences preferences; @Inject DialogBuilder dialogBuilder; private boolean manualEnabled; - private AlertDialog alertDialog; private int selectedIndex; + private AlertDialog alertDialog; + private SortDialogCallback callback; @Override - protected void onCreate(Bundle savedInstanceState) { + public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - manualEnabled = getIntent().getBooleanExtra(EXTRA_MANUAL_ENABLED, false); + if (savedInstanceState != null) { + manualEnabled = savedInstanceState.getBoolean(EXTRA_MANUAL_ENABLED); + selectedIndex = savedInstanceState.getInt(EXTRA_SELECTED_INDEX); + } else { + selectedIndex = getIndex(preferences.getSortMode()); + } List items = new ArrayList<>(); @@ -52,7 +70,6 @@ public class SortActivity extends InjectingAppCompatActivity { items.add(getString(R.string.SSD_sort_alpha)); items.add(getString(R.string.SSD_sort_modified)); - selectedIndex = getIndex(preferences.getSortMode()); if (manualEnabled) { if (preferences.getBoolean(R.string.p_manual_sort, false)) { selectedIndex = 0; @@ -81,26 +98,27 @@ public class SortActivity extends InjectingAppCompatActivity { setSelection(true); } }) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }) - .setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - finish(); - } - }) + .setNegativeButton(android.R.string.cancel, null) .show(); enableReverse(); + + return alertDialog; } @Override - public void inject(ActivityComponent component) { - component.inject(this); + public void onAttach(Activity activity) { + super.onAttach(activity); + + callback = (SortDialogCallback) activity; + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + outState.putBoolean(EXTRA_MANUAL_ENABLED, manualEnabled); + outState.putInt(EXTRA_SELECTED_INDEX, selectedIndex); } private void enableReverse() { @@ -125,9 +143,7 @@ public class SortActivity extends InjectingAppCompatActivity { preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1)); } - setResult(RESULT_OK); - - finish(); + callback.sortChanged(); } private int getIndex(int sortMode) { @@ -165,4 +181,9 @@ public class SortActivity extends InjectingAppCompatActivity { Timber.e("Invalid sort mode: %s", index); return SortHelper.SORT_ALPHA; } + + @Override + protected void inject(DialogFragmentComponent component) { + component.inject(this); + } } diff --git a/src/main/java/org/tasks/injection/BaseActivityComponent.java b/src/main/java/org/tasks/injection/BaseActivityComponent.java index 0dfe2e6a1..734d6f9eb 100644 --- a/src/main/java/org/tasks/injection/BaseActivityComponent.java +++ b/src/main/java/org/tasks/injection/BaseActivityComponent.java @@ -3,7 +3,6 @@ package org.tasks.injection; import com.todoroo.astrid.actfm.FilterSettingsActivity; import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.activity.BeastModePreferences; -import org.tasks.widget.ShortcutConfigActivity; import com.todoroo.astrid.activity.ShareLinkActivity; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.core.CustomFilterActivity; @@ -13,7 +12,6 @@ import com.todoroo.astrid.files.AACRecordingActivity; import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.reminders.ReminderPreferences; import com.todoroo.astrid.service.UpgradeActivity; -import org.tasks.widget.WidgetConfigActivity; import org.tasks.activities.AddAttachmentActivity; import org.tasks.activities.CalendarSelectionActivity; @@ -30,7 +28,6 @@ import org.tasks.activities.FilterSelectionActivity; import org.tasks.activities.ImportTaskActivity; import org.tasks.activities.PurgeDeletedActivity; import org.tasks.activities.ResetPreferencesActivity; -import org.tasks.activities.SortActivity; import org.tasks.activities.TimePickerActivity; import org.tasks.files.FileExplore; import org.tasks.preferences.AppearancePreferences; @@ -43,6 +40,8 @@ import org.tasks.reminders.MissedCallActivity; import org.tasks.reminders.NotificationActivity; import org.tasks.reminders.SnoozeActivity; import org.tasks.voice.VoiceCommandActivity; +import org.tasks.widget.ShortcutConfigActivity; +import org.tasks.widget.WidgetConfigActivity; public interface BaseActivityComponent { @@ -80,8 +79,6 @@ public interface BaseActivityComponent { void inject(CalendarSelectionActivity calendarSelectionActivity); - void inject(SortActivity sortActivity); - void inject(DeleteAllCalendarEventsActivity deleteAllCalendarEventsActivity); void inject(DeleteCompletedEventsActivity deleteCompletedEventsActivity); diff --git a/src/main/java/org/tasks/injection/DialogFragmentComponent.java b/src/main/java/org/tasks/injection/DialogFragmentComponent.java index 102e80379..644fc2fcc 100644 --- a/src/main/java/org/tasks/injection/DialogFragmentComponent.java +++ b/src/main/java/org/tasks/injection/DialogFragmentComponent.java @@ -1,5 +1,6 @@ package org.tasks.injection; +import org.tasks.dialogs.SortDialog; import org.tasks.dialogs.ThemePickerDialog; import org.tasks.widget.WidgetConfigDialog; @@ -29,4 +30,6 @@ public interface DialogFragmentComponent { void inject(WidgetConfigDialog widgetConfigDialog); void inject(ThemePickerDialog themePickerDialog); + + void inject(SortDialog sortDialog); }