From 64ff404eac7ed1c7b7d2974c9c5e276b701eb719 Mon Sep 17 00:00:00 2001 From: azuo Date: Sun, 20 Feb 2022 18:27:28 +0800 Subject: [PATCH] Reset the next event only if necessary --- .../components/GlanceSettingsDialog.kt | 6 ++++++ .../anotherwidget/db/EventRepository.kt | 17 +++++++---------- .../services/UpdateCalendarWorker.kt | 12 ++++++++---- .../ui/fragments/tabs/GesturesFragment.kt | 6 ++++++ 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt index ab13fed..38641cc 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt @@ -221,6 +221,12 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance } Constants.GlanceProviderId.EVENTS -> { Preferences.showEventsAsGlanceProvider = isChecked + if (isChecked) { + com.tommasoberlose.anotherwidget.db.EventRepository(context).run { + resetNextEventData() + close() + } + } } Constants.GlanceProviderId.WEATHER -> { Preferences.showWeatherAsGlanceProvider = isChecked diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt index 4a96a38..23dbd1c 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt @@ -27,7 +27,7 @@ class EventRepository(val context: Context) { db.runInTransaction{ db.dao().run { deleteAll() - insertAll(eventList) + insert(eventList) } } } @@ -119,7 +119,7 @@ class EventRepository(val context: Context) { } fun getFutureEvents(): List { - return db.dao().findFuture(Calendar.getInstance().timeInMillis).sortEvents() + return db.dao().find(Calendar.getInstance().timeInMillis).sortEvents() } private fun getEvents(): List { @@ -141,7 +141,7 @@ class EventRepository(val context: Context) { return db.dao().find(now, limit.timeInMillis).sortEvents() } - fun getEventsCount(): Int = db.dao().countAll() + fun getEventsCount(): Int = getEvents().size fun close() { // db.close() @@ -150,19 +150,16 @@ class EventRepository(val context: Context) { @Dao interface EventDao { @Query("SELECT * FROM events WHERE id = :id LIMIT 1") - fun findById(id: Long) : Event? + fun findById(id: Long): Event? @Query("SELECT * FROM events WHERE end_date > :from") - fun findFuture(from: Long) : List + fun find(from: Long): List @Query("SELECT * FROM events WHERE end_date > :from AND start_date <= :to") - fun find(from: Long, to: Long) : List - - @Query("SELECT count(*) FROM events") - fun countAll() : Int + fun find(from: Long, to: Long): List @Insert - fun insertAll(events: List) + fun insert(events: List) @Query("DELETE FROM events") fun deleteAll() diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt index 9670f8d..9a408d2 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarWorker.kt @@ -66,11 +66,11 @@ class UpdateCalendarWorker(context: Context, params: WorkerParameters) : Worker( limit.timeInMillis + limit.timeZone.getOffset(limit.timeInMillis).coerceAtLeast(0) ) if (data != null) { - val instances = data.list - for (instance in instances) { + val filteredCalendarIdList = CalendarHelper.getFilteredCalendarIdList() + for (instance in data.list) { try { val e = provider.getEvent(instance.eventId) - if (e == null || e.deleted || CalendarHelper.getFilteredCalendarIdList().contains(e.calendarId)) + if (e == null || e.deleted || filteredCalendarIdList.contains(e.calendarId)) continue if (e.allDay) { val start = Calendar.getInstance() @@ -131,8 +131,12 @@ class UpdateCalendarWorker(context: Context, params: WorkerParameters) : Worker( eventRepository.resetNextEventData() eventRepository.clearEvents() } else { + val first = filteredEventList.first() + if (Preferences.nextEventId != first.id && ( + //Preferences.showWeatherAsGlanceProvider || !Preferences.showNextEvent || + eventRepository.getEventById(first.id)?.startDate != first.startDate)) + eventRepository.saveNextEventData(first) eventRepository.saveEvents(filteredEventList) - //eventRepository.saveNextEventData(filteredEventList.first()) } } catch (ignored: java.lang.Exception) { } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt index c30caa0..8f3fa68 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt @@ -144,6 +144,12 @@ class GesturesFragment : Fragment() { binding.showMultipleEventsToggle.setOnCheckedChangeListener { _, isChecked -> Preferences.showNextEvent = isChecked + if (!isChecked) { + com.tommasoberlose.anotherwidget.db.EventRepository(requireContext()).run { + resetNextEventData() + close() + } + } } binding.actionOpenEventDetails.setOnClickListener {