Move some filters to kmp

pull/1926/merge
Alex Baker 2 weeks ago
parent 929a01cd8c
commit d9293c7262

@ -2,7 +2,7 @@ package com.todoroo.astrid.adapter
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.dao.TaskDao
import org.tasks.data.entity.Task
import com.todoroo.astrid.service.TaskMover

@ -1,7 +1,7 @@
package com.todoroo.astrid.service
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest

@ -8,7 +8,6 @@ package com.todoroo.astrid.activity
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode
@ -37,16 +36,21 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.tasks.BuildConfig
import org.tasks.R
import org.tasks.activities.GoogleTaskListSettingsActivity
import org.tasks.activities.TagSettingsActivity
import org.tasks.analytics.Firebase
import org.tasks.billing.Inventory
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.compose.drawer.TasksMenu
import org.tasks.data.dao.AlarmDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.LocationDao
import org.tasks.data.entity.Place
import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.Place
import org.tasks.data.entity.Task
import org.tasks.data.getLocation
import org.tasks.data.listSettingsClass
import org.tasks.databinding.TaskListActivityBinding
import org.tasks.dialogs.NewFilterDialog
import org.tasks.dialogs.WhatsNewDialog
@ -54,7 +58,9 @@ import org.tasks.extensions.Context.nightMode
import org.tasks.extensions.hideKeyboard
import org.tasks.filters.Filter
import org.tasks.filters.FilterProvider
import org.tasks.filters.NavigationDrawerSubheader
import org.tasks.filters.PlaceFilter
import org.tasks.location.LocationPickerActivity
import org.tasks.location.LocationPickerActivity.Companion.EXTRA_PLACE
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
@ -81,6 +87,7 @@ class MainActivity : AppCompatActivity() {
@Inject lateinit var alarmDao: AlarmDao
@Inject lateinit var eventBus: MainActivityEventBus
@Inject lateinit var firebase: Firebase
@Inject lateinit var caldavDao: CaldavDao
private val viewModel: MainActivityViewModel by viewModels()
private var currentNightMode = 0
@ -88,11 +95,6 @@ class MainActivity : AppCompatActivity() {
private var actionMode: ActionMode? = null
private lateinit var binding: TaskListActivityBinding
private val settingsRequest =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
recreate()
}
/** @see android.app.Activity.onCreate
*/
override fun onCreate(savedInstanceState: Bundle?) {
@ -119,15 +121,43 @@ class MainActivity : AppCompatActivity() {
setFilter = { viewModel.setFilter(it) },
toggleCollapsed = { viewModel.toggleCollapsed(it) },
addFilter = {
val rc = it.addIntentRc
if (rc == FilterProvider.REQUEST_NEW_FILTER) {
NewFilterDialog.newFilterDialog().show(
supportFragmentManager,
SubheaderClickHandler.FRAG_TAG_NEW_FILTER
)
} else {
val intent = it.addIntent ?: return@TasksMenu
startActivityForResult(intent, rc)
when (it.addIntentRc) {
FilterProvider.REQUEST_NEW_FILTER ->
NewFilterDialog.newFilterDialog().show(
supportFragmentManager,
SubheaderClickHandler.FRAG_TAG_NEW_FILTER
)
REQUEST_NEW_PLACE ->
startActivityForResult(
Intent(this, LocationPickerActivity::class.java),
REQUEST_NEW_PLACE
)
REQUEST_NEW_TAGS ->
startActivityForResult(
Intent(this, TagSettingsActivity::class.java),
REQUEST_NEW_LIST
)
REQUEST_NEW_LIST -> lifecycleScope.launch {
val account = caldavDao.getAccount(it.id) ?: return@launch
when (it.subheaderType) {
NavigationDrawerSubheader.SubheaderType.GOOGLE_TASKS ->
startActivityForResult(
Intent(this@MainActivity, GoogleTaskListSettingsActivity::class.java)
.putExtra(GoogleTaskListSettingsActivity.EXTRA_ACCOUNT, account),
REQUEST_NEW_LIST
)
NavigationDrawerSubheader.SubheaderType.CALDAV,
NavigationDrawerSubheader.SubheaderType.TASKS,
NavigationDrawerSubheader.SubheaderType.ETESYNC ->
startActivityForResult(
Intent(this@MainActivity, account.listSettingsClass())
.putExtra(BaseCaldavCalendarSettingsActivity.EXTRA_CALDAV_ACCOUNT, account),
REQUEST_NEW_LIST
)
else -> {}
}
}
else -> Timber.e("Unhandled request code: $it")
}
},
dismiss = { viewModel.setDrawerOpen(false) },
@ -369,6 +399,7 @@ class MainActivity : AppCompatActivity() {
private const val FLAG_FROM_HISTORY
= Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
const val REQUEST_NEW_LIST = 10100
const val REQUEST_NEW_TAGS = 10101
const val REQUEST_NEW_PLACE = 10104
val Intent.getFilter: Filter?

@ -8,7 +8,6 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.todoroo.astrid.activity.MainActivity.Companion.LOAD_FILTER
import com.todoroo.astrid.activity.MainActivity.Companion.OPEN_FILTER
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.CustomFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter
@ -32,6 +31,7 @@ import org.tasks.data.count
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.Task
import org.tasks.filters.CaldavFilter
import org.tasks.filters.Filter
import org.tasks.filters.FilterProvider
import org.tasks.filters.NavigationDrawerSubheader
@ -145,7 +145,7 @@ class MainActivityViewModel @Inject constructor(
title = item.title ?: "",
collapsed = item.isCollapsed,
hasError = item.error,
canAdd = item.addIntent != null,
canAdd = item.addIntentRc != 0,
type = { item },
)
else -> throw IllegalArgumentException()

@ -53,7 +53,7 @@ import com.todoroo.astrid.adapter.TaskAdapter
import com.todoroo.astrid.adapter.TaskAdapterProvider
import com.todoroo.astrid.api.AstridApiConstants.EXTRAS_OLD_DUE_DATE
import com.todoroo.astrid.api.AstridApiConstants.EXTRAS_TASK_ID
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.CustomFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter

@ -7,7 +7,7 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.CustomFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter

@ -7,8 +7,6 @@ import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager
import org.tasks.data.dao.CaldavDao
import org.tasks.dialogs.NewFilterDialog
import org.tasks.filters.FilterProvider
import org.tasks.filters.NavigationDrawerSubheader
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.CALDAV
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType.ETESYNC
@ -34,23 +32,11 @@ class SubheaderClickHandler @Inject constructor(
CALDAV,
TASKS,
ETESYNC -> caldavDao.setCollapsed(subheader.id, collapsed)
else -> throw IllegalArgumentException()
}
localBroadcastManager.broadcastRefreshList()
}
}
override fun onAdd(subheader: NavigationDrawerSubheader) {
when (subheader.addIntentRc) {
FilterProvider.REQUEST_NEW_FILTER ->
NewFilterDialog.newFilterDialog().show(
(activity as AppCompatActivity).supportFragmentManager,
FRAG_TAG_NEW_FILTER
)
else -> activity.startActivityForResult(subheader.addIntent, subheader.addIntentRc)
}
}
override fun showError() =
activity.startActivity(Intent(activity, MainPreferences::class.java))

@ -18,7 +18,6 @@ internal class SubheaderViewHolder(
interface ClickHandler {
fun onClick(subheader: NavigationDrawerSubheader)
fun onAdd(subheader: NavigationDrawerSubheader)
fun showError()
}
@ -31,7 +30,7 @@ internal class SubheaderViewHolder(
private lateinit var subheader: NavigationDrawerSubheader
fun bind(subheader: NavigationDrawerSubheader) {
add.isVisible = subheader.addIntent != null
add.isVisible = false
this.subheader = subheader
text.text = subheader.title
when {
@ -63,6 +62,5 @@ internal class SubheaderViewHolder(
}
}
errorIcon.setOnClickListener { clickHandler.showError() }
add.setOnClickListener { clickHandler.onAdd(subheader) }
}
}

@ -1,7 +1,7 @@
package com.todoroo.astrid.adapter
import android.content.Context
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter
import com.todoroo.astrid.core.BuiltInFilterExposer

@ -12,7 +12,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.lifecycle.lifecycleScope
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch

@ -1,7 +1,7 @@
package com.todoroo.astrid.service
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.PermaSql
import com.todoroo.astrid.dao.TaskDao

@ -1,7 +1,7 @@
package com.todoroo.astrid.service
import android.content.Context
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.BuildConfig
@ -57,7 +57,8 @@ class TaskMover @Inject constructor(
selectedList = if (account.accountType == CaldavAccount.TYPE_GOOGLE_TASKS)
GtasksFilter(calendar)
else
CaldavFilter(calendar))
CaldavFilter(calendar)
)
}
suspend fun move(ids: List<Long>, selectedList: Filter) {

@ -18,7 +18,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.todoroo.astrid.adapter.FilterViewHolder
import com.todoroo.astrid.adapter.NavigationDrawerAdapter
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.CustomFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter

@ -15,7 +15,7 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.todoroo.astrid.activity.MainActivity
import com.todoroo.astrid.activity.TaskListFragment
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import org.tasks.data.UUIDHelper
import com.todoroo.astrid.service.TaskDeleter
import kotlinx.coroutines.runBlocking

@ -3,7 +3,7 @@ package org.tasks.caldav
import android.content.Intent
import com.todoroo.astrid.activity.MainActivity
import com.todoroo.astrid.activity.TaskListFragment
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import org.tasks.data.UUIDHelper
import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.lifecycle.HiltViewModel

@ -307,8 +307,6 @@ fun MenuPreview() {
false,
NavigationDrawerSubheader.SubheaderType.PREFERENCE,
0L,
0,
null
)
},
)

@ -18,7 +18,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import org.tasks.R
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.dialogs.FilterPickerViewModel

@ -1,6 +1,6 @@
package org.tasks.data
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.PermaSql
import com.todoroo.astrid.core.SortHelper

@ -3,7 +3,6 @@ package org.tasks.filters
import android.content.Context
import android.content.Intent
import com.todoroo.astrid.activity.MainActivity
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.CustomFilter
import com.todoroo.astrid.core.BuiltInFilterExposer
import dagger.hilt.android.qualifiers.ApplicationContext
@ -60,15 +59,15 @@ class FilterProvider @Inject constructor(
private fun getDebugFilters(): List<FilterListItem> =
if (BuildConfig.DEBUG) {
val collapsed = preferences.getBoolean(R.string.p_collapse_debug, false)
listOf(NavigationDrawerSubheader(
listOf(
NavigationDrawerSubheader(
context.getString(R.string.debug),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_debug.toLong(),
0,
null,
))
)
)
.apply { if (collapsed) return this }
.plus(listOf(
BuiltInFilterExposer.getNoListFilter(),
@ -90,14 +89,15 @@ class FilterProvider @Inject constructor(
} else {
val collapsed = preferences.getBoolean(R.string.p_collapse_filters, false)
listOf(
NavigationDrawerSubheader(
context.getString(R.string.filters),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_filters.toLong(),
REQUEST_NEW_FILTER,
if (showCreate) Intent() else null))
NavigationDrawerSubheader(
context.getString(R.string.filters),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_filters.toLong(),
if (showCreate) REQUEST_NEW_FILTER else 0,
)
)
.apply { if (collapsed) return this }
.plusAllIf(showBuiltIn) {
builtInFilterExposer.filters()
@ -111,18 +111,15 @@ class FilterProvider @Inject constructor(
} else {
val collapsed = preferences.getBoolean(R.string.p_collapse_tags, false)
listOf(
NavigationDrawerSubheader(
context.getString(R.string.tags),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_tags.toLong(),
MainActivity.REQUEST_NEW_LIST,
if (showCreate) {
Intent(context, TagSettingsActivity::class.java)
} else {
null
}))
NavigationDrawerSubheader(
context.getString(R.string.tags),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_tags.toLong(),
if (showCreate) MainActivity.REQUEST_NEW_TAGS else 0,
)
)
.apply { if (collapsed) return this }
.plus(tagDataDao.getTagFilters()
.filterIf(hideUnused && preferences.getBoolean(R.string.p_tags_hide_unused, false)) {
@ -138,18 +135,15 @@ class FilterProvider @Inject constructor(
} else {
val collapsed = preferences.getBoolean(R.string.p_collapse_locations, false)
listOf(
NavigationDrawerSubheader(
context.getString(R.string.places),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_locations.toLong(),
MainActivity.REQUEST_NEW_PLACE,
if (showCreate) {
Intent(context, LocationPickerActivity::class.java)
} else {
null
}))
NavigationDrawerSubheader(
context.getString(R.string.places),
false,
collapsed,
SubheaderType.PREFERENCE,
R.string.p_collapse_locations.toLong(),
if (showCreate) MainActivity.REQUEST_NEW_PLACE else 0,
)
)
.apply { if (collapsed) return this }
.plus(locationDao.getPlaceFilters()
.filterIf(hideUnused && preferences.getBoolean(R.string.p_places_hide_unused, false)) {
@ -177,26 +171,29 @@ class FilterProvider @Inject constructor(
.toList()
.plusAllIf(BuildConfig.DEBUG) { getDebugFilters() }
private suspend fun googleTaskFilter(account: CaldavAccount, showCreate: Boolean): List<FilterListItem> =
listOf(
NavigationDrawerSubheader(
account.username,
account.error?.isNotBlank() ?: false,
account.isCollapsed,
SubheaderType.GOOGLE_TASKS,
account.id,
MainActivity.REQUEST_NEW_LIST,
if (showCreate) {
Intent(context, GoogleTaskListSettingsActivity::class.java)
.putExtra(GoogleTaskListSettingsActivity.EXTRA_ACCOUNT, account)
} else {
null
}))
.apply { if (account.isCollapsed) return this }
.plus(googleTaskListDao
.getGoogleTaskFilters(account.username!!)
.map(GoogleTaskFilters::toGtasksFilter)
.sort())
private suspend fun googleTaskFilter(
account: CaldavAccount,
showCreate: Boolean,
): List<FilterListItem> {
val collapsed = account.isCollapsed
return listOf(
NavigationDrawerSubheader(
account.username,
account.error?.isNotBlank() ?: false,
collapsed,
SubheaderType.GOOGLE_TASKS,
account.id,
if (showCreate) MainActivity.REQUEST_NEW_LIST else 0,
)
)
.apply { if (collapsed) return this }
.plus(
googleTaskListDao
.getGoogleTaskFilters(account.username!!)
.map(GoogleTaskFilters::toGtasksFilter)
.sort()
)
}
private suspend fun caldavFilters(showCreate: Boolean = true): List<FilterListItem> =
caldavDao.getAccounts()
@ -213,44 +210,41 @@ class FilterProvider @Inject constructor(
}
}
private suspend fun caldavFilter(account: CaldavAccount, showCreate: Boolean): List<FilterListItem> =
listOf(
NavigationDrawerSubheader(
if (account.accountType == TYPE_LOCAL) {
context.getString(R.string.local_lists)
} else {
account.name
},
account.error?.isNotBlank() ?: false,
account.isCollapsed,
when {
account.isTasksOrg -> SubheaderType.TASKS
account.isEteSyncAccount -> SubheaderType.ETESYNC
else -> SubheaderType.CALDAV
},
account.id,
MainActivity.REQUEST_NEW_LIST,
if (showCreate) {
Intent(context, account.listSettingsClass())
.putExtra(
BaseCaldavCalendarSettingsActivity.EXTRA_CALDAV_ACCOUNT,
account
)
} else {
null
}
))
.apply { if (account.isCollapsed) return this }
.plus(caldavDao
.getCaldavFilters(account.uuid!!)
.map {
CaldavFilter(
calendar = it.caldavCalendar,
principals = it.principals,
count = it.count,
)
}
.sort())
private suspend fun caldavFilter(
account: CaldavAccount,
showCreate: Boolean,
): List<FilterListItem> {
val collapsed = account.isCollapsed
return listOf(
NavigationDrawerSubheader(
if (account.accountType == TYPE_LOCAL) {
context.getString(R.string.local_lists)
} else {
account.name
},
account.error?.isNotBlank() ?: false,
collapsed,
when {
account.isTasksOrg -> SubheaderType.TASKS
account.isEteSyncAccount -> SubheaderType.ETESYNC
else -> SubheaderType.CALDAV
},
account.id,
if (showCreate) MainActivity.REQUEST_NEW_LIST else 0,
)
)
.apply { if (collapsed) return this }
.plus(caldavDao
.getCaldavFilters(account.uuid!!)
.map {
CaldavFilter(
calendar = it.caldavCalendar,
principals = it.principals,
count = it.count,
)
}
.sort())
}
companion object {
const val REQUEST_NEW_FILTER = 101015

@ -1,7 +1,7 @@
package org.tasks.preferences
import android.content.Context
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.CustomFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter

@ -7,7 +7,7 @@ import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope
import com.todoroo.astrid.activity.MainActivity
import com.todoroo.astrid.activity.TaskListFragment
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity
import org.tasks.data.entity.CaldavAccount

@ -14,7 +14,7 @@ import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.unit.dp
import androidx.recyclerview.widget.RecyclerView
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter
import com.todoroo.astrid.core.SortHelper.SORT_DUE

@ -9,7 +9,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.todoroo.astrid.activity.TaskEditFragment
import com.todoroo.astrid.alarms.AlarmService
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.gcal.GCalHelper

@ -4,7 +4,7 @@ import android.content.Context
import android.widget.RemoteViews
import androidx.annotation.ColorInt
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter
import org.tasks.filters.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.api.TagFilter
import dagger.hilt.android.qualifiers.ApplicationContext

@ -55,6 +55,9 @@ abstract class CaldavDao(private val database: Database) {
@Query("SELECT * FROM caldav_accounts WHERE cda_account_type = :type AND cda_username = :username")
abstract suspend fun getAccount(type: Int, username: String): CaldavAccount?
@Query("SELECT * FROM caldav_accounts WHERE cda_id = :id")
abstract suspend fun getAccount(id: Long): CaldavAccount?
@Query("SELECT * FROM caldav_accounts WHERE cda_id = :id")
abstract fun watchAccount(id: Long): Flow<CaldavAccount?>

@ -0,0 +1,8 @@
package org.tasks.filters
@Deprecated("Use manual ordering")
interface AstridOrderingFilter : Filter {
var filterOverride: String?
fun getSqlQuery(): String = filterOverride ?: sql!!
}

@ -1,20 +1,16 @@
package com.todoroo.astrid.api
package org.tasks.filters
import org.tasks.data.sql.Criterion.Companion.and
import org.tasks.data.sql.Join.Companion.left
import org.tasks.data.sql.QueryTemplate
import com.todoroo.andlib.utility.AndroidUtilities
import kotlinx.parcelize.Parcelize
import org.tasks.CommonParcelize
import org.tasks.data.NO_COUNT
import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavTask
import org.tasks.data.NO_COUNT
import org.tasks.data.entity.Task
import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.filters.Filter
import org.tasks.filters.FilterListItem
import org.tasks.filters.mapToSerializedString
import org.tasks.data.sql.Criterion.Companion.and
import org.tasks.data.sql.Join.Companion.left
import org.tasks.data.sql.QueryTemplate
@Parcelize
@CommonParcelize
data class CaldavFilter(
val calendar: CaldavCalendar,
val principals: Int = 0,

@ -1,7 +1,6 @@
package org.tasks.filters
import org.tasks.CommonParcelable
import org.tasks.CommonParcelize
import org.tasks.data.NO_COUNT
import org.tasks.data.NO_ORDER
@ -32,23 +31,3 @@ interface Filter : FilterListItem, CommonParcelable {
fun supportsSorting(): Boolean = true
fun disableHeaders(): Boolean = !supportsSorting()
}
@Deprecated("Use manual ordering")
interface AstridOrderingFilter : Filter {
var filterOverride: String?
fun getSqlQuery(): String = filterOverride ?: sql!!
}
@CommonParcelize
data class FilterImpl(
override val title: String? = null,
override val sql: String? = null,
override val valuesForNewTasks: String? = null,
override val icon: Int = -1,
override val tint: Int = 0,
) : Filter {
override fun areItemsTheSame(other: FilterListItem): Boolean {
return other is Filter && sql == other.sql
}
}

@ -0,0 +1,16 @@
package org.tasks.filters
import org.tasks.CommonParcelize
@CommonParcelize
data class FilterImpl(
override val title: String? = null,
override val sql: String? = null,
override val valuesForNewTasks: String? = null,
override val icon: Int = -1,
override val tint: Int = 0,
) : Filter {
override fun areItemsTheSame(other: FilterListItem): Boolean {
return other is Filter && sql == other.sql
}
}

@ -1,15 +1,12 @@
package org.tasks.filters
import android.content.Intent
data class NavigationDrawerSubheader(
val title: String?,
val error: Boolean,
val isCollapsed: Boolean,
val subheaderType: SubheaderType,
val id: Long,
val addIntentRc: Int,
val addIntent: Intent?,
val addIntentRc: Int = 0,
) : FilterListItem {
override fun areItemsTheSame(other: FilterListItem): Boolean {
return other is NavigationDrawerSubheader && subheaderType == other.subheaderType && id == other.id
Loading…
Cancel
Save