Merge branch 'main' of github.com:MM2-0/Kvaesitso
This commit is contained in:
@@ -51,6 +51,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import de.mm20.launcher2.preferences.BatteryStatusVisibility
|
||||
import de.mm20.launcher2.preferences.ClockWidgetAlignment
|
||||
import de.mm20.launcher2.preferences.ClockWidgetColors
|
||||
import de.mm20.launcher2.preferences.ClockWidgetStyle
|
||||
@@ -61,6 +62,7 @@ import de.mm20.launcher2.ui.component.Banner
|
||||
import de.mm20.launcher2.ui.component.DismissableBottomSheet
|
||||
import de.mm20.launcher2.ui.component.preferences.Preference
|
||||
import de.mm20.launcher2.ui.component.preferences.SwitchPreference
|
||||
import de.mm20.launcher2.ui.component.preferences.ListPreference
|
||||
import de.mm20.launcher2.ui.launcher.widgets.clock.clocks.AnalogClock
|
||||
import de.mm20.launcher2.ui.launcher.widgets.clock.clocks.BinaryClock
|
||||
import de.mm20.launcher2.ui.launcher.widgets.clock.clocks.CustomClock
|
||||
@@ -666,14 +668,19 @@ fun ConfigureClockWidgetSheet(
|
||||
viewModel.setAlarmPart(it)
|
||||
}
|
||||
)
|
||||
SwitchPreference(
|
||||
ListPreference(
|
||||
title = stringResource(R.string.preference_clockwidget_battery_part),
|
||||
summary = stringResource(R.string.preference_clockwidget_battery_part_summary),
|
||||
icon = R.drawable.battery_full_24px,
|
||||
value = parts?.battery == true,
|
||||
value = parts?.battery,
|
||||
onValueChanged = {
|
||||
viewModel.setBatteryPart(it)
|
||||
}
|
||||
if (it != null) viewModel.setBatteryPart(it)
|
||||
},
|
||||
items = listOf(
|
||||
stringResource(R.string.preference_clockwidget_battery_part_hide) to BatteryStatusVisibility.Hide,
|
||||
stringResource(R.string.preference_clockwidget_battery_part_show) to BatteryStatusVisibility.Show,
|
||||
stringResource(R.string.preference_clockwidget_battery_part_always_show) to BatteryStatusVisibility.Always
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ class ClockWidgetVM : ViewModel(), KoinComponent {
|
||||
val providers = mutableListOf<PartProvider>()
|
||||
if (parts.date) providers += DatePartProvider()
|
||||
if (parts.music) providers += MusicPartProvider()
|
||||
if (parts.battery) providers += BatteryPartProvider()
|
||||
providers += BatteryPartProvider(parts.battery)
|
||||
if (parts.alarm) providers += AlarmPartProvider()
|
||||
providers
|
||||
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), emptyList())
|
||||
@@ -82,4 +82,4 @@ class ClockWidgetVM : ViewModel(), KoinComponent {
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,13 +23,16 @@ import androidx.compose.ui.res.pluralStringResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.content.getSystemService
|
||||
import de.mm20.launcher2.preferences.BatteryStatusVisibility
|
||||
import de.mm20.launcher2.ui.R
|
||||
import de.mm20.launcher2.ui.utils.formatPercent
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.channels.trySendBlocking
|
||||
import kotlinx.coroutines.flow.*
|
||||
|
||||
class BatteryPartProvider : PartProvider {
|
||||
class BatteryPartProvider(
|
||||
private val batteryStatusVisibility: BatteryStatusVisibility = BatteryStatusVisibility.Hide,
|
||||
) : PartProvider {
|
||||
|
||||
private val batteryInfo = MutableStateFlow<BatteryInfo?>(null)
|
||||
|
||||
@@ -38,7 +41,11 @@ class BatteryPartProvider : PartProvider {
|
||||
|
||||
chargingInfo.collectLatest {
|
||||
batteryInfo.value = it
|
||||
if (it.charging) {
|
||||
if (batteryStatusVisibility == BatteryStatusVisibility.Hide) {
|
||||
send(0)
|
||||
} else if (batteryStatusVisibility == BatteryStatusVisibility.Always) {
|
||||
send(10)
|
||||
} else if (it.charging) {
|
||||
send(10)
|
||||
} else if (it.level <= 15) {
|
||||
send(55)
|
||||
@@ -177,4 +184,4 @@ private data class BatteryInfo(
|
||||
val level: Int,
|
||||
val charging: Boolean,
|
||||
val fullIn: Long?,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ package de.mm20.launcher2.ui.settings.clockwidget
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import de.mm20.launcher2.preferences.BatteryStatusVisibility
|
||||
import de.mm20.launcher2.preferences.ClockWidgetAlignment
|
||||
import de.mm20.launcher2.preferences.ClockWidgetColors
|
||||
import de.mm20.launcher2.preferences.ClockWidgetStyle
|
||||
@@ -88,7 +89,7 @@ class ClockWidgetSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
settings.setDatePart(datePart)
|
||||
}
|
||||
|
||||
fun setBatteryPart(batteryPart: Boolean) {
|
||||
fun setBatteryPart(batteryPart: BatteryStatusVisibility) {
|
||||
settings.setBatteryPart(batteryPart)
|
||||
}
|
||||
|
||||
@@ -114,4 +115,4 @@ class ClockWidgetSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
settings.setUseSmartspacer(false)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -607,7 +607,10 @@
|
||||
<string name="preference_clockwidget_music_part">Media</string>
|
||||
<string name="preference_clockwidget_music_part_summary">Show media controls when there is an active media session</string>
|
||||
<string name="preference_clockwidget_battery_part">Battery</string>
|
||||
<string name="preference_clockwidget_battery_part_summary">Show the current battery level when the battery is low or charging</string>
|
||||
<string name="preference_clockwidget_battery_part_summary">Show the current battery level</string>
|
||||
<string name="preference_clockwidget_battery_part_always_show">Always show</string>
|
||||
<string name="preference_clockwidget_battery_part_show">Show when low or charging</string>
|
||||
<string name="preference_clockwidget_battery_part_hide">Off</string>
|
||||
<string name="preference_clockwidget_alarm_part">Alarms</string>
|
||||
<string name="preference_clockwidget_alarm_part_summary">Show alarms that will ring within the next 8 hours</string>
|
||||
<string name="preference_screen_backup">Backup and restore</string>
|
||||
|
||||
@@ -6,6 +6,7 @@ import de.mm20.launcher2.preferences.migrations.Migration2
|
||||
import de.mm20.launcher2.preferences.migrations.Migration3
|
||||
import de.mm20.launcher2.preferences.migrations.Migration4
|
||||
import de.mm20.launcher2.preferences.migrations.Migration5
|
||||
import de.mm20.launcher2.preferences.migrations.Migration6
|
||||
import de.mm20.launcher2.settings.BaseSettings
|
||||
|
||||
internal class LauncherDataStore(
|
||||
@@ -19,6 +20,7 @@ internal class LauncherDataStore(
|
||||
Migration3(),
|
||||
Migration4(),
|
||||
Migration5(),
|
||||
Migration6(),
|
||||
),
|
||||
corruptionHandler = ReplaceFileCorruptionHandler { LauncherSettingsData() }
|
||||
) {
|
||||
|
||||
@@ -51,7 +51,11 @@ data class LauncherSettingsData internal constructor(
|
||||
val clockWidgetMonospaced: Boolean = false,
|
||||
val clockWidgetUseThemeColor: Boolean = false,
|
||||
val clockWidgetAlarmPart: Boolean = true,
|
||||
val clockWidgetBatteryPart: Boolean = true,
|
||||
@Deprecated("")
|
||||
@SerialName("clockWidgetBatteryPart")
|
||||
val _clockWidgetBatteryPart: Boolean = true,
|
||||
@SerialName("clockWidgetBatteryPart2")
|
||||
val clockWidgetBatteryPart: BatteryStatusVisibility = BatteryStatusVisibility.Show,
|
||||
val clockWidgetMusicPart: Boolean = true,
|
||||
val clockWidgetDatePart: Boolean = true,
|
||||
val clockWidgetFillHeight: Boolean = false,
|
||||
@@ -457,3 +461,10 @@ enum class MeasurementSystem {
|
||||
@SerialName("uk") UnitedKingdom,
|
||||
@SerialName("us") UnitedStates,
|
||||
}
|
||||
|
||||
@Serializable
|
||||
enum class BatteryStatusVisibility {
|
||||
@SerialName("hide") Hide,
|
||||
@SerialName("show") Show,
|
||||
@SerialName("always") Always
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package de.mm20.launcher2.preferences.migrations
|
||||
|
||||
import androidx.datastore.core.DataMigration
|
||||
import de.mm20.launcher2.preferences.BatteryStatusVisibility
|
||||
import de.mm20.launcher2.preferences.LauncherSettingsData
|
||||
|
||||
class Migration6 : DataMigration<LauncherSettingsData> {
|
||||
override suspend fun cleanUp() {
|
||||
}
|
||||
|
||||
override suspend fun shouldMigrate(currentData: LauncherSettingsData): Boolean {
|
||||
return currentData.schemaVersion < 6
|
||||
}
|
||||
|
||||
override suspend fun migrate(currentData: LauncherSettingsData): LauncherSettingsData {
|
||||
return currentData.copy(
|
||||
schemaVersion = 6,
|
||||
clockWidgetBatteryPart = if (currentData._clockWidgetBatteryPart) {
|
||||
BatteryStatusVisibility.Show
|
||||
} else {
|
||||
BatteryStatusVisibility.Hide
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.mm20.launcher2.preferences.ui
|
||||
|
||||
import de.mm20.launcher2.preferences.BatteryStatusVisibility
|
||||
import de.mm20.launcher2.preferences.ClockWidgetAlignment
|
||||
import de.mm20.launcher2.preferences.ClockWidgetColors
|
||||
import de.mm20.launcher2.preferences.ClockWidgetStyle
|
||||
@@ -13,7 +14,7 @@ import kotlinx.coroutines.flow.map
|
||||
data class ClockWidgetParts(
|
||||
val date: Boolean,
|
||||
val music: Boolean = false,
|
||||
val battery: Boolean = false,
|
||||
val battery: BatteryStatusVisibility = BatteryStatusVisibility.Hide,
|
||||
val alarm: Boolean = false,
|
||||
)
|
||||
|
||||
@@ -51,7 +52,7 @@ class ClockWidgetSettings internal constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun setBatteryPart(batteryPart: Boolean) {
|
||||
fun setBatteryPart(batteryPart: BatteryStatusVisibility) {
|
||||
launcherDataStore.update {
|
||||
it.copy(clockWidgetBatteryPart = batteryPart)
|
||||
}
|
||||
@@ -175,4 +176,4 @@ internal val ClockWidgetStyle.enumValue
|
||||
is ClockWidgetStyle.Segment -> ClockWidgetStyleEnum.Segment
|
||||
is ClockWidgetStyle.Empty -> ClockWidgetStyleEnum.Empty
|
||||
is ClockWidgetStyle.Custom -> ClockWidgetStyleEnum.Custom
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user