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"/>
+
+