From bbaaf273862568193af54f5c7f14704810baed57 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 11 Jun 2024 00:31:51 -0500 Subject: [PATCH] Move filters to multiplatform library --- app/build.gradle.kts | 1 + .../astrid/subtasks/SubtasksTestCase.kt | 4 +- .../todoroo/astrid/activity/MainActivity.kt | 2 +- .../astrid/activity/MainActivityViewModel.kt | 8 +-- .../astrid/activity/TaskEditFragment.kt | 8 +-- .../astrid/activity/TaskListFragment.kt | 6 +- .../astrid/adapter/AstridTaskAdapter.kt | 6 +- .../astrid/adapter/FilterViewHolder.kt | 2 +- .../astrid/adapter/NavigationDrawerAdapter.kt | 11 +++- .../astrid/adapter/TaskAdapterProvider.kt | 8 +-- .../com/todoroo/astrid/api/CaldavFilter.kt | 2 + .../com/todoroo/astrid/api/CustomFilter.kt | 2 + .../com/todoroo/astrid/api/EmptyFilter.kt | 7 ++- .../com/todoroo/astrid/api/FilterListItem.kt | 15 ----- .../com/todoroo/astrid/api/GtasksFilter.kt | 2 + .../com/todoroo/astrid/api/SearchFilter.kt | 12 ++-- .../java/com/todoroo/astrid/api/TagFilter.kt | 2 + .../astrid/core/BuiltInFilterExposer.kt | 16 +++--- .../java/com/todoroo/astrid/dao/TaskDao.kt | 2 +- .../com/todoroo/astrid/service/TaskCreator.kt | 2 +- .../com/todoroo/astrid/service/TaskMover.kt | 10 ++-- .../astrid/subtasks/SubtasksFilterUpdater.kt | 2 +- .../todoroo/astrid/subtasks/SubtasksHelper.kt | 14 ++--- app/src/main/java/org/tasks/Notifier.kt | 2 +- .../NavigationDrawerCustomization.kt | 7 +-- .../main/java/org/tasks/compose/FilterChip.kt | 2 +- .../org/tasks/compose/drawer/DrawerItem.kt | 2 +- .../tasks/compose/drawer/TaskListDrawer.kt | 2 +- .../org/tasks/compose/drawer/TasksMenu.kt | 4 +- .../java/org/tasks/compose/edit/ListRow.kt | 4 +- .../java/org/tasks/compose/edit/SubtaskRow.kt | 2 +- .../org/tasks/compose/pickers/FilterPicker.kt | 2 +- .../java/org/tasks/data/TaskDaoExtensions.kt | 2 +- .../main/java/org/tasks/data/TaskListQuery.kt | 16 +++--- .../tasks/data/TaskListQueryNonRecursive.kt | 10 ++-- .../org/tasks/data/TaskListQueryRecursive.kt | 16 +++--- .../java/org/tasks/dialogs/FilterPicker.kt | 2 +- .../tasks/dialogs/FilterPickerViewModel.kt | 4 +- .../org/tasks/filters/AlphanumComparator.kt | 1 - .../java/org/tasks/filters/FilterProvider.kt | 2 - .../java/org/tasks/filters/MyTasksFilter.kt | 2 - .../filters/NavigationDrawerSubheader.kt | 1 - .../org/tasks/filters/NotificationsFilter.kt | 2 - .../java/org/tasks/filters/PlaceFilter.kt | 2 - .../tasks/filters/RecentlyModifiedFilter.kt | 2 - .../java/org/tasks/filters/SnoozedFilter.kt | 2 - .../java/org/tasks/filters/SubtaskFilter.kt | 2 - .../java/org/tasks/filters/TimerFilter.kt | 2 - .../java/org/tasks/filters/TodayFilter.kt | 2 - .../java/org/tasks/intents/TaskIntents.java | 55 ------------------- .../java/org/tasks/intents/TaskIntents.kt | 53 ++++++++++++++++++ .../preferences/DefaultFilterProvider.kt | 8 +-- .../fragments/TaskerListNotification.kt | 2 +- .../preferences/fragments/WidgetSettings.kt | 4 +- .../org/tasks/tasklist/HeaderViewHolder.kt | 2 +- .../tasks/tasklist/TaskListRecyclerAdapter.kt | 2 +- .../java/org/tasks/tasklist/TaskViewHolder.kt | 2 +- .../java/org/tasks/ui/TaskEditViewModel.kt | 2 +- .../java/org/tasks/ui/TaskListViewModel.kt | 6 +- .../tasks/widget/ShortcutConfigActivity.kt | 4 +- .../main/java/org/tasks/widget/TasksWidget.kt | 2 +- .../tasks/widget/TasksWidgetViewFactory.kt | 6 +- .../org/tasks/widget/WidgetChipProvider.kt | 4 +- .../widget/WidgetFilterSelectionActivity.kt | 2 +- gradle/libs.versions.toml | 1 + kmp/.gitignore | 1 + kmp/build.gradle.kts | 46 ++++++++++++++++ .../kotlin/org/tasks/filters}/Filter.kt | 10 ++-- .../org/tasks/filters/FilterListItem.kt | 12 ++++ settings.gradle.kts | 1 + 70 files changed, 255 insertions(+), 211 deletions(-) delete mode 100644 app/src/main/java/com/todoroo/astrid/api/FilterListItem.kt delete mode 100644 app/src/main/java/org/tasks/intents/TaskIntents.java create mode 100644 app/src/main/java/org/tasks/intents/TaskIntents.kt create mode 100644 kmp/.gitignore create mode 100644 kmp/build.gradle.kts rename {app/src/main/java/com/todoroo/astrid/api => kmp/src/commonMain/kotlin/org/tasks/filters}/Filter.kt (88%) create mode 100644 kmp/src/commonMain/kotlin/org/tasks/filters/FilterListItem.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 458b52d55..c8a64e03d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -155,6 +155,7 @@ val googleplayImplementation by configurations dependencies { implementation(projects.data) + implementation(projects.kmp) coreLibraryDesugaring(libs.desugar.jdk.libs) implementation(libs.bitfire.dav4jvm) { exclude(group = "junit") diff --git a/app/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.kt b/app/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.kt index 52a39fb50..8aa934529 100644 --- a/app/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.kt +++ b/app/src/androidTest/java/com/todoroo/astrid/subtasks/SubtasksTestCase.kt @@ -1,13 +1,13 @@ package com.todoroo.astrid.subtasks import androidx.test.InstrumentationRegistry -import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.tasks.data.dao.TaskListMetadataDao +import org.tasks.data.entity.Task +import org.tasks.filters.AstridOrderingFilter import org.tasks.injection.InjectingTestCase import org.tasks.preferences.Preferences import javax.inject.Inject diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 075dcab38..fe95cce87 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -23,7 +23,6 @@ import androidx.lifecycle.repeatOnLifecycle import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.astrid.activity.TaskEditFragment.Companion.newTaskEditFragment import com.todoroo.astrid.adapter.SubheaderClickHandler -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.service.TaskCreator import dagger.hilt.android.AndroidEntryPoint @@ -53,6 +52,7 @@ import org.tasks.dialogs.NewFilterDialog import org.tasks.dialogs.WhatsNewDialog 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.PlaceFilter import org.tasks.location.LocationPickerActivity.Companion.EXTRA_PLACE diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivityViewModel.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivityViewModel.kt index 4f06bdf65..b2a2b712e 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivityViewModel.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivityViewModel.kt @@ -10,7 +10,6 @@ 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.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import dagger.hilt.android.lifecycle.HiltViewModel @@ -28,11 +27,12 @@ import org.tasks.R import org.tasks.Tasks.Companion.IS_GENERIC import org.tasks.billing.Inventory import org.tasks.compose.drawer.DrawerItem -import org.tasks.data.dao.CaldavDao import org.tasks.data.NO_COUNT -import org.tasks.data.entity.Task -import org.tasks.data.dao.TaskDao 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.Filter import org.tasks.filters.FilterProvider import org.tasks.filters.NavigationDrawerSubheader import org.tasks.filters.PlaceFilter diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt index d9d74e72a..4327dae65 100755 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt @@ -44,9 +44,7 @@ import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout.Behavior.DragCallback import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreoMR1 import com.todoroo.andlib.utility.DateUtilities -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task import com.todoroo.astrid.files.FilesControlSet import com.todoroo.astrid.repeats.RepeatControlSet import com.todoroo.astrid.tags.TagsControlSet @@ -70,10 +68,11 @@ import org.tasks.compose.edit.DueDateRow import org.tasks.compose.edit.InfoRow import org.tasks.compose.edit.ListRow import org.tasks.compose.edit.PriorityRow -import org.tasks.data.entity.Alarm import org.tasks.data.Location -import org.tasks.data.entity.TagData import org.tasks.data.dao.UserActivityDao +import org.tasks.data.entity.Alarm +import org.tasks.data.entity.TagData +import org.tasks.data.entity.Task import org.tasks.databinding.FragmentTaskEditBinding import org.tasks.databinding.TaskEditCalendarBinding import org.tasks.databinding.TaskEditFilesBinding @@ -92,6 +91,7 @@ import org.tasks.dialogs.FilterPicker.Companion.setFilterPickerResultListener import org.tasks.dialogs.Linkify import org.tasks.extensions.hideKeyboard import org.tasks.files.FileHelper +import org.tasks.filters.Filter import org.tasks.fragments.TaskEditControlSetFragmentManager import org.tasks.fragments.TaskEditControlSetFragmentManager.Companion.TAG_CREATION import org.tasks.fragments.TaskEditControlSetFragmentManager.Companion.TAG_DESCRIPTION diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt index 013cfb221..24bfad84d 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -53,11 +53,8 @@ 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.AstridOrderingFilter import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CustomFilter -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterImpl import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import com.todoroo.astrid.core.BuiltInFilterExposer @@ -112,6 +109,9 @@ import org.tasks.extensions.Context.toast import org.tasks.extensions.Fragment.safeStartActivityForResult import org.tasks.extensions.hideKeyboard import org.tasks.extensions.setOnQueryTextListener +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter +import org.tasks.filters.FilterImpl import org.tasks.filters.PlaceFilter import org.tasks.markdown.MarkdownProvider import org.tasks.preferences.Device diff --git a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt index aea24b2ae..1e9236b95 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/AstridTaskAdapter.kt @@ -1,16 +1,16 @@ package com.todoroo.astrid.adapter -import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task import com.todoroo.astrid.service.TaskMover import com.todoroo.astrid.subtasks.SubtasksFilterUpdater import org.tasks.LocalBroadcastManager import org.tasks.Strings.isNullOrEmpty +import org.tasks.data.TaskContainer import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.GoogleTaskDao -import org.tasks.data.TaskContainer +import org.tasks.data.entity.Task import org.tasks.data.entity.TaskListMetadata +import org.tasks.filters.AstridOrderingFilter import org.tasks.time.DateTimeUtils2.currentTimeMillis import timber.log.Timber import java.util.Collections diff --git a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt index d7c05610f..496849615 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt @@ -9,13 +9,13 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CustomFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import org.tasks.R import org.tasks.billing.Inventory import org.tasks.databinding.FilterAdapterRowBinding import org.tasks.extensions.formatNumber +import org.tasks.filters.Filter import org.tasks.filters.PlaceFilter import org.tasks.themes.ColorProvider import org.tasks.themes.CustomIcons.getIconResId diff --git a/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt index 89e74e7fe..0ddbf56d4 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt @@ -10,14 +10,15 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.channels.Channel +import org.tasks.R import org.tasks.activities.DragAndDropDiffer import org.tasks.billing.Inventory +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem import org.tasks.filters.NavigationDrawerSubheader import org.tasks.themes.ColorProvider import java.util.LinkedList @@ -58,7 +59,11 @@ class NavigationDrawerAdapter @Inject constructor( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val type = FilterListItem.Type.values()[viewType] - val view = LayoutInflater.from(parent.context).inflate(type.layout, parent, false) + val layout = when (type) { + FilterListItem.Type.ITEM -> R.layout.filter_adapter_row + FilterListItem.Type.SUBHEADER -> R.layout.filter_adapter_subheader + } + val view = LayoutInflater.from(parent.context).inflate(layout, parent, false) return when (type) { FilterListItem.Type.ITEM -> FilterViewHolder( view, true, locale, activity, inventory, colorProvider) { onClickFilter(it) } diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt index f30cf4435..f6a419243 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt @@ -1,14 +1,11 @@ package com.todoroo.astrid.adapter import android.content.Context -import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import com.todoroo.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task.Companion.isUuidEmpty import com.todoroo.astrid.service.TaskMover import com.todoroo.astrid.subtasks.SubtasksFilterUpdater import com.todoroo.astrid.subtasks.SubtasksHelper @@ -18,8 +15,11 @@ import org.tasks.LocalBroadcastManager import org.tasks.Strings.isNullOrEmpty import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.GoogleTaskDao -import org.tasks.data.entity.TaskListMetadata import org.tasks.data.dao.TaskListMetadataDao +import org.tasks.data.entity.Task.Companion.isUuidEmpty +import org.tasks.data.entity.TaskListMetadata +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter import org.tasks.preferences.Preferences import javax.inject.Inject diff --git a/app/src/main/java/com/todoroo/astrid/api/CaldavFilter.kt b/app/src/main/java/com/todoroo/astrid/api/CaldavFilter.kt index 179924191..0fd8491b1 100644 --- a/app/src/main/java/com/todoroo/astrid/api/CaldavFilter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/CaldavFilter.kt @@ -10,6 +10,8 @@ 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 @Parcelize data class CaldavFilter( diff --git a/app/src/main/java/com/todoroo/astrid/api/CustomFilter.kt b/app/src/main/java/com/todoroo/astrid/api/CustomFilter.kt index ef865cd21..18efc882e 100644 --- a/app/src/main/java/com/todoroo/astrid/api/CustomFilter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/CustomFilter.kt @@ -1,6 +1,8 @@ package com.todoroo.astrid.api import kotlinx.parcelize.Parcelize +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem import org.tasks.themes.CustomIcons @Parcelize diff --git a/app/src/main/java/com/todoroo/astrid/api/EmptyFilter.kt b/app/src/main/java/com/todoroo/astrid/api/EmptyFilter.kt index 9f9fe672b..5b3e68a6e 100644 --- a/app/src/main/java/com/todoroo/astrid/api/EmptyFilter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/EmptyFilter.kt @@ -1,8 +1,13 @@ package com.todoroo.astrid.api import kotlinx.parcelize.Parcelize +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem @Parcelize -class EmptyFilter(override val sql: String? = "WHERE 0", override val title: String? = null) : Filter { +class EmptyFilter( + override val sql: String? = "WHERE 0", + override val title: String? = null +) : Filter { override fun areItemsTheSame(other: FilterListItem): Boolean = false } \ No newline at end of file diff --git a/app/src/main/java/com/todoroo/astrid/api/FilterListItem.kt b/app/src/main/java/com/todoroo/astrid/api/FilterListItem.kt deleted file mode 100644 index 61d896c56..000000000 --- a/app/src/main/java/com/todoroo/astrid/api/FilterListItem.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.todoroo.astrid.api - -import androidx.annotation.LayoutRes -import org.tasks.R - -interface FilterListItem { - val itemType: Type - - fun areItemsTheSame(other: FilterListItem): Boolean - - enum class Type(@param:LayoutRes val layout: Int) { - ITEM(R.layout.filter_adapter_row), - SUBHEADER(R.layout.filter_adapter_subheader), - } -} diff --git a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.kt b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.kt index 8c99e9239..d03f37124 100644 --- a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.kt @@ -11,6 +11,8 @@ import org.tasks.data.entity.CaldavTask import org.tasks.data.GoogleTask import org.tasks.data.NO_COUNT import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem @Parcelize data class GtasksFilter( diff --git a/app/src/main/java/com/todoroo/astrid/api/SearchFilter.kt b/app/src/main/java/com/todoroo/astrid/api/SearchFilter.kt index 37e99349b..c901e9a22 100644 --- a/app/src/main/java/com/todoroo/astrid/api/SearchFilter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/SearchFilter.kt @@ -1,17 +1,19 @@ package com.todoroo.astrid.api -import org.tasks.data.sql.Criterion -import org.tasks.data.sql.Join -import org.tasks.data.sql.Query -import org.tasks.data.sql.QueryTemplate -import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavTask import org.tasks.data.entity.Geofence import org.tasks.data.entity.Place import org.tasks.data.entity.Tag +import org.tasks.data.entity.Task import org.tasks.data.entity.UserActivity +import org.tasks.data.sql.Criterion +import org.tasks.data.sql.Join +import org.tasks.data.sql.Query +import org.tasks.data.sql.QueryTemplate +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem @Parcelize data class SearchFilter( diff --git a/app/src/main/java/com/todoroo/astrid/api/TagFilter.kt b/app/src/main/java/com/todoroo/astrid/api/TagFilter.kt index 60244ce47..3b250c7c0 100644 --- a/app/src/main/java/com/todoroo/astrid/api/TagFilter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/TagFilter.kt @@ -10,6 +10,8 @@ import org.tasks.data.entity.Task import org.tasks.data.sql.Criterion.Companion.and import org.tasks.data.sql.Join.Companion.inner import org.tasks.data.sql.QueryTemplate +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.FilterListItem @Parcelize data class TagFilter( diff --git a/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt b/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt index c37aa6f92..039f0a129 100644 --- a/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt +++ b/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt @@ -7,19 +7,19 @@ package com.todoroo.astrid.core import android.content.Context import android.content.res.Resources -import org.tasks.data.sql.Criterion.Companion.and -import org.tasks.data.sql.Criterion.Companion.or -import org.tasks.data.sql.Join -import org.tasks.data.sql.QueryTemplate -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterImpl -import org.tasks.data.entity.Task import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.R +import org.tasks.data.dao.TaskDao import org.tasks.data.entity.CaldavAccount import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavTask -import org.tasks.data.dao.TaskDao +import org.tasks.data.entity.Task +import org.tasks.data.sql.Criterion.Companion.and +import org.tasks.data.sql.Criterion.Companion.or +import org.tasks.data.sql.Join +import org.tasks.data.sql.QueryTemplate +import org.tasks.filters.Filter +import org.tasks.filters.FilterImpl import org.tasks.filters.MyTasksFilter import org.tasks.filters.NotificationsFilter import org.tasks.filters.RecentlyModifiedFilter diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt index 862e37065..17e74bf4c 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.dao -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.timers.TimerPlugin import org.tasks.LocalBroadcastManager import org.tasks.data.TaskContainer @@ -16,6 +15,7 @@ import org.tasks.data.fetchFiltered import org.tasks.data.fetchTasks import org.tasks.data.setCollapsed import org.tasks.date.DateTimeUtils.isAfterNow +import org.tasks.filters.Filter import org.tasks.jobs.WorkManager import org.tasks.location.GeofenceApi import org.tasks.notifications.NotificationManager diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt index e3fd919a0..a82f93afa 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt @@ -3,7 +3,6 @@ package com.todoroo.astrid.service import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.DateUtilities import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.PermaSql import com.todoroo.astrid.dao.TaskDao @@ -36,6 +35,7 @@ import org.tasks.data.entity.Task.Companion.DUE_DATE import org.tasks.data.entity.Task.Companion.HIDE_UNTIL import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_NONE import org.tasks.data.entity.Task.Companion.IMPORTANCE +import org.tasks.filters.Filter import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences import org.tasks.time.DateTimeUtils.startOfDay diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt b/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt index 31377ddc2..b59343b35 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt @@ -2,21 +2,21 @@ package com.todoroo.astrid.service import android.content.Context import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.BuildConfig import org.tasks.LocalBroadcastManager import org.tasks.caldav.VtodoCache -import org.tasks.data.entity.CaldavAccount import org.tasks.data.dao.CaldavDao -import org.tasks.data.entity.CaldavTask import org.tasks.data.dao.GoogleTaskDao import org.tasks.data.dao.GoogleTaskListDao -import org.tasks.data.entity.Task import org.tasks.data.dao.TaskDao -import org.tasks.data.getLocalList import org.tasks.data.db.DbUtils.dbchunk +import org.tasks.data.entity.CaldavAccount +import org.tasks.data.entity.CaldavTask +import org.tasks.data.entity.Task +import org.tasks.data.getLocalList +import org.tasks.filters.Filter import org.tasks.preferences.Preferences import org.tasks.sync.SyncAdapters import org.tasks.time.DateTimeUtils2.currentTimeMillis diff --git a/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.kt b/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.kt index 0eada10e2..cc863074d 100644 --- a/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.kt +++ b/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.kt @@ -1,6 +1,5 @@ package com.todoroo.astrid.subtasks -import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.dao.TaskDao import org.tasks.data.entity.Task import org.tasks.data.entity.Task.Companion.isValidUuid @@ -10,6 +9,7 @@ import org.tasks.Strings.isNullOrEmpty import org.tasks.data.entity.TaskListMetadata import org.tasks.data.dao.TaskListMetadataDao import org.tasks.db.QueryUtils.showHiddenAndCompleted +import org.tasks.filters.AstridOrderingFilter import timber.log.Timber import java.util.* import javax.inject.Inject diff --git a/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.kt b/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.kt index 0ee8073be..47f027458 100644 --- a/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.kt +++ b/app/src/main/java/com/todoroo/astrid/subtasks/SubtasksHelper.kt @@ -1,22 +1,22 @@ package com.todoroo.astrid.subtasks import android.content.Context -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.core.BuiltInFilterExposer.Companion.isInbox import com.todoroo.astrid.core.BuiltInFilterExposer.Companion.isTodayFilter import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task.Companion.isValidUuid import com.todoroo.astrid.subtasks.SubtasksFilterUpdater.Companion.buildOrderString import com.todoroo.astrid.subtasks.SubtasksFilterUpdater.Companion.buildTreeModel import com.todoroo.astrid.subtasks.SubtasksFilterUpdater.Companion.serializeTree import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.Strings.isNullOrEmpty -import org.tasks.data.entity.TagData import org.tasks.data.dao.TagDataDao -import org.tasks.data.entity.TaskListMetadata import org.tasks.data.dao.TaskListMetadataDao +import org.tasks.data.entity.TagData +import org.tasks.data.entity.Task.Companion.isValidUuid +import org.tasks.data.entity.TaskListMetadata import org.tasks.db.QueryUtils.showHiddenAndCompleted +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter import org.tasks.preferences.QueryPreferences import timber.log.Timber import javax.inject.Inject @@ -29,8 +29,8 @@ class SubtasksHelper @Inject constructor( ) { suspend fun applySubtasksToWidgetFilter( - filter: Filter, - preferences: QueryPreferences, + filter: Filter, + preferences: QueryPreferences, ) { if (filter is AstridOrderingFilter && preferences.isAstridSort) { var query = filter.sql!! diff --git a/app/src/main/java/org/tasks/Notifier.kt b/app/src/main/java/org/tasks/Notifier.kt index 0744e5c1b..a0b4044c8 100644 --- a/app/src/main/java/org/tasks/Notifier.kt +++ b/app/src/main/java/org/tasks/Notifier.kt @@ -3,7 +3,6 @@ package org.tasks import android.app.PendingIntent import android.content.Context import androidx.core.app.NotificationCompat -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.voice.VoiceOutputAssistant import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.delay @@ -14,6 +13,7 @@ import org.tasks.data.entity.Alarm.Companion.TYPE_GEO_EXIT import org.tasks.data.entity.Geofence import org.tasks.data.entity.Notification import org.tasks.data.fetchFiltered +import org.tasks.filters.Filter import org.tasks.intents.TaskIntents import org.tasks.notifications.AudioManager import org.tasks.notifications.NotificationManager diff --git a/app/src/main/java/org/tasks/activities/NavigationDrawerCustomization.kt b/app/src/main/java/org/tasks/activities/NavigationDrawerCustomization.kt index c3c3daa1e..542b54f27 100644 --- a/app/src/main/java/org/tasks/activities/NavigationDrawerCustomization.kt +++ b/app/src/main/java/org/tasks/activities/NavigationDrawerCustomization.kt @@ -20,9 +20,6 @@ import com.todoroo.astrid.adapter.FilterViewHolder import com.todoroo.astrid.adapter.NavigationDrawerAdapter import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CustomFilter -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem -import com.todoroo.astrid.api.FilterListItem.Type.ITEM import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import dagger.hilt.android.AndroidEntryPoint @@ -37,6 +34,8 @@ import org.tasks.data.dao.LocationDao import org.tasks.data.dao.TagDataDao import org.tasks.data.listSettingsClass import org.tasks.databinding.ActivityTagOrganizerBinding +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem import org.tasks.filters.FilterProvider import org.tasks.filters.PlaceFilter import org.tasks.injection.ThemedInjectingAppCompatActivity @@ -162,7 +161,7 @@ class NavigationDrawerCustomization : ThemedInjectingAppCompatActivity(), Toolba private var to = -1 override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) = - if (viewHolder.itemViewType == ITEM.ordinal) ALLOW_DRAGGING else NO_MOVEMENT + if (viewHolder.itemViewType == 0) ALLOW_DRAGGING else NO_MOVEMENT override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) { super.onSelectedChanged(viewHolder, actionState) diff --git a/app/src/main/java/org/tasks/compose/FilterChip.kt b/app/src/main/java/org/tasks/compose/FilterChip.kt index 102387b05..d3d726e63 100644 --- a/app/src/main/java/org/tasks/compose/FilterChip.kt +++ b/app/src/main/java/org/tasks/compose/FilterChip.kt @@ -1,7 +1,7 @@ package org.tasks.compose import androidx.compose.runtime.Composable -import com.todoroo.astrid.api.Filter +import org.tasks.filters.Filter import org.tasks.themes.CustomIcons @Composable diff --git a/app/src/main/java/org/tasks/compose/drawer/DrawerItem.kt b/app/src/main/java/org/tasks/compose/drawer/DrawerItem.kt index e115b3f27..d107f0e80 100644 --- a/app/src/main/java/org/tasks/compose/drawer/DrawerItem.kt +++ b/app/src/main/java/org/tasks/compose/drawer/DrawerItem.kt @@ -10,7 +10,7 @@ sealed interface DrawerItem { val count: Int = 0, val shareCount: Int = 0, val selected: Boolean = false, - val type: () -> com.todoroo.astrid.api.Filter, + val type: () -> org.tasks.filters.Filter, ) : DrawerItem data class Header( val title: String, diff --git a/app/src/main/java/org/tasks/compose/drawer/TaskListDrawer.kt b/app/src/main/java/org/tasks/compose/drawer/TaskListDrawer.kt index 9bb892106..f215c2be9 100644 --- a/app/src/main/java/org/tasks/compose/drawer/TaskListDrawer.kt +++ b/app/src/main/java/org/tasks/compose/drawer/TaskListDrawer.kt @@ -45,12 +45,12 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.todoroo.astrid.api.FilterImpl import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import org.tasks.R import org.tasks.Tasks.Companion.IS_GENERIC import org.tasks.extensions.formatNumber +import org.tasks.filters.FilterImpl import org.tasks.filters.NavigationDrawerSubheader import org.tasks.themes.TasksTheme diff --git a/app/src/main/java/org/tasks/compose/drawer/TasksMenu.kt b/app/src/main/java/org/tasks/compose/drawer/TasksMenu.kt index 280d848f0..3035805b8 100644 --- a/app/src/main/java/org/tasks/compose/drawer/TasksMenu.kt +++ b/app/src/main/java/org/tasks/compose/drawer/TasksMenu.kt @@ -3,8 +3,8 @@ package org.tasks.compose.drawer import android.content.Intent import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -17,7 +17,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.todoroo.astrid.api.Filter import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -27,6 +26,7 @@ import org.tasks.activities.NavigationDrawerCustomization import org.tasks.billing.PurchaseActivity import org.tasks.extensions.Context.findActivity import org.tasks.extensions.Context.openUri +import org.tasks.filters.Filter import org.tasks.filters.NavigationDrawerSubheader import org.tasks.preferences.HelpAndFeedback import org.tasks.preferences.MainPreferences diff --git a/app/src/main/java/org/tasks/compose/edit/ListRow.kt b/app/src/main/java/org/tasks/compose/edit/ListRow.kt index 45031b0e4..f9cab8658 100644 --- a/app/src/main/java/org/tasks/compose/edit/ListRow.kt +++ b/app/src/main/java/org/tasks/compose/edit/ListRow.kt @@ -7,12 +7,12 @@ import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterImpl import org.tasks.R import org.tasks.compose.ChipGroup import org.tasks.compose.FilterChip import org.tasks.compose.TaskEditRow +import org.tasks.filters.Filter +import org.tasks.filters.FilterImpl import org.tasks.themes.TasksTheme @Composable diff --git a/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt b/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt index 264bd0622..9952e0e3d 100644 --- a/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt +++ b/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt @@ -33,7 +33,6 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import org.tasks.compose.CheckBox import org.tasks.compose.ClearButton @@ -44,6 +43,7 @@ import org.tasks.compose.TaskEditRow import org.tasks.data.TaskContainer import org.tasks.data.entity.Task import org.tasks.data.isHidden +import org.tasks.filters.Filter import org.tasks.tasklist.SectionedDataSource import org.tasks.themes.TasksTheme import org.tasks.ui.TaskListViewModel diff --git a/app/src/main/java/org/tasks/compose/pickers/FilterPicker.kt b/app/src/main/java/org/tasks/compose/pickers/FilterPicker.kt index 4bbd6b31b..b38609e9c 100644 --- a/app/src/main/java/org/tasks/compose/pickers/FilterPicker.kt +++ b/app/src/main/java/org/tasks/compose/pickers/FilterPicker.kt @@ -19,10 +19,10 @@ 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 com.todoroo.astrid.api.Filter import org.tasks.R import org.tasks.compose.collectAsStateLifecycleAware import org.tasks.dialogs.FilterPickerViewModel +import org.tasks.filters.Filter import org.tasks.filters.NavigationDrawerSubheader @Composable diff --git a/app/src/main/java/org/tasks/data/TaskDaoExtensions.kt b/app/src/main/java/org/tasks/data/TaskDaoExtensions.kt index 5b0aa740b..b78c5f745 100644 --- a/app/src/main/java/org/tasks/data/TaskDaoExtensions.kt +++ b/app/src/main/java/org/tasks/data/TaskDaoExtensions.kt @@ -1,12 +1,12 @@ package org.tasks.data -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.PermaSql import org.tasks.data.dao.TaskDao import org.tasks.data.db.SuspendDbUtils.eachChunk import org.tasks.data.entity.Task import org.tasks.data.sql.Field import org.tasks.data.sql.Query +import org.tasks.filters.Filter import org.tasks.preferences.QueryPreferences import org.tasks.time.DateTimeUtils2.currentTimeMillis import timber.log.Timber diff --git a/app/src/main/java/org/tasks/data/TaskListQuery.kt b/app/src/main/java/org/tasks/data/TaskListQuery.kt index 522013999..abafc372a 100644 --- a/app/src/main/java/org/tasks/data/TaskListQuery.kt +++ b/app/src/main/java/org/tasks/data/TaskListQuery.kt @@ -1,11 +1,5 @@ package org.tasks.data -import org.tasks.data.sql.Criterion -import org.tasks.data.sql.Field.Companion.field -import org.tasks.data.sql.Join -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.Filter -import org.tasks.data.entity.Task import org.tasks.data.TaskListQueryNonRecursive.getNonRecursiveQuery import org.tasks.data.TaskListQueryRecursive.getRecursiveQuery import org.tasks.data.entity.CaldavAccount @@ -13,6 +7,12 @@ import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavTask import org.tasks.data.entity.Geofence import org.tasks.data.entity.Place +import org.tasks.data.entity.Task +import org.tasks.data.sql.Criterion +import org.tasks.data.sql.Field.Companion.field +import org.tasks.data.sql.Join +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter import org.tasks.preferences.QueryPreferences object TaskListQuery { @@ -39,8 +39,8 @@ object TaskListQuery { @JvmStatic fun getQuery( - preferences: QueryPreferences, - filter: Filter, + preferences: QueryPreferences, + filter: Filter, ): MutableList = when { filter.supportsManualSort() && preferences.isManualSort -> getRecursiveQuery(filter, preferences) diff --git a/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt b/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt index 9b07fa84f..d7381393d 100644 --- a/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt +++ b/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt @@ -1,14 +1,14 @@ package org.tasks.data -import org.tasks.data.sql.Field.Companion.field -import org.tasks.data.sql.Join -import org.tasks.data.sql.Query -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.PermaSql import com.todoroo.astrid.core.SortHelper import org.tasks.data.entity.Tag import org.tasks.data.entity.Task +import org.tasks.data.sql.Field.Companion.field +import org.tasks.data.sql.Join +import org.tasks.data.sql.Query +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter import org.tasks.filters.RecentlyModifiedFilter import org.tasks.preferences.QueryPreferences diff --git a/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt b/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt index f65b2a38c..e2b92bcc0 100644 --- a/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt +++ b/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt @@ -1,20 +1,20 @@ package org.tasks.data -import org.tasks.data.db.Table -import org.tasks.data.sql.Criterion -import org.tasks.data.sql.Field.Companion.field -import org.tasks.data.sql.Join -import org.tasks.data.sql.Query -import org.tasks.data.sql.QueryTemplate import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.PermaSql import com.todoroo.astrid.core.SortHelper -import org.tasks.data.entity.Task import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible +import org.tasks.data.db.Table import org.tasks.data.entity.CaldavTask import org.tasks.data.entity.Tag +import org.tasks.data.entity.Task +import org.tasks.data.sql.Criterion +import org.tasks.data.sql.Field.Companion.field +import org.tasks.data.sql.Join +import org.tasks.data.sql.Query +import org.tasks.data.sql.QueryTemplate +import org.tasks.filters.Filter import org.tasks.preferences.QueryPreferences internal object TaskListQueryRecursive { diff --git a/app/src/main/java/org/tasks/dialogs/FilterPicker.kt b/app/src/main/java/org/tasks/dialogs/FilterPicker.kt index 64c7ee45c..914e65eb1 100644 --- a/app/src/main/java/org/tasks/dialogs/FilterPicker.kt +++ b/app/src/main/java/org/tasks/dialogs/FilterPicker.kt @@ -7,10 +7,10 @@ import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.setFragmentResult import androidx.lifecycle.LifecycleOwner -import com.todoroo.astrid.api.Filter import dagger.hilt.android.AndroidEntryPoint import org.tasks.R import org.tasks.compose.pickers.FilterPicker +import org.tasks.filters.Filter import javax.inject.Inject @AndroidEntryPoint diff --git a/app/src/main/java/org/tasks/dialogs/FilterPickerViewModel.kt b/app/src/main/java/org/tasks/dialogs/FilterPickerViewModel.kt index c4617833e..9211a4604 100644 --- a/app/src/main/java/org/tasks/dialogs/FilterPickerViewModel.kt +++ b/app/src/main/java/org/tasks/dialogs/FilterPickerViewModel.kt @@ -6,8 +6,6 @@ import android.content.Intent import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableStateFlow @@ -20,6 +18,8 @@ import org.tasks.R import org.tasks.billing.Inventory import org.tasks.data.dao.CaldavDao import org.tasks.dialogs.FilterPicker.Companion.EXTRA_LISTS_ONLY +import org.tasks.filters.Filter +import org.tasks.filters.FilterListItem import org.tasks.filters.FilterProvider import org.tasks.filters.NavigationDrawerSubheader import org.tasks.preferences.Preferences diff --git a/app/src/main/java/org/tasks/filters/AlphanumComparator.kt b/app/src/main/java/org/tasks/filters/AlphanumComparator.kt index 650f44d42..2e28e355c 100644 --- a/app/src/main/java/org/tasks/filters/AlphanumComparator.kt +++ b/app/src/main/java/org/tasks/filters/AlphanumComparator.kt @@ -1,6 +1,5 @@ package org.tasks.filters -import com.todoroo.astrid.api.Filter import org.tasks.data.entity.TagData import java.util.* diff --git a/app/src/main/java/org/tasks/filters/FilterProvider.kt b/app/src/main/java/org/tasks/filters/FilterProvider.kt index a23556a75..faceb2b0f 100644 --- a/app/src/main/java/org/tasks/filters/FilterProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterProvider.kt @@ -5,8 +5,6 @@ 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.api.Filter -import com.todoroo.astrid.api.FilterListItem import com.todoroo.astrid.core.BuiltInFilterExposer import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.BuildConfig diff --git a/app/src/main/java/org/tasks/filters/MyTasksFilter.kt b/app/src/main/java/org/tasks/filters/MyTasksFilter.kt index 4468c4558..7a64fb91f 100644 --- a/app/src/main/java/org/tasks/filters/MyTasksFilter.kt +++ b/app/src/main/java/org/tasks/filters/MyTasksFilter.kt @@ -2,8 +2,6 @@ package org.tasks.filters import org.tasks.data.sql.Criterion import org.tasks.data.sql.QueryTemplate -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.FilterListItem import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize import org.tasks.data.dao.TaskDao diff --git a/app/src/main/java/org/tasks/filters/NavigationDrawerSubheader.kt b/app/src/main/java/org/tasks/filters/NavigationDrawerSubheader.kt index 6bab1c072..6d5e29aed 100644 --- a/app/src/main/java/org/tasks/filters/NavigationDrawerSubheader.kt +++ b/app/src/main/java/org/tasks/filters/NavigationDrawerSubheader.kt @@ -1,7 +1,6 @@ package org.tasks.filters import android.content.Intent -import com.todoroo.astrid.api.FilterListItem data class NavigationDrawerSubheader( val title: String?, diff --git a/app/src/main/java/org/tasks/filters/NotificationsFilter.kt b/app/src/main/java/org/tasks/filters/NotificationsFilter.kt index 6be26968a..084b5d7d6 100644 --- a/app/src/main/java/org/tasks/filters/NotificationsFilter.kt +++ b/app/src/main/java/org/tasks/filters/NotificationsFilter.kt @@ -2,8 +2,6 @@ package org.tasks.filters import org.tasks.data.sql.Join import org.tasks.data.sql.QueryTemplate -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize import org.tasks.R diff --git a/app/src/main/java/org/tasks/filters/PlaceFilter.kt b/app/src/main/java/org/tasks/filters/PlaceFilter.kt index 9f88d882d..9958a3b06 100644 --- a/app/src/main/java/org/tasks/filters/PlaceFilter.kt +++ b/app/src/main/java/org/tasks/filters/PlaceFilter.kt @@ -2,8 +2,6 @@ package org.tasks.filters import android.content.Context import com.todoroo.andlib.utility.AndroidUtilities -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import kotlinx.parcelize.Parcelize import org.tasks.data.NO_COUNT import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible diff --git a/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.kt b/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.kt index 87f330b0f..06b8de230 100644 --- a/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.kt +++ b/app/src/main/java/org/tasks/filters/RecentlyModifiedFilter.kt @@ -3,8 +3,6 @@ package org.tasks.filters import org.tasks.data.sql.Criterion.Companion.and import org.tasks.data.sql.Order.Companion.desc import org.tasks.data.sql.QueryTemplate -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize import org.tasks.themes.CustomIcons diff --git a/app/src/main/java/org/tasks/filters/SnoozedFilter.kt b/app/src/main/java/org/tasks/filters/SnoozedFilter.kt index a39956062..f60f16a9a 100644 --- a/app/src/main/java/org/tasks/filters/SnoozedFilter.kt +++ b/app/src/main/java/org/tasks/filters/SnoozedFilter.kt @@ -4,8 +4,6 @@ import org.tasks.data.sql.Criterion.Companion.and import org.tasks.data.sql.Functions.now import org.tasks.data.sql.Join.Companion.inner import org.tasks.data.sql.QueryTemplate -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize import org.tasks.R diff --git a/app/src/main/java/org/tasks/filters/SubtaskFilter.kt b/app/src/main/java/org/tasks/filters/SubtaskFilter.kt index c2dd0190c..33ccc793d 100644 --- a/app/src/main/java/org/tasks/filters/SubtaskFilter.kt +++ b/app/src/main/java/org/tasks/filters/SubtaskFilter.kt @@ -1,7 +1,5 @@ package org.tasks.filters -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize import org.tasks.data.dao.TaskDao diff --git a/app/src/main/java/org/tasks/filters/TimerFilter.kt b/app/src/main/java/org/tasks/filters/TimerFilter.kt index 8605278e1..e0fb0400f 100644 --- a/app/src/main/java/org/tasks/filters/TimerFilter.kt +++ b/app/src/main/java/org/tasks/filters/TimerFilter.kt @@ -2,8 +2,6 @@ package org.tasks.filters import org.tasks.data.sql.Criterion import org.tasks.data.sql.QueryTemplate -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterListItem import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize import org.tasks.R diff --git a/app/src/main/java/org/tasks/filters/TodayFilter.kt b/app/src/main/java/org/tasks/filters/TodayFilter.kt index 864b023c8..e6bcb4560 100644 --- a/app/src/main/java/org/tasks/filters/TodayFilter.kt +++ b/app/src/main/java/org/tasks/filters/TodayFilter.kt @@ -3,8 +3,6 @@ package org.tasks.filters import org.tasks.data.sql.Criterion import org.tasks.data.sql.QueryTemplate import com.todoroo.andlib.utility.AndroidUtilities -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.FilterListItem import com.todoroo.astrid.api.PermaSql import org.tasks.data.entity.Task import kotlinx.parcelize.Parcelize diff --git a/app/src/main/java/org/tasks/intents/TaskIntents.java b/app/src/main/java/org/tasks/intents/TaskIntents.java deleted file mode 100644 index 010ca1b23..000000000 --- a/app/src/main/java/org/tasks/intents/TaskIntents.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.tasks.intents; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import androidx.annotation.Nullable; -import com.todoroo.astrid.activity.MainActivity; -import com.todoroo.astrid.api.Filter; -import org.tasks.data.entity.Task; - -public class TaskIntents { - - public static final int FLAGS = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP; - - public static Intent getNewTaskIntent( - Context context, - @Nullable Filter filter, - String createSource - ) { - Intent intent = new Intent(context, MainActivity.class); - if (filter != null) { - intent.putExtra(MainActivity.OPEN_FILTER, filter); - } - intent.putExtra(MainActivity.CREATE_TASK, 0L); - intent.putExtra(MainActivity.CREATE_SOURCE, createSource); - intent.putExtra(MainActivity.REMOVE_TASK, true); - return intent; - } - - public static Intent getEditTaskIntent(Context context, @Nullable Filter filter, Task task) { - Intent intent = new Intent(context, MainActivity.class); - if (filter != null) { - intent.putExtra(MainActivity.OPEN_FILTER, filter); - } - intent.putExtra(MainActivity.OPEN_TASK, task); - intent.putExtra(MainActivity.REMOVE_TASK, true); - return intent; - } - - public static Intent getTaskListIntent(Context context, @Nullable Filter filter) { - Intent intent = new Intent(context, MainActivity.class); - intent.setFlags(FLAGS); - if (filter != null) { - intent.putExtra(MainActivity.OPEN_FILTER, filter); - } - return intent; - } - - public static Intent getTaskListByIdIntent(Context context, @Nullable String filterId) { - Intent intent = new Intent(Intent.ACTION_MAIN); - intent.setComponent(new ComponentName(context, MainActivity.class)); - intent.putExtra(MainActivity.LOAD_FILTER, filterId); - return intent; - } -} diff --git a/app/src/main/java/org/tasks/intents/TaskIntents.kt b/app/src/main/java/org/tasks/intents/TaskIntents.kt new file mode 100644 index 000000000..8bfda5a59 --- /dev/null +++ b/app/src/main/java/org/tasks/intents/TaskIntents.kt @@ -0,0 +1,53 @@ +package org.tasks.intents + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import com.todoroo.astrid.activity.MainActivity +import org.tasks.data.entity.Task +import org.tasks.filters.Filter + +object TaskIntents { + const val FLAGS: Int = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP + + fun getNewTaskIntent( + context: Context, + filter: Filter?, + createSource: String + ): Intent { + val intent = Intent(context, MainActivity::class.java) + if (filter != null) { + intent.putExtra(MainActivity.OPEN_FILTER, filter) + } + intent.putExtra(MainActivity.CREATE_TASK, 0L) + intent.putExtra(MainActivity.CREATE_SOURCE, createSource) + intent.putExtra(MainActivity.REMOVE_TASK, true) + return intent + } + + fun getEditTaskIntent(context: Context, filter: Filter?, task: Task?): Intent { + val intent = Intent(context, MainActivity::class.java) + if (filter != null) { + intent.putExtra(MainActivity.OPEN_FILTER, filter) + } + intent.putExtra(MainActivity.OPEN_TASK, task) + intent.putExtra(MainActivity.REMOVE_TASK, true) + return intent + } + + fun getTaskListIntent(context: Context, filter: Filter?): Intent { + val intent = Intent(context, MainActivity::class.java) + intent.setFlags(FLAGS) + if (filter != null) { + intent.putExtra(MainActivity.OPEN_FILTER, filter) + } + return intent + } + + fun getTaskListByIdIntent(context: Context, filterId: String?): Intent { + val intent = Intent(Intent.ACTION_MAIN) + intent.setComponent(ComponentName(context, MainActivity::class.java)) + intent.putExtra(MainActivity.LOAD_FILTER, filterId) + return intent + } +} diff --git a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt index cb906968d..8251fbe4c 100644 --- a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt +++ b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt @@ -3,7 +3,6 @@ package org.tasks.preferences import android.content.Context import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CustomFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import com.todoroo.astrid.core.BuiltInFilterExposer @@ -12,17 +11,18 @@ import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.runBlocking import org.tasks.R import org.tasks.Strings.isNullOrEmpty -import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_ONLY +import org.tasks.data.GoogleTask import org.tasks.data.dao.CaldavDao -import org.tasks.data.entity.CaldavTask import org.tasks.data.dao.FilterDao -import org.tasks.data.GoogleTask import org.tasks.data.dao.GoogleTaskDao import org.tasks.data.dao.GoogleTaskListDao import org.tasks.data.dao.LocationDao import org.tasks.data.dao.TagDataDao +import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_ONLY +import org.tasks.data.entity.CaldavTask import org.tasks.data.entity.Task import org.tasks.data.getLocalList +import org.tasks.filters.Filter import org.tasks.filters.PlaceFilter import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/org/tasks/preferences/fragments/TaskerListNotification.kt b/app/src/main/java/org/tasks/preferences/fragments/TaskerListNotification.kt index 3a3f9daf4..ab4788459 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/TaskerListNotification.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/TaskerListNotification.kt @@ -2,13 +2,13 @@ package org.tasks.preferences.fragments import android.content.Intent import android.os.Bundle -import com.todoroo.astrid.api.Filter import dagger.hilt.android.AndroidEntryPoint import org.tasks.R import org.tasks.billing.Inventory import org.tasks.billing.PurchaseActivity import org.tasks.dialogs.FilterPicker.Companion.newFilterPicker import org.tasks.dialogs.FilterPicker.Companion.setFilterPickerResultListener +import org.tasks.filters.Filter import org.tasks.injection.InjectingPreferenceFragment import org.tasks.locale.bundle.ListNotificationBundle import org.tasks.preferences.DefaultFilterProvider diff --git a/app/src/main/java/org/tasks/preferences/fragments/WidgetSettings.kt b/app/src/main/java/org/tasks/preferences/fragments/WidgetSettings.kt index 441a8a4f6..25ef0b3b3 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/WidgetSettings.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/WidgetSettings.kt @@ -10,8 +10,6 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.SeekBarPreference import androidx.preference.SwitchPreferenceCompat -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.core.SortHelper.SORT_ALPHA import com.todoroo.astrid.core.SortHelper.SORT_CREATED import com.todoroo.astrid.core.SortHelper.SORT_DUE @@ -31,6 +29,8 @@ import org.tasks.dialogs.FilterPicker.Companion.newFilterPicker import org.tasks.dialogs.FilterPicker.Companion.setFilterPickerResultListener import org.tasks.dialogs.SortSettingsActivity import org.tasks.dialogs.ThemePickerDialog.Companion.newThemePickerDialog +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter import org.tasks.injection.InjectingPreferenceFragment import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences diff --git a/app/src/main/java/org/tasks/tasklist/HeaderViewHolder.kt b/app/src/main/java/org/tasks/tasklist/HeaderViewHolder.kt index d4786e103..c8b345899 100644 --- a/app/src/main/java/org/tasks/tasklist/HeaderViewHolder.kt +++ b/app/src/main/java/org/tasks/tasklist/HeaderViewHolder.kt @@ -5,8 +5,8 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView -import com.todoroo.astrid.api.Filter import org.tasks.R +import org.tasks.filters.Filter class HeaderViewHolder( private val context: Context, diff --git a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.kt b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.kt index 9077fe7bb..9f23f3d1f 100644 --- a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.kt +++ b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.kt @@ -6,8 +6,8 @@ import androidx.recyclerview.widget.RecyclerView import com.todoroo.astrid.activity.TaskListFragment import com.todoroo.astrid.adapter.TaskAdapter import com.todoroo.astrid.adapter.TaskAdapterDataSource -import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.core.SortHelper +import org.tasks.filters.AstridOrderingFilter import org.tasks.preferences.Preferences abstract class TaskListRecyclerAdapter internal constructor( diff --git a/app/src/main/java/org/tasks/tasklist/TaskViewHolder.kt b/app/src/main/java/org/tasks/tasklist/TaskViewHolder.kt index 03b93fa79..f915b4cdd 100644 --- a/app/src/main/java/org/tasks/tasklist/TaskViewHolder.kt +++ b/app/src/main/java/org/tasks/tasklist/TaskViewHolder.kt @@ -15,7 +15,6 @@ import androidx.compose.ui.unit.dp import androidx.recyclerview.widget.RecyclerView import com.todoroo.andlib.utility.DateUtilities import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import com.todoroo.astrid.core.SortHelper.SORT_DUE @@ -34,6 +33,7 @@ import org.tasks.data.isOverdue import org.tasks.databinding.TaskAdapterRowBinding import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.dialogs.Linkify +import org.tasks.filters.Filter import org.tasks.filters.PlaceFilter import org.tasks.markdown.Markdown import org.tasks.preferences.Preferences diff --git a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt index 5c6a95c23..e8af21e05 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt @@ -10,7 +10,6 @@ import androidx.lifecycle.viewModelScope import com.todoroo.astrid.activity.TaskEditFragment import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.gcal.GCalHelper @@ -60,6 +59,7 @@ import org.tasks.data.entity.UserActivity import org.tasks.data.setPicture import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.files.FileHelper +import org.tasks.filters.Filter import org.tasks.location.GeofenceApi import org.tasks.preferences.PermissionChecker import org.tasks.preferences.Preferences diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt index b75e856b6..ebce31c80 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt @@ -6,10 +6,7 @@ import android.content.Context import android.content.Intent import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.api.EmptyFilter -import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.FilterImpl import com.todoroo.astrid.api.SearchFilter import com.todoroo.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.service.TaskDeleter @@ -37,6 +34,9 @@ import org.tasks.data.dao.TaskDao import org.tasks.data.entity.Task import org.tasks.data.fetchTasks import org.tasks.db.QueryUtils +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter +import org.tasks.filters.FilterImpl import org.tasks.preferences.Preferences import org.tasks.preferences.QueryPreferences import org.tasks.tasklist.SectionedDataSource diff --git a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt index dc42247e6..bb8a940a1 100644 --- a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt +++ b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt @@ -8,17 +8,17 @@ import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import com.google.android.material.textfield.TextInputEditText -import com.todoroo.astrid.api.Filter -import org.tasks.data.UUIDHelper import dagger.hilt.android.AndroidEntryPoint import org.tasks.R import org.tasks.Strings.isNullOrEmpty +import org.tasks.data.UUIDHelper import org.tasks.databinding.ActivityWidgetShortcutLayoutBinding import org.tasks.dialogs.ColorPalettePicker import org.tasks.dialogs.ColorPalettePicker.Companion.newColorPalette import org.tasks.dialogs.ColorPickerAdapter.Palette import org.tasks.dialogs.FilterPicker.Companion.newFilterPicker import org.tasks.dialogs.FilterPicker.Companion.setFilterPickerResultListener +import org.tasks.filters.Filter import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.intents.TaskIntents import org.tasks.preferences.DefaultFilterProvider diff --git a/app/src/main/java/org/tasks/widget/TasksWidget.kt b/app/src/main/java/org/tasks/widget/TasksWidget.kt index 35a703de7..4e99f16d8 100644 --- a/app/src/main/java/org/tasks/widget/TasksWidget.kt +++ b/app/src/main/java/org/tasks/widget/TasksWidget.kt @@ -10,7 +10,6 @@ import android.os.Bundle import android.view.View import android.widget.RemoteViews import com.todoroo.andlib.utility.AndroidUtilities.atLeastS -import com.todoroo.astrid.api.Filter import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.runBlocking @@ -19,6 +18,7 @@ import org.tasks.dialogs.FilterPicker import org.tasks.extensions.setBackgroundColor import org.tasks.extensions.setColorFilter import org.tasks.extensions.setRipple +import org.tasks.filters.Filter import org.tasks.intents.TaskIntents import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences diff --git a/app/src/main/java/org/tasks/widget/TasksWidgetViewFactory.kt b/app/src/main/java/org/tasks/widget/TasksWidgetViewFactory.kt index 2a8eb3cd7..b7c3f518f 100644 --- a/app/src/main/java/org/tasks/widget/TasksWidgetViewFactory.kt +++ b/app/src/main/java/org/tasks/widget/TasksWidgetViewFactory.kt @@ -6,16 +6,14 @@ import android.view.View import android.widget.RemoteViews import android.widget.RemoteViewsService.RemoteViewsFactory import com.todoroo.andlib.utility.DateUtilities -import com.todoroo.astrid.api.AstridOrderingFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.core.SortHelper import com.todoroo.astrid.subtasks.SubtasksHelper import kotlinx.coroutines.runBlocking import org.tasks.BuildConfig import org.tasks.R import org.tasks.data.TaskContainer -import org.tasks.data.dao.TaskDao import org.tasks.data.TaskListQuery.getQuery +import org.tasks.data.dao.TaskDao import org.tasks.data.hasNotes import org.tasks.data.isHidden import org.tasks.data.isOverdue @@ -25,6 +23,8 @@ import org.tasks.extensions.setColorFilter import org.tasks.extensions.setMaxLines import org.tasks.extensions.setTextSize import org.tasks.extensions.strikethrough +import org.tasks.filters.AstridOrderingFilter +import org.tasks.filters.Filter import org.tasks.markdown.Markdown import org.tasks.tasklist.HeaderFormatter import org.tasks.tasklist.SectionedDataSource diff --git a/app/src/main/java/org/tasks/widget/WidgetChipProvider.kt b/app/src/main/java/org/tasks/widget/WidgetChipProvider.kt index 444aa7a2f..026828001 100644 --- a/app/src/main/java/org/tasks/widget/WidgetChipProvider.kt +++ b/app/src/main/java/org/tasks/widget/WidgetChipProvider.kt @@ -5,17 +5,17 @@ import android.widget.RemoteViews import androidx.annotation.ColorInt import com.todoroo.andlib.utility.DateUtilities import com.todoroo.astrid.api.CaldavFilter -import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.BuildConfig import org.tasks.R -import org.tasks.data.entity.Task import org.tasks.data.TaskContainer +import org.tasks.data.entity.Task import org.tasks.data.isHidden import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.extensions.setColorFilter +import org.tasks.filters.Filter import org.tasks.filters.PlaceFilter import org.tasks.themes.CustomIcons import org.tasks.time.DateTimeUtils.startOfDay diff --git a/app/src/main/java/org/tasks/widget/WidgetFilterSelectionActivity.kt b/app/src/main/java/org/tasks/widget/WidgetFilterSelectionActivity.kt index 515c9f6d3..4eafcf3d3 100644 --- a/app/src/main/java/org/tasks/widget/WidgetFilterSelectionActivity.kt +++ b/app/src/main/java/org/tasks/widget/WidgetFilterSelectionActivity.kt @@ -4,12 +4,12 @@ import android.appwidget.AppWidgetManager import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.todoroo.astrid.api.Filter import dagger.hilt.android.AndroidEntryPoint import org.tasks.LocalBroadcastManager import org.tasks.dialogs.FilterPicker.Companion.EXTRA_FILTER import org.tasks.dialogs.FilterPicker.Companion.SELECT_FILTER import org.tasks.dialogs.FilterPicker.Companion.newFilterPicker +import org.tasks.filters.Filter import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences import timber.log.Timber diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f90b78185..6ae12a9a3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -162,6 +162,7 @@ xpp3 = { module = "org.ogce:xpp3", version.ref = "xpp3" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } +jetbrains-compose = { id = "org.jetbrains.compose", version = "1.6.10" } kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } diff --git a/kmp/.gitignore b/kmp/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/kmp/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/kmp/build.gradle.kts b/kmp/build.gradle.kts new file mode 100644 index 000000000..da8c4b15a --- /dev/null +++ b/kmp/build.gradle.kts @@ -0,0 +1,46 @@ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.android.library) + alias(libs.plugins.jetbrains.compose) + alias(libs.plugins.kotlin.compose.compiler) + alias(libs.plugins.kotlin.parcelize) +} + +kotlin { + applyDefaultHierarchyTemplate() + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + freeCompilerArgs.addAll("-P", "plugin:org.jetbrains.kotlin.parcelize:additionalAnnotation=org.tasks.CommonParcelize") + } + } + sourceSets { + commonMain.dependencies { + implementation(projects.data) + } + } +} + +android { + namespace = "org.tasks.kmp" + compileSdk = libs.versions.android.compileSdk.get().toInt() + + defaultConfig { + minSdk = libs.versions.android.minSdk.get().toInt() + targetSdk = libs.versions.android.targetSdk.get().toInt() + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + dependencies { + debugImplementation(compose.uiTooling) + } +} diff --git a/app/src/main/java/com/todoroo/astrid/api/Filter.kt b/kmp/src/commonMain/kotlin/org/tasks/filters/Filter.kt similarity index 88% rename from app/src/main/java/com/todoroo/astrid/api/Filter.kt rename to kmp/src/commonMain/kotlin/org/tasks/filters/Filter.kt index fb892e25b..6558bac84 100644 --- a/app/src/main/java/com/todoroo/astrid/api/Filter.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/filters/Filter.kt @@ -1,11 +1,11 @@ -package com.todoroo.astrid.api +package org.tasks.filters -import android.os.Parcelable -import kotlinx.parcelize.Parcelize +import org.tasks.CommonParcelable +import org.tasks.CommonParcelize import org.tasks.data.NO_COUNT import org.tasks.data.NO_ORDER -interface Filter : FilterListItem, Parcelable { +interface Filter : FilterListItem, CommonParcelable { val valuesForNewTasks: String? get() = null val sql: String? @@ -40,7 +40,7 @@ interface AstridOrderingFilter : Filter { fun getSqlQuery(): String = filterOverride ?: sql!! } -@Parcelize +@CommonParcelize data class FilterImpl( override val title: String? = null, override val sql: String? = null, diff --git a/kmp/src/commonMain/kotlin/org/tasks/filters/FilterListItem.kt b/kmp/src/commonMain/kotlin/org/tasks/filters/FilterListItem.kt new file mode 100644 index 000000000..816f8386e --- /dev/null +++ b/kmp/src/commonMain/kotlin/org/tasks/filters/FilterListItem.kt @@ -0,0 +1,12 @@ +package org.tasks.filters + +interface FilterListItem { + val itemType: Type + + fun areItemsTheSame(other: FilterListItem): Boolean + + enum class Type { + ITEM, + SUBHEADER, + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index b539280d4..9d9e723c7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -42,3 +42,4 @@ dependencyResolutionManagement { include("app") include("data") +include(":kmp")