@@ -38,6 +38,8 @@ import androidx.compose.runtime.LaunchedEffect
38
38
import androidx.compose.runtime.MutableState
39
39
import androidx.compose.runtime.getValue
40
40
import androidx.compose.runtime.livedata.observeAsState
41
+ import androidx.compose.runtime.mutableStateOf
42
+ import androidx.compose.runtime.remember
41
43
import androidx.compose.runtime.setValue
42
44
import androidx.compose.ui.Alignment
43
45
import androidx.compose.ui.Modifier
@@ -47,6 +49,7 @@ import androidx.compose.ui.res.stringResource
47
49
import androidx.compose.ui.tooling.preview.Preview
48
50
import androidx.compose.ui.unit.dp
49
51
import androidx.core.content.getSystemService
52
+ import androidx.databinding.ObservableBoolean
50
53
import androidx.fragment.app.Fragment
51
54
import androidx.fragment.app.viewModels
52
55
import androidx.lifecycle.AndroidViewModel
@@ -86,8 +89,8 @@ class BatteryOptimizationsFragment: Fragment() {
86
89
setViewCompositionStrategy(ViewCompositionStrategy .DisposeOnViewTreeLifecycleDestroyed )
87
90
setContent {
88
91
MdcTheme {
89
- var dontShowBattery by model.dontShowBattery
90
- var dontShowAutostart by model.dontShowAutostart
92
+ var dontShowBattery by remember { mutableStateOf( model.dontShowBattery.get()) }
93
+ var dontShowAutostart by remember { mutableStateOf( model.dontShowAutostart.get()) }
91
94
val shouldBeWhitelisted by model.shouldBeWhitelisted.observeAsState(false )
92
95
val isWhitelisted by model.isWhitelisted.observeAsState(false )
93
96
@@ -98,12 +101,18 @@ class BatteryOptimizationsFragment: Fragment() {
98
101
99
102
Content (
100
103
dontShowBattery = dontShowBattery,
101
- onChangeDontShowBattery = { dontShowBattery = it },
104
+ onChangeDontShowBattery = {
105
+ model.dontShowBattery.set(it)
106
+ dontShowBattery = it
107
+ },
102
108
isWhitelisted = isWhitelisted,
103
109
shouldBeWhitelisted = shouldBeWhitelisted,
104
110
onChangeShouldBeWhitelisted = model.shouldBeWhitelisted::postValue,
105
111
dontShowAutostart = dontShowAutostart,
106
- onChangeDontShowAutostart = { dontShowAutostart = it },
112
+ onChangeDontShowAutostart = {
113
+ model.dontShowAutostart.set(it)
114
+ dontShowAutostart = it
115
+ },
107
116
manufacturerWarning = Model .manufacturerWarning
108
117
)
109
118
}
@@ -324,13 +333,27 @@ class BatteryOptimizationsFragment: Fragment() {
324
333
325
334
val shouldBeWhitelisted = MutableLiveData <Boolean >()
326
335
val isWhitelisted = MutableLiveData <Boolean >()
327
- val dontShowBattery: MutableState <Boolean >
328
- @Composable
329
- get() = settings.observeBoolean(key = HINT_BATTERY_OPTIMIZATIONS ) { it == false }
336
+ val dontShowBattery = object : ObservableBoolean () {
337
+ override fun get () = settings.getBooleanOrNull(HINT_BATTERY_OPTIMIZATIONS ) == false
338
+ override fun set (dontShowAgain : Boolean ) {
339
+ if (dontShowAgain)
340
+ settings.putBoolean(HINT_BATTERY_OPTIMIZATIONS , false )
341
+ else
342
+ settings.remove(HINT_BATTERY_OPTIMIZATIONS )
343
+ notifyChange()
344
+ }
345
+ }
330
346
331
- val dontShowAutostart: MutableState <Boolean >
332
- @Composable
333
- get() = settings.observeBoolean(key = HINT_AUTOSTART_PERMISSION ) { it == false }
347
+ val dontShowAutostart = object : ObservableBoolean () {
348
+ override fun get () = settings.getBooleanOrNull(HINT_AUTOSTART_PERMISSION ) == false
349
+ override fun set (dontShowAgain : Boolean ) {
350
+ if (dontShowAgain)
351
+ settings.putBoolean(HINT_AUTOSTART_PERMISSION , false )
352
+ else
353
+ settings.remove(HINT_AUTOSTART_PERMISSION )
354
+ notifyChange()
355
+ }
356
+ }
334
357
335
358
fun checkWhitelisted () {
336
359
val whitelisted = isWhitelisted(getApplication())
0 commit comments