fix(app-glasses): панель статуса — по центру в оба глаза, процент цветной
Binocular-контент растягивался на весь 1280 (fillMaxSize внутри PositionedBox) — панель оказывалась по центру экрана, половина в каждом глазу. Теперь явная ширина половины (как у видео-Row) — панель по центру каждой половины, бинокулярно сливается в одну. ConnectionScreen тоже обёрнут в Binocular. Квадратик-индикатор убран — процент окрашивается цветом статуса (зелёный/белый/красный). Скрин: обе половины идентичны.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package pw.binom.viewmate.glasses.status
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
/**
|
||||
* Композ-панель статуса (время + заряд). Вызывается внутри [Binocular] content,
|
||||
* который рендерится дважды (левый/правый глаз), поэтому панель автоматически
|
||||
* дублируется и бинокулярно сливается в одну.
|
||||
*/
|
||||
@Composable
|
||||
fun StatusPanelCompose(modifier: Modifier = Modifier) {
|
||||
var data by remember { mutableStateOf<StatusPanelData?>(null) }
|
||||
val context = LocalContext.current
|
||||
DisposableEffect(Unit) {
|
||||
val provider = StatusPanelProvider(context) { data = it }
|
||||
provider.start()
|
||||
onDispose { provider.stop() }
|
||||
}
|
||||
val d = data ?: return
|
||||
Row(
|
||||
modifier = modifier
|
||||
.background(Color(0x99000000)) // полупрозрачный чёрный
|
||||
.padding(horizontal = 10.dp, vertical = 4.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Text(d.time, color = Color.White, style = MaterialTheme.typography.bodyMedium)
|
||||
Spacer(Modifier.width(6.dp))
|
||||
// Процент — цветом статуса заряда (зелёный/белый/красный), без квадратика.
|
||||
Text("${d.percent}%", color = Color(d.chargeColorArgb), style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user