119 lines
5.3 KiB
Kotlin
119 lines
5.3 KiB
Kotlin
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<Constants.GlanceProviderId> {
|
|
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<Constants.GlanceProviderId>) {
|
|
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
|
|
}
|
|
} |