Convert sort activity to dialog

pull/384/head
Alex Baker 10 years ago
parent b8110a9963
commit 77116bfb23

@ -111,10 +111,6 @@
android:theme="@style/TranslucentDialog" android:theme="@style/TranslucentDialog"
android:taskAffinity="" /> android:taskAffinity="" />
<activity
android:name=".activities.SortActivity"
android:theme="@style/TranslucentDialog" />
<activity <activity
android:name=".activities.FilterSelectionActivity" android:name=".activities.FilterSelectionActivity"
android:exported="true" android:exported="true"

@ -40,12 +40,13 @@ import com.todoroo.astrid.subtasks.SubtasksListFragment;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment; import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.timers.TimerControlSet; import com.todoroo.astrid.timers.TimerControlSet;
import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.SortDialog;
import org.tasks.fragments.CommentBarFragment; import org.tasks.fragments.CommentBarFragment;
import org.tasks.fragments.TaskEditControlSetFragmentManager; import org.tasks.fragments.TaskEditControlSetFragmentManager;
import org.tasks.injection.ActivityComponent; import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -72,7 +73,8 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
TimerControlSet.TimerControlSetCallback, TimerControlSet.TimerControlSetCallback,
RepeatControlSet.RepeatChangedListener, RepeatControlSet.RepeatChangedListener,
TaskEditFragment.TaskEditFragmentCallbackHandler, TaskEditFragment.TaskEditFragmentCallbackHandler,
CommentBarFragment.CommentBarFragmentCallback { CommentBarFragment.CommentBarFragmentCallback,
SortDialog.SortDialogCallback {
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject StartupService startupService; @Inject StartupService startupService;
@ -84,6 +86,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
@Inject GtasksListService gtasksListService; @Inject GtasksListService gtasksListService;
@Inject TagDataDao tagDataDao; @Inject TagDataDao tagDataDao;
@Inject ThemeApplicator themeApplicator; @Inject ThemeApplicator themeApplicator;
@Inject Broadcaster broadcaster;
public static final int REQUEST_UPGRADE = 505; public static final int REQUEST_UPGRADE = 505;
@ -469,4 +472,14 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
taskEditFragment.addComment(message, actionCode, picture); taskEditFragment.addComment(message, actionCode, picture);
} }
} }
@Override
public void sortChanged() {
broadcaster.refresh();
reloadCurrentFilter();
}
void reloadCurrentFilter() {
onFilterItemClicked(getTaskListFragment().filter);
}
} }

@ -72,7 +72,7 @@ import com.todoroo.astrid.voice.VoiceInputAssistant;
import org.tasks.Broadcaster; import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.activities.SortActivity; import org.tasks.dialogs.SortDialog;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.injection.FragmentComponent; import org.tasks.injection.FragmentComponent;
@ -100,7 +100,9 @@ import static com.todoroo.astrid.voice.VoiceInputAssistant.voiceInputAvailable;
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
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) { public static TaskListFragment newTaskListFragment(Filter filter) {
TaskListFragment fragment = new TaskListFragment(); 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 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 String TAG_TASKLIST_FRAGMENT = "tasklist_fragment"; //$NON-NLS-1$
public static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; public static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;
private static final int REQUEST_EDIT_FILTER = 11544; private static final int REQUEST_EDIT_FILTER = 11544;
private static final int REQUEST_SORT = 11545;
// --- activities // --- activities
@ -337,9 +339,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
voiceInputAssistant.startVoiceRecognitionActivity(R.string.voice_create_prompt); voiceInputAssistant.startVoiceRecognitionActivity(R.string.voice_create_prompt);
return true; return true;
case R.id.menu_sort: case R.id.menu_sort:
startActivityForResult(new Intent(getActivity(), SortActivity.class) {{ SortDialog.newSortDialog(hasDraggableOption()).show(getFragmentManager(), FRAG_TAG_SORT_DIALOG);
putExtra(SortActivity.EXTRA_MANUAL_ENABLED, hasDraggableOption());
}}, REQUEST_SORT);
return true; return true;
case R.id.menu_show_hidden: case R.id.menu_show_hidden:
item.setChecked(!item.isChecked()); item.setChecked(!item.isChecked());
@ -741,11 +741,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
((TaskListActivity) getActivity()).refreshNavigationDrawer(); ((TaskListActivity) getActivity()).refreshNavigationDrawer();
broadcaster.refresh(); broadcaster.refresh();
} }
} else if (requestCode == REQUEST_SORT) {
if (resultCode == Activity.RESULT_OK) {
broadcaster.refresh();
((TaskListActivity) getActivity()).onFilterItemClicked(filter);
}
} else { } else {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
} }

