Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
tkuenneth committed Mar 19, 2023
1 parent c4da9c2 commit dad106d
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ import androidx.glance.action.actionStartActivity
import androidx.glance.action.clickable
import androidx.glance.appwidget.CircularProgressIndicator
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.GlanceAppWidgetManager
import androidx.glance.appwidget.GlanceAppWidgetReceiver
import androidx.glance.appwidget.state.updateAppWidgetState
import androidx.glance.background
import androidx.glance.currentState
import androidx.glance.layout.Alignment
Expand All @@ -25,6 +27,8 @@ import androidx.glance.state.PreferencesGlanceStateDefinition
import androidx.glance.text.Text
import eu.thomaskuenneth.batterymeter.BatteryMeterWidgetReceiver.Companion.batteryPercent
import eu.thomaskuenneth.batterymeter.BatteryMeterWidgetReceiver.Companion.lastUpdatedMillis
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.Date

Expand Down Expand Up @@ -64,8 +68,10 @@ class BatteryMeterWidget : GlanceAppWidget() {
}
}
// workaround: setting clickable on the Column didn't work
Box(modifier = GlanceModifier.fillMaxSize()
.clickable(actionStartActivity<MainActivity>())) {
Box(
modifier = GlanceModifier.fillMaxSize()
.clickable(actionStartActivity<MainActivity>())
) {
}
LocalContext.current.appendTextToFile("Content()")
}
Expand All @@ -80,7 +86,7 @@ class BatteryMeterWidgetReceiver : GlanceAppWidgetReceiver() {
appWidgetManager: AppWidgetManager,
appWidgetIds: IntArray
) {
context.appendTextToFile("onUpdate()")
context.updateAppWidgetState()
super.onUpdate(context, appWidgetManager, appWidgetIds)
}

Expand All @@ -89,3 +95,26 @@ class BatteryMeterWidgetReceiver : GlanceAppWidgetReceiver() {
val lastUpdatedMillis = longPreferencesKey("lastUpdatedMillis")
}
}

fun Context.updateAppWidgetState(batteryPercent: Float = -1.0F) {
MainScope().launch {
val now = System.currentTimeMillis()
appendTextToFile("onUpdate()", now)
GlanceAppWidgetManager(this@updateAppWidgetState).getGlanceIds(BatteryMeterWidget::class.java)
.forEach { glanceId ->
updateAppWidgetState(
context = this@updateAppWidgetState,
glanceId = glanceId,
) { preferences ->
preferences[lastUpdatedMillis] =
now
if (batteryPercent >= 0.0F)
preferences[BatteryMeterWidgetReceiver.batteryPercent] = batteryPercent
BatteryMeterWidget().update(
context = this@updateAppWidgetState,
glanceId = glanceId
)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ class LogRepository(private val context: Context) {
fun readFile() = context.readFile()
}

fun Context.appendTextToFile(prefix: String) {
fun Context.appendTextToFile(prefix: String, now: Long = System.currentTimeMillis()) {
openFileOutput(FILENAME, Context.MODE_APPEND).use {
it.bufferedWriter().use { writer ->
writer.write("$prefix called at ${Date()}")
writer.write("$prefix called at ${Date(now)}")
writer.newLine()
}
}
Expand Down
23 changes: 2 additions & 21 deletions app/src/main/java/eu/thomaskuenneth/batterymeter/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,9 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.glance.appwidget.GlanceAppWidgetManager
import androidx.glance.appwidget.state.updateAppWidgetState
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import eu.thomaskuenneth.batterymeter.ui.theme.BatteryMeterTheme
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch

class MainActivity : ComponentActivity() {

Expand Down Expand Up @@ -85,21 +81,6 @@ fun Context.updateBatteryMeterWidgets() {
val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
level * 100 / scale.toFloat()
}
MainScope().launch {
batteryPercent?.let {
GlanceAppWidgetManager(this@updateBatteryMeterWidgets).getGlanceIds(BatteryMeterWidget::class.java)
.forEach { glanceId ->
updateAppWidgetState(
context = this@updateBatteryMeterWidgets,
glanceId = glanceId,
) { preferences ->
preferences[BatteryMeterWidgetReceiver.batteryPercent] = batteryPercent
preferences[BatteryMeterWidgetReceiver.lastUpdatedMillis] =
System.currentTimeMillis()
BatteryMeterWidget().update(this@updateBatteryMeterWidgets, glanceId)
}
}
}
}
} ?: -1.0F
updateAppWidgetState(batteryPercent)
}

0 comments on commit dad106d

Please sign in to comment.