diff --git a/app/src/main/java/org/tasks/preferences/BasicPreferences.java b/app/src/main/java/org/tasks/preferences/BasicPreferences.java index bfee6efd3..4ea72f81b 100644 --- a/app/src/main/java/org/tasks/preferences/BasicPreferences.java +++ b/app/src/main/java/org/tasks/preferences/BasicPreferences.java @@ -113,7 +113,14 @@ public class BasicPreferences extends InjectingPreferenceActivity R.string.p_linkify_task_list, R.string.p_show_list_indicators); - findPreference(getString(R.string.customize_edit_screen)) + findPreference(R.string.p_show_subtasks) + .setOnPreferenceChangeListener((preference, newValue) -> { + forceRestart(); + localBroadcastManager.broadcastRefresh(); + return true; + }); + + findPreference(R.string.customize_edit_screen) .setOnPreferenceClickListener( preference -> { startActivityForResult( diff --git a/app/src/main/java/org/tasks/preferences/Preferences.java b/app/src/main/java/org/tasks/preferences/Preferences.java index 3baa768be..bf8eeb8c2 100644 --- a/app/src/main/java/org/tasks/preferences/Preferences.java +++ b/app/src/main/java/org/tasks/preferences/Preferences.java @@ -5,6 +5,7 @@ import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Sets.newHashSet; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastKitKat; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; import static java.util.Collections.emptySet; import android.content.ContentResolver; @@ -527,4 +528,8 @@ public class Preferences { public int getDefaultPriority() { return getIntegerFromString(R.string.p_default_importance_key, Priority.LOW); } + + public boolean showSubtasks() { + return atLeastLollipop() && getBoolean(R.string.p_show_subtasks, false); + } } diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.java b/app/src/main/java/org/tasks/ui/TaskListViewModel.java index 46d06a414..47263de1b 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.java +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.java @@ -109,6 +109,7 @@ public class TaskListViewModel extends ViewModel { if (filter.supportSubtasks() && (includeGoogleTaskSubtasks || includeCaldavSubtasks) + && preferences.showSubtasks() && !(preferences.isManualSort() && filter.supportsManualSort())) { String tagQuery = Query.select(field("group_concat(distinct(tag_uid))")) diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 1d3351aa1..98b74a84d 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -308,4 +308,5 @@ Custom order synchronization fix Always perform a full synchronization to workaround https://issuetracker.google.com/issues/132432317 https://tasks.org/subscribe + show_subtasks diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 42c24637f..6a37235fa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -560,4 +560,6 @@ File %1$s contained %2$s.\n\n Enable synchronization to add subtasks Multi-level subtasks not supported by Google Tasks Enter title + Show subtasks + Displaying subtasks will degrade app performance diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index db428634b..7f9e1cbf3 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -38,6 +38,12 @@ android:key="@string/p_rowPadding" android:title="@string/row_spacing"/> + +