@ -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.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
@ -9,9 +11,8 @@ import android.widget.Button;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.ActivityComponent; import org.tasks.injection.InjectingDialogFragment;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,22 +24,39 @@ import timber.log.Timber;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; 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 Preferences preferences;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
private boolean manualEnabled; private boolean manualEnabled;
private AlertDialog alertDialog;
private int selectedIndex; private int selectedIndex;
private AlertDialog alertDialog;
private SortDialogCallback callback;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(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<String> items = new ArrayList<>(); List<String> 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_alpha));
items.add(getString(R.string.SSD_sort_modified)); items.add(getString(R.string.SSD_sort_modified));
selectedIndex = getIndex(preferences.getSortMode());
if (manualEnabled) { if (manualEnabled) {
if (preferences.getBoolean(R.string.p_manual_sort, false)) { if (preferences.getBoolean(R.string.p_manual_sort, false)) {
selectedIndex = 0; selectedIndex = 0;
@ -81,26 +98,27 @@ public class SortActivity extends InjectingAppCompatActivity {
setSelection(true); setSelection(true);
} }
}) })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, null)
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
})
.show(); .show();
enableReverse(); enableReverse();
return alertDialog;
} }
@Override @Override
public void inject(ActivityComponent component) { public void onAttach(Activity activity) {
component.inject(this); 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() { private void enableReverse() {
@ -125,9 +143,7 @@ public class SortActivity extends InjectingAppCompatActivity {
preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1)); preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1));
} }
setResult(RESULT_OK); callback.sortChanged();
finish();
} }
private int getIndex(int sortMode) { private int getIndex(int sortMode) {
@ -165,4 +181,9 @@ public class SortActivity extends InjectingAppCompatActivity {
Timber.e("Invalid sort mode: %s", index); Timber.e("Invalid sort mode: %s", index);
return SortHelper.SORT_ALPHA; return SortHelper.SORT_ALPHA;
} }
@Override
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
} }

@ -3,7 +3,6 @@ package org.tasks.injection;
import com.todoroo.astrid.actfm.FilterSettingsActivity; import com.todoroo.astrid.actfm.FilterSettingsActivity;
import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagSettingsActivity;
import com.todoroo.astrid.activity.BeastModePreferences; import com.todoroo.astrid.activity.BeastModePreferences;
import org.tasks.widget.ShortcutConfigActivity;
import com.todoroo.astrid.activity.ShareLinkActivity; import com.todoroo.astrid.activity.ShareLinkActivity;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.core.CustomFilterActivity; 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.gcal.CalendarReminderActivity;
import com.todoroo.astrid.reminders.ReminderPreferences; import com.todoroo.astrid.reminders.ReminderPreferences;
import com.todoroo.astrid.service.UpgradeActivity; import com.todoroo.astrid.service.UpgradeActivity;
import org.tasks.widget.WidgetConfigActivity;
import org.tasks.activities.AddAttachmentActivity; import org.tasks.activities.AddAttachmentActivity;
import org.tasks.activities.CalendarSelectionActivity; import org.tasks.activities.CalendarSelectionActivity;
@ -30,7 +28,6 @@ import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.ImportTaskActivity; import org.tasks.activities.ImportTaskActivity;
import org.tasks.activities.PurgeDeletedActivity; import org.tasks.activities.PurgeDeletedActivity;
import org.tasks.activities.ResetPreferencesActivity; import org.tasks.activities.ResetPreferencesActivity;
import org.tasks.activities.SortActivity;
import org.tasks.activities.TimePickerActivity; import org.tasks.activities.TimePickerActivity;
import org.tasks.files.FileExplore; import org.tasks.files.FileExplore;
import org.tasks.preferences.AppearancePreferences; import org.tasks.preferences.AppearancePreferences;
@ -43,6 +40,8 @@ import org.tasks.reminders.MissedCallActivity;
import org.tasks.reminders.NotificationActivity; import org.tasks.reminders.NotificationActivity;
import org.tasks.reminders.SnoozeActivity; import org.tasks.reminders.SnoozeActivity;
import org.tasks.voice.VoiceCommandActivity; import org.tasks.voice.VoiceCommandActivity;
import org.tasks.widget.ShortcutConfigActivity;
import org.tasks.widget.WidgetConfigActivity;
public interface BaseActivityComponent { public interface BaseActivityComponent {
@ -80,8 +79,6 @@ public interface BaseActivityComponent {
void inject(CalendarSelectionActivity calendarSelectionActivity); void inject(CalendarSelectionActivity calendarSelectionActivity);
void inject(SortActivity sortActivity);
void inject(DeleteAllCalendarEventsActivity deleteAllCalendarEventsActivity); void inject(DeleteAllCalendarEventsActivity deleteAllCalendarEventsActivity);
void inject(DeleteCompletedEventsActivity deleteCompletedEventsActivity); void inject(DeleteCompletedEventsActivity deleteCompletedEventsActivity);

@ -1,5 +1,6 @@
package org.tasks.injection; package org.tasks.injection;
import org.tasks.dialogs.SortDialog;
import org.tasks.dialogs.ThemePickerDialog; import org.tasks.dialogs.ThemePickerDialog;
import org.tasks.widget.WidgetConfigDialog; import org.tasks.widget.WidgetConfigDialog;
@ -29,4 +30,6 @@ public interface DialogFragmentComponent {
void inject(WidgetConfigDialog widgetConfigDialog); void inject(WidgetConfigDialog widgetConfigDialog);
void inject(ThemePickerDialog themePickerDialog); void inject(ThemePickerDialog themePickerDialog);
void inject(SortDialog sortDialog);
} }

Loading…
Cancel
Save