package com.tommasoberlose.anotherwidget.helpers import android.Manifest import android.content.Context import android.util.Log import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.db.EventRepository import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.models.GlanceProvider import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission import com.tommasoberlose.anotherwidget.utils.checkIfFitInstalled import java.util.ArrayList object GlanceProviderHelper { fun getGlanceProviders(context: Context): ArrayList { val enabledProviders = Preferences.enabledGlanceProviderOrder.split(",").filter { it != "" } val providers = Constants.GlanceProviderId.values() .filter { context.checkIfFitInstalled() || it != Constants.GlanceProviderId.GOOGLE_FIT_STEPS } .toTypedArray() return ArrayList(providers.filter { enabledProviders.contains(it.id) }.sortedWith(Comparator { p1, p2 -> when { enabledProviders.contains(p1.id) && enabledProviders.contains(p2.id) -> { enabledProviders.indexOf(p1.id).compareTo(enabledProviders.indexOf(p2.id)) } enabledProviders.contains(p1.id) -> { -1 } enabledProviders.contains(p2.id) -> { 1 } else -> { p1.id.compareTo(p2.id) } } }) + providers.filter { !enabledProviders.contains(it.id) }) } fun getGlanceProviderById(context: Context, providerId: Constants.GlanceProviderId): GlanceProvider? { return when(providerId) { Constants.GlanceProviderId.NEXT_CLOCK_ALARM -> { GlanceProvider(providerId.id, context.getString(R.string.settings_show_next_alarm_title), R.drawable.round_access_alarm_24 ) } Constants.GlanceProviderId.PLAYING_SONG -> { GlanceProvider(providerId.id, context.getString(R.string.settings_show_music_title), R.drawable.round_music_note_24 ) } Constants.GlanceProviderId.CUSTOM_INFO -> { GlanceProvider(providerId.id, context.getString(R.string.settings_custom_notes_title), R.drawable.round_sticky_note_2_24 ) } Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { GlanceProvider(providerId.id, context.getString(R.string.settings_low_battery_level_title), R.drawable.round_battery_charging_full_24 ) } Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> { GlanceProvider(providerId.id, context.getString(R.string.settings_daily_steps_title), R.drawable.round_favorite_border_24 ) } Constants.GlanceProviderId.NOTIFICATIONS -> { GlanceProvider(providerId.id, context.getString(R.string.settings_show_notifications_title), R.drawable.round_notifications_24 ) } Constants.GlanceProviderId.GREETINGS -> { GlanceProvider(providerId.id, context.getString(R.string.settings_show_greetings_title), R.drawable.round_history_edu_24 ) } Constants.GlanceProviderId.EVENTS -> { GlanceProvider(providerId.id, context.getString(R.string.settings_show_events_as_glance_provider_title), R.drawable.round_event_note_24 ) } } } fun saveGlanceProviderOrder(list: List) { Preferences.enabledGlanceProviderOrder = list.joinToString(separator = ",") } fun showGlanceProviders(context: Context): Boolean { val eventRepository = EventRepository(context) BatteryHelper.updateBatteryInfo(context) val showGlance = (eventRepository.getEventsCount() == 0 || !Preferences.showEvents || Preferences.showEventsAsGlanceProvider) && ( (Preferences.showNotifications && ActiveNotificationsHelper.showLastNotification()) || (Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") || (MediaPlayerHelper.isSomeonePlaying(context)) || (Preferences.showBatteryCharging && Preferences.isCharging || Preferences.isBatteryLevelLow) || (Preferences.customNotes.isNotEmpty()) || (Preferences.showDailySteps && Preferences.googleFitSteps > 0) || (Preferences.showGreetings && GreetingsHelper.showGreetings()) || (Preferences.showEventsAsGlanceProvider && Preferences.showEvents && context.checkGrantedPermission( Manifest.permission.READ_CALENDAR) && eventRepository.getNextEvent() != null) ) eventRepository.close() return showGlance } }