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 aee091b..342d107 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt @@ -18,7 +18,7 @@ import kotlin.collections.ArrayList class EventRepository(val context: Context) { private val realm by lazy { Realm.getDefaultInstance() } - fun saveEvents(eventList: ArrayList) { + fun saveEvents(eventList: List) { realm.executeTransaction { realm -> realm.where(Event::class.java).findAll().deleteAllFromRealm() realm.copyToRealm(eventList) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt index c183781..b1cd212 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt @@ -80,4 +80,27 @@ object CalendarHelper { .filter { (!Preferences.showOnlyBusyEvents || it.availability != CalendarContract.EventsEntity.AVAILABILITY_FREE) } .toList() } + + fun List.sortEvents(): List { + return sortedWith { event: Event, event1: Event -> + val date = Calendar.getInstance().apply { timeInMillis = event.startDate } + val date1 = Calendar.getInstance().apply { timeInMillis = event1.startDate } + + if (date.get(Calendar.DAY_OF_YEAR) == date1.get(Calendar.DAY_OF_YEAR) && date.get( + Calendar.YEAR) == date1.get(Calendar.YEAR) + ) { + if (event.allDay && event1.allDay) { + event.startDate.compareTo(event1.startDate) + } else if (event.allDay) { + 1 + } else if (event1.allDay) { + -1 + } else { + event.startDate.compareTo(event1.startDate) + } + } else { + event.startDate.compareTo(event1.startDate) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt index 1384cfa..e550c5d 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt @@ -37,9 +37,6 @@ object GlanceProviderHelper { } } }) - - Log.d("ciao", providers.toList().toString()) - return ArrayList(providers.toList()) } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarJob.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarJob.kt index 18b7b21..da0a5de 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarJob.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/services/UpdateCalendarJob.kt @@ -10,6 +10,7 @@ import com.tommasoberlose.anotherwidget.db.EventRepository import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.helpers.CalendarHelper import com.tommasoberlose.anotherwidget.helpers.CalendarHelper.applyFilters +import com.tommasoberlose.anotherwidget.helpers.CalendarHelper.sortEvents import com.tommasoberlose.anotherwidget.models.Event import com.tommasoberlose.anotherwidget.receivers.UpdatesReceiver import com.tommasoberlose.anotherwidget.ui.fragments.MainFragment @@ -44,8 +45,17 @@ class UpdateCalendarJob : JobIntentService() { set(Calendar.HOUR_OF_DAY, 0) } val limit = Calendar.getInstance().apply { - timeInMillis = begin.timeInMillis - add(Calendar.DAY_OF_YEAR, 2) + when (Preferences.showUntil) { + 0 -> add(Calendar.HOUR, 3) + 1 -> add(Calendar.HOUR, 6) + 2 -> add(Calendar.HOUR, 12) + 3 -> add(Calendar.DAY_OF_MONTH, 1) + 4 -> add(Calendar.DAY_OF_MONTH, 3) + 5 -> add(Calendar.DAY_OF_MONTH, 7) + 6 -> add(Calendar.MINUTE, 30) + 7 -> add(Calendar.HOUR, 1) + else -> add(Calendar.HOUR, 6) + } } if (!checkGrantedPermission( @@ -95,34 +105,16 @@ class UpdateCalendarJob : JobIntentService() { } } - val filteredEventList = eventList + val sortedEvents = eventList.sortEvents() + val filteredEventList = sortedEvents .applyFilters() if (filteredEventList.isEmpty()) { eventRepository.resetNextEventData() eventRepository.clearEvents() } else { - eventList.sortWith(Comparator { event: Event, event1: Event -> - val date = Calendar.getInstance().apply { timeInMillis = event.startDate } - val date1 = Calendar.getInstance().apply { timeInMillis = event1.startDate } - - if (date.get(Calendar.DAY_OF_YEAR) == date1.get(Calendar.DAY_OF_YEAR) && date.get(Calendar.YEAR) == date1.get(Calendar.YEAR)) { - if (event.allDay && event1.allDay) { - event.startDate.compareTo(event1.startDate) - } else if (event.allDay) { - 1 - } else if (event1.allDay) { - -1 - } else { - event.startDate.compareTo(event1.startDate) - } - } else { - event.startDate.compareTo(event1.startDate) - } - }) - eventRepository.saveEvents( - eventList + sortedEvents ) eventRepository.saveNextEventData(filteredEventList.first()) } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt index bbdad6e..c76515a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt @@ -350,8 +350,12 @@ class MainWidget : AppWidgetProvider() { Constants.GlanceProviderId.NOTIFICATIONS -> { if (Preferences.showNotifications && ActiveNotificationsHelper.showLastNotification()) { try { - val remotePackageContext = context.createPackageContext(Preferences.lastNotificationPackage, 0) - val icon = ContextCompat.getDrawable(remotePackageContext, Preferences.lastNotificationIcon) + if (Preferences.lastNotificationIcon != 0) { + val remotePackageContext = context.createPackageContext(Preferences.lastNotificationPackage, 0) + ContextCompat.getDrawable( + remotePackageContext, + Preferences.lastNotificationIcon) + } val notificationIntent = PendingIntent.getActivity( context, widgetID, @@ -606,7 +610,7 @@ class MainWidget : AppWidgetProvider() { dayDiff++ } else if (startCal.get(Calendar.HOUR_OF_DAY) == endCal.get(Calendar.HOUR_OF_DAY) && startCal.get( Calendar.MINUTE - ) >= endCal.get(Calendar.MINUTE) + ) > endCal.get(Calendar.MINUTE) ) { dayDiff++ } @@ -618,8 +622,14 @@ class MainWidget : AppWidgetProvider() { context.getString(R.string.day_char) ) } - v.next_event_date.text = - String.format("%s - %s%s", startHour, endHour, multipleDay) + + if (nextEvent.startDate != nextEvent.endDate) { + v.next_event_date.text = + String.format("%s - %s%s", startHour, endHour, multipleDay) + } else { + v.next_event_date.text = + String.format("%s", startHour) + } } else { val flags: Int = @@ -724,8 +734,8 @@ class MainWidget : AppWidgetProvider() { Constants.GlanceProviderId.NOTIFICATIONS -> { if (Preferences.showNotifications && ActiveNotificationsHelper.showLastNotification()) { try { - val remotePackageContext = context.createPackageContext(Preferences.lastNotificationPackage, 0) if (Preferences.lastNotificationIcon != 0) { + val remotePackageContext = context.createPackageContext(Preferences.lastNotificationPackage, 0) val icon = ContextCompat.getDrawable(remotePackageContext, Preferences.lastNotificationIcon) v.second_row_icon.isVisible = true diff --git a/app/src/main/res/layout/the_widget.xml b/app/src/main/res/layout/the_widget.xml index 6baf543..0b65311 100644 --- a/app/src/main/res/layout/the_widget.xml +++ b/app/src/main/res/layout/the_widget.xml @@ -22,7 +22,8 @@ android:id="@+id/empty_layout"> Low battery level %d steps so far Charging - Charged + Fully charged Providers Glance info will show up only when there are no events displayed and only when a few conditions are verified. Music Players