From 82918ba2633bce77afa10c5016272693f1b2c954 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 12 Feb 2016 09:47:52 -0600 Subject: [PATCH] Add configurable back button behavior --- .../todoroo/astrid/activity/TaskEditFragment.java | 12 ++++++++++-- .../todoroo/astrid/activity/TaskListActivity.java | 6 +++++- src/main/java/org/tasks/preferences/Preferences.java | 4 ++++ src/main/res/values/keys.xml | 1 + src/main/res/values/strings.xml | 1 + src/main/res/xml/preferences_appearance.xml | 5 +++++ 6 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 108e36bd2..cf4f0f3f9 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -39,6 +39,7 @@ import org.tasks.fragments.TaskEditControlSetFragmentManager; import org.tasks.injection.ForActivity; import org.tasks.injection.InjectingFragment; import org.tasks.notifications.NotificationManager; +import org.tasks.preferences.Preferences; import org.tasks.ui.MenuColorizer; import org.tasks.ui.TaskEditControlFragment; @@ -78,6 +79,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar @Inject @ForActivity Context context; @Inject TaskEditControlSetFragmentManager taskEditControlSetFragmentManager; @Inject CommentsController commentsController; + @Inject Preferences preferences; @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.comments) LinearLayout comments; @@ -109,13 +111,19 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar isNewTask = savedInstanceState.getBoolean(EXTRA_IS_NEW_TASK); } - Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_save_24dp)); + final boolean backButtonSavesTask = preferences.backButtonSavesTask(); + Drawable drawable = DrawableCompat.wrap(getResources().getDrawable( + backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp)); DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white)); toolbar.setNavigationIcon(drawable); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - save(); + if (backButtonSavesTask) { + discardButtonClick(); + } else { + save(); + } } }); toolbar.inflateMenu(R.menu.task_edit_fragment); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 146094988..7dd935b9c 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -302,7 +302,11 @@ public class TaskListActivity extends InjectingAppCompatActivity implements TaskEditFragment taskEditFragment = getTaskEditFragment(); if (taskEditFragment != null) { - taskEditFragment.discardButtonClick(); + if (preferences.backButtonSavesTask()) { + taskEditFragment.save(); + } else { + taskEditFragment.discardButtonClick(); + } } else if (!isFinishing()) { super.onBackPressed(); } diff --git a/src/main/java/org/tasks/preferences/Preferences.java b/src/main/java/org/tasks/preferences/Preferences.java index 0b2493dea..594dd970e 100644 --- a/src/main/java/org/tasks/preferences/Preferences.java +++ b/src/main/java/org/tasks/preferences/Preferences.java @@ -50,6 +50,10 @@ public class Preferences { publicPrefs = context.getSharedPreferences(AstridApiConstants.PUBLIC_PREFS, Context.MODE_WORLD_READABLE); } + public boolean backButtonSavesTask() { + return getBoolean(R.string.p_back_button_saves_task, false); + } + public boolean quietHoursEnabled() { return getBoolean(R.string.p_rmd_enable_quiet, false); } diff --git a/src/main/res/values/keys.xml b/src/main/res/values/keys.xml index 87f06edc6..24577ceae 100644 --- a/src/main/res/values/keys.xml +++ b/src/main/res/values/keys.xml @@ -278,5 +278,6 @@ 1000 500 collect_statistics + back_button_saves_task diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 96b1c1a09..34991013f 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -893,6 +893,7 @@ File %1$s contained %2$s.\n\n Android will significantly delay notifications while device is in Doze mode Android will allow limited interruptions while device is in Doze mode (No title) + Back button saves task diff --git a/src/main/res/xml/preferences_appearance.xml b/src/main/res/xml/preferences_appearance.xml index 04825cfb4..b02a8089f 100644 --- a/src/main/res/xml/preferences_appearance.xml +++ b/src/main/res/xml/preferences_appearance.xml @@ -27,6 +27,11 @@ android:key="@string/customize_edit_screen" android:title="@string/customize_edit_screen"/> + +