Add configurable back button behavior

pull/384/head
Alex Baker 10 years ago
parent a12aa40895
commit 82918ba263

@ -39,6 +39,7 @@ import org.tasks.fragments.TaskEditControlSetFragmentManager;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.injection.InjectingFragment; import org.tasks.injection.InjectingFragment;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.Preferences;
import org.tasks.ui.MenuColorizer; import org.tasks.ui.MenuColorizer;
import org.tasks.ui.TaskEditControlFragment; import org.tasks.ui.TaskEditControlFragment;
@ -78,6 +79,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
@Inject @ForActivity Context context; @Inject @ForActivity Context context;
@Inject TaskEditControlSetFragmentManager taskEditControlSetFragmentManager; @Inject TaskEditControlSetFragmentManager taskEditControlSetFragmentManager;
@Inject CommentsController commentsController; @Inject CommentsController commentsController;
@Inject Preferences preferences;
@Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.toolbar) Toolbar toolbar;
@Bind(R.id.comments) LinearLayout comments; @Bind(R.id.comments) LinearLayout comments;
@ -109,14 +111,20 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
isNewTask = savedInstanceState.getBoolean(EXTRA_IS_NEW_TASK); 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)); DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
toolbar.setNavigationIcon(drawable); toolbar.setNavigationIcon(drawable);
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (backButtonSavesTask) {
discardButtonClick();
} else {
save(); save();
} }
}
}); });
toolbar.inflateMenu(R.menu.task_edit_fragment); toolbar.inflateMenu(R.menu.task_edit_fragment);
Menu menu = toolbar.getMenu(); Menu menu = toolbar.getMenu();

@ -302,7 +302,11 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
TaskEditFragment taskEditFragment = getTaskEditFragment(); TaskEditFragment taskEditFragment = getTaskEditFragment();
if (taskEditFragment != null) { if (taskEditFragment != null) {
if (preferences.backButtonSavesTask()) {
taskEditFragment.save();
} else {
taskEditFragment.discardButtonClick(); taskEditFragment.discardButtonClick();
}
} else if (!isFinishing()) { } else if (!isFinishing()) {
super.onBackPressed(); super.onBackPressed();
} }

@ -50,6 +50,10 @@ public class Preferences {
publicPrefs = context.getSharedPreferences(AstridApiConstants.PUBLIC_PREFS, Context.MODE_WORLD_READABLE); 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() { public boolean quietHoursEnabled() {
return getBoolean(R.string.p_rmd_enable_quiet, false); return getBoolean(R.string.p_rmd_enable_quiet, false);
} }

@ -278,5 +278,6 @@
<string name="default_vibration_duration">1000</string> <string name="default_vibration_duration">1000</string>
<string name="default_vibration_pause">500</string> <string name="default_vibration_pause">500</string>
<string name="p_collect_statistics">collect_statistics</string> <string name="p_collect_statistics">collect_statistics</string>
<string name="p_back_button_saves_task">back_button_saves_task</string>
</resources> </resources>

@ -893,6 +893,7 @@ File %1$s contained %2$s.\n\n
<string name="doze_notifications_off">Android will significantly delay notifications while device is in Doze mode</string> <string name="doze_notifications_off">Android will significantly delay notifications while device is in Doze mode</string>
<string name="doze_notifications_on">Android will allow limited interruptions while device is in Doze mode</string> <string name="doze_notifications_on">Android will allow limited interruptions while device is in Doze mode</string>
<string name="no_title">(No title)</string> <string name="no_title">(No title)</string>
<string name="back_button_saves_task">Back button saves task</string>
<string-array name="sync_SPr_interval_entries"> <string-array name="sync_SPr_interval_entries">
<!-- sync_SPr_interval_entries: Synchronization Intervals --> <!-- sync_SPr_interval_entries: Synchronization Intervals -->

@ -27,6 +27,11 @@
android:key="@string/customize_edit_screen" android:key="@string/customize_edit_screen"
android:title="@string/customize_edit_screen"/> android:title="@string/customize_edit_screen"/>
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:defaultValue="false"
android:key="@string/p_back_button_saves_task"
android:title="@string/back_button_saves_task" />
<com.todoroo.astrid.ui.MultilineCheckboxPreference <com.todoroo.astrid.ui.MultilineCheckboxPreference
android:defaultValue="true" android:defaultValue="true"
android:key="@string/p_show_task_edit_comments" android:key="@string/p_show_task_edit_comments"

Loading…
Cancel
Save