Add QueryPreferences interface

pull/1184/head
Alex Baker 4 years ago
parent 80b245702a
commit 91260e8892

@ -15,8 +15,7 @@ import androidx.annotation.Nullable;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Order;
import com.todoroo.astrid.data.Task;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import org.tasks.preferences.QueryPreferences;
/**
* Helpers for sorting a list of tasks
@ -45,7 +44,7 @@ public class SortHelper {
/** Takes a SQL query, and if there isn't already an order, creates an order. */
public static String adjustQueryForFlagsAndSort(
Preferences preferences, String originalSql, int sort) {
QueryPreferences preferences, String originalSql, int sort) {
// sort
if (originalSql == null) {
originalSql = "";
@ -62,17 +61,16 @@ public class SortHelper {
return adjustQueryForFlags(preferences, originalSql);
}
public static String adjustQueryForFlags(
Preferences preferences, String originalSql) {
public static String adjustQueryForFlags(QueryPreferences preferences, String originalSql) {
String adjustedSql = originalSql;
// flags
if (preferences.getBoolean(R.string.p_show_completed_tasks, false)) {
if (preferences.getShowCompleted()) {
adjustedSql = showCompleted(adjustedSql);
} else if (preferences.getBoolean(R.string.p_temporarily_show_completed_tasks, false)) {
} else if (preferences.getShowCompletedTemporarily()) {
adjustedSql = showRecentlyCompleted(adjustedSql);
}
if (preferences.getBoolean(R.string.p_show_hidden_tasks, false)) {
if (preferences.getShowHidden()) {
adjustedSql = showHidden(adjustedSql);
}

@ -9,7 +9,7 @@ import com.todoroo.astrid.data.Task
import kotlinx.collections.immutable.persistentListOf
import org.tasks.data.TaskListQueryNonRecursive.getNonRecursiveQuery
import org.tasks.data.TaskListQueryRecursive.getRecursiveQuery
import org.tasks.preferences.Preferences
import org.tasks.preferences.QueryPreferences
object TaskListQuery {
private val JOIN_GTASK = Criterion.and(
@ -32,7 +32,11 @@ object TaskListQuery {
field("places.*"))
@JvmStatic
fun getQuery(preferences: Preferences, filter: Filter, subtasks: SubtaskInfo): MutableList<String> {
fun getQuery(
preferences: QueryPreferences,
filter: Filter,
subtasks: SubtaskInfo
): MutableList<String> {
return if (filter.supportsManualSort() && preferences.isManualSort) {
getRecursiveQuery(filter, preferences, subtasks)
} else if (filter.supportsAstridSorting() && preferences.isAstridSort) {

@ -8,7 +8,7 @@ import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.PermaSql
import com.todoroo.astrid.core.SortHelper
import com.todoroo.astrid.data.Task
import org.tasks.preferences.Preferences
import org.tasks.preferences.QueryPreferences
internal object TaskListQueryNonRecursive {
private val JOIN_TAGS = Task.ID.eq(field("${TaskListFragment.TAGS_METADATA_JOIN}.task"))
@ -21,7 +21,7 @@ internal object TaskListQueryNonRecursive {
.`as`("tags")
private val FIELDS = TaskListQuery.FIELDS.plus(TAGS).toTypedArray()
fun getNonRecursiveQuery(filter: Filter, preferences: Preferences): MutableList<String> {
fun getNonRecursiveQuery(filter: Filter, preferences: QueryPreferences): MutableList<String> {
val joinedQuery = JOINS + filter.getSqlQuery()
val sortMode = preferences.sortMode
val sortGroup = field(SortHelper.getSortGroup(sortMode) ?: "NULL").`as`("sortGroup")

@ -13,7 +13,7 @@ import com.todoroo.astrid.api.PermaSql
import com.todoroo.astrid.core.SortHelper
import com.todoroo.astrid.data.Task
import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.preferences.Preferences
import org.tasks.preferences.QueryPreferences
internal object TaskListQueryRecursive {
private val RECURSIVE = Table("recursive_tasks")
@ -42,7 +42,11 @@ internal object TaskListQueryRecursive {
.join(Join.left(GoogleTask.TABLE, Criterion.and(GoogleTask.TASK.eq(Task.ID), GoogleTask.DELETED.eq(0))))
.where(activeAndVisible())
fun getRecursiveQuery(filter: Filter, preferences: Preferences, subtasks: SubtaskInfo): MutableList<String> {
fun getRecursiveQuery(
filter: Filter,
preferences: QueryPreferences,
subtasks: SubtaskInfo
): MutableList<String> {
var joinedQuery = JOINS
var where = " WHERE recursive_tasks.hidden = 0"
val parentQuery: String

@ -16,6 +16,7 @@ import java.util.List;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import org.tasks.preferences.QueryPreferences;
import timber.log.Timber;
@AndroidEntryPoint
@ -125,14 +126,14 @@ public class SortDialog extends DialogFragment {
}
private void setSelection(boolean reverse) {
preferences.setBoolean(R.string.p_reverse_sort, reverse);
preferences.setReverseSort(reverse);
boolean wasManual = preferences.isManualSort();
boolean wasAstrid = preferences.isAstridSort();
boolean isManual = manualEnabled && selectedIndex == 0;
boolean isAstrid = astridEnabled && selectedIndex == 0;
preferences.setBoolean(R.string.p_manual_sort, isManual);
preferences.setBoolean(R.string.p_astrid_sort, isAstrid);
preferences.setManualSort(isManual);
preferences.setAstridSort(isAstrid);
if (!isManual && !isAstrid) {
preferences.setSortMode(getSortMode(manualEnabled || astridEnabled ? selectedIndex : selectedIndex + 1));

@ -30,7 +30,10 @@ import java.net.URI
import java.util.*
import java.util.concurrent.TimeUnit
class Preferences @JvmOverloads constructor(private val context: Context, name: String? = getSharedPreferencesName(context)) {
class Preferences @JvmOverloads constructor(
private val context: Context,
name: String? = getSharedPreferencesName(context)
) : QueryPreferences {
private val prefs: SharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE)
private val publicPrefs: SharedPreferences = context.getSharedPreferences(AstridApiConstants.PUBLIC_PREFS, Context.MODE_PRIVATE)
@ -318,12 +321,23 @@ class Preferences @JvmOverloads constructor(private val context: Context, name:
setInt(R.string.p_current_version, version)
}
var sortMode: Int
override var sortMode: Int
get() = publicPrefs.getInt(PREF_SORT_SORT, SortHelper.SORT_AUTO)
set(value) {
setPublicPref(PREF_SORT_SORT, value)
}
override var showHidden: Boolean
get() = getBoolean(R.string.p_show_hidden_tasks, false)
set(value) { setBoolean(R.string.p_show_hidden_tasks, value) }
override var showCompleted: Boolean
get() = getBoolean(R.string.p_show_completed_tasks, false)
set(value) { setBoolean(R.string.p_show_completed_tasks, value) }
override val showCompletedTemporarily: Boolean
get() = getBoolean(R.string.p_temporarily_show_completed_tasks, false)
private fun setPublicPref(key: String, value: Int) {
val edit = publicPrefs.edit()
edit?.putInt(key, value)?.apply()
@ -444,14 +458,17 @@ class Preferences @JvmOverloads constructor(private val context: Context, name:
val isPositionHackEnabled: Boolean
get() = getLong(R.string.p_google_tasks_position_hack, 0) > 0
val isManualSort: Boolean
override var isManualSort: Boolean
get() = getBoolean(R.string.p_manual_sort, false)
set(value) { setBoolean(R.string.p_manual_sort, value) }
val isAstridSort: Boolean
override var isAstridSort: Boolean
get() = getBoolean(R.string.p_astrid_sort_enabled, false) && getBoolean(R.string.p_astrid_sort, false)
set(value) { setBoolean(R.string.p_astrid_sort, value) }
val isReverseSort: Boolean
override var isReverseSort: Boolean
get() = getBoolean(R.string.p_reverse_sort, false)
set(value) { setBoolean(R.string.p_reverse_sort, value) }
val defaultPriority: Int
get() = getIntegerFromString(R.string.p_default_importance_key, Task.Priority.LOW)
@ -486,7 +503,7 @@ class Preferences @JvmOverloads constructor(private val context: Context, name:
val defaultThemeColor: Int
get() = getInt(R.string.p_theme_color, ColorProvider.BLUE_500)
fun usePagedQueries(): Boolean {
override fun usePagedQueries(): Boolean {
return getBoolean(R.string.p_use_paged_queries, false)
}

@ -0,0 +1,19 @@
package org.tasks.preferences
interface QueryPreferences {
var sortMode: Int
var isManualSort: Boolean
var isAstridSort: Boolean
var isReverseSort: Boolean
val showHidden: Boolean
val showCompleted: Boolean
val showCompletedTemporarily: Boolean
fun usePagedQueries(): Boolean
}
Loading…
Cancel
Save