From bf29ce6f08f62af0df13d7142ac078e910c1d574 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Thu, 15 Aug 2024 17:55:45 +0200 Subject: [PATCH] Add type parameter to calendar list --- .../contracts/CalendarPluginContract.kt | 3 +++ .../search/calendar/CalendarListType.kt | 6 +++++ .../providers/AndroidCalendarEvent.kt | 7 ------ .../calendar/providers/CalendarList.kt | 12 ++++++++++ .../providers/PluginCalendarProvider.kt | 1 + .../launcher2/sdk/calendar/CalendarList.kt | 23 +++++++++++++++++++ .../sdk/calendar/CalendarProvider.kt | 1 + 7 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 core/shared/src/main/java/de/mm20/launcher2/search/calendar/CalendarListType.kt create mode 100644 data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/CalendarList.kt diff --git a/core/shared/src/main/java/de/mm20/launcher2/plugin/contracts/CalendarPluginContract.kt b/core/shared/src/main/java/de/mm20/launcher2/plugin/contracts/CalendarPluginContract.kt index 58e091b1..7d75f072 100644 --- a/core/shared/src/main/java/de/mm20/launcher2/plugin/contracts/CalendarPluginContract.kt +++ b/core/shared/src/main/java/de/mm20/launcher2/plugin/contracts/CalendarPluginContract.kt @@ -1,5 +1,7 @@ package de.mm20.launcher2.plugin.contracts +import de.mm20.launcher2.search.calendar.CalendarListType + abstract class CalendarPluginContract { object EventColumns : Columns() { /** @@ -68,6 +70,7 @@ abstract class CalendarPluginContract { val Name = column("name") val Color = column("color") val AccountName = column("account_name") + val ContentTypes = column>("content_types") } diff --git a/core/shared/src/main/java/de/mm20/launcher2/search/calendar/CalendarListType.kt b/core/shared/src/main/java/de/mm20/launcher2/search/calendar/CalendarListType.kt new file mode 100644 index 00000000..882d97c6 --- /dev/null +++ b/core/shared/src/main/java/de/mm20/launcher2/search/calendar/CalendarListType.kt @@ -0,0 +1,6 @@ +package de.mm20.launcher2.search.calendar + +enum class CalendarListType { + Calendar, + Tasks, +} diff --git a/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/AndroidCalendarEvent.kt b/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/AndroidCalendarEvent.kt index 608fba07..c8018caa 100644 --- a/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/AndroidCalendarEvent.kt +++ b/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/AndroidCalendarEvent.kt @@ -71,10 +71,3 @@ internal data class AndroidCalendarEvent( } } -data class CalendarList( - val id: String, - val name: String, - val owner: String?, - val color: Int, - val providerId: String, -) \ No newline at end of file diff --git a/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/CalendarList.kt b/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/CalendarList.kt new file mode 100644 index 00000000..c0a33fbc --- /dev/null +++ b/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/CalendarList.kt @@ -0,0 +1,12 @@ +package de.mm20.launcher2.calendar.providers + +import de.mm20.launcher2.search.calendar.CalendarListType + +data class CalendarList( + val id: String, + val name: String, + val owner: String?, + val color: Int, + val types: List, + val providerId: String, +) \ No newline at end of file diff --git a/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/PluginCalendarProvider.kt b/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/PluginCalendarProvider.kt index 57387542..22b05f15 100644 --- a/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/PluginCalendarProvider.kt +++ b/data/calendar/src/main/java/de/mm20/launcher2/calendar/providers/PluginCalendarProvider.kt @@ -174,6 +174,7 @@ class PluginCalendarProvider( color = cursor[CalendarListColumns.Color] ?: 0, name = cursor[CalendarListColumns.Name] ?: continue, owner = cursor[CalendarListColumns.AccountName], + types = cursor[CalendarListColumns.ContentTypes] ?: continue, providerId = pluginAuthority, ) } diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarList.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarList.kt index 63e869ca..1e31a893 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarList.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarList.kt @@ -1,8 +1,31 @@ package de.mm20.launcher2.sdk.calendar +import de.mm20.launcher2.search.calendar.CalendarListType + data class CalendarList( + /** + * A unique identifier for this list. + */ val id: String, + /** + * The display name of this list. + */ val name: String, + /** + * The main content type of this list. This has mainly cosmetic purposes (labels, icons). + * It doesn't need to be 100% accurate since the actual type is determined on a per-item basis. + * However, the launcher will hide some settings if it doesn't find any lists that would be + * affected by them. + */ + val contentTypes: List, + /** + * The owner account of this list. + */ val accountName: String? = null, + /** + * The color of this list, in 0xFFAARRGGBB format. + * If null, the launcher will use a default theme color. + * The color is corrected to match the launcher's theme (i.e. for dark mode). + */ val color: Int? = null, ) \ No newline at end of file diff --git a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarProvider.kt b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarProvider.kt index 54916fe0..c8dc0d1f 100644 --- a/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarProvider.kt +++ b/plugins/sdk/src/main/java/de/mm20/launcher2/sdk/calendar/CalendarProvider.kt @@ -105,6 +105,7 @@ abstract class CalendarProvider( put(CalendarListColumns.Name, it.name) put(CalendarListColumns.Color, it.color) put(CalendarListColumns.AccountName, it.accountName) + put(CalendarListColumns.ContentTypes, it.contentTypes) } } } \ No newline at end of file