Регулятор «Высота» экрана очков (0..1, с учётом масштаба): SetVertical по протоколу, offset Y в кино/коннект/оверлее, слайдер на пульте
This commit is contained in:
@@ -17,6 +17,7 @@ import pw.binom.viewmate.core.protocol.MediaCommandMsg
|
||||
import pw.binom.viewmate.core.protocol.PlayVideo
|
||||
import pw.binom.viewmate.core.protocol.SetMode
|
||||
import pw.binom.viewmate.core.protocol.SetScale
|
||||
import pw.binom.viewmate.core.protocol.SetVertical
|
||||
import pw.binom.viewmate.core.protocol.ShowText
|
||||
import pw.binom.viewmate.core.protocol.Shutdown
|
||||
|
||||
@@ -275,6 +276,13 @@ class PhoneActions(
|
||||
return "масштаб → $clamped"
|
||||
}
|
||||
|
||||
/** Вертикаль экрана очков: SetVertical (0..1; 1 — верх, 0 — низ). */
|
||||
suspend fun applyVertical(vertical: Float): String {
|
||||
val clamped = vertical.coerceIn(0f, 1f)
|
||||
sender.send(SetVertical(clamped))
|
||||
return "высота → $clamped"
|
||||
}
|
||||
|
||||
/** Закрыть приложение на очках (телефон остаётся открытым). */
|
||||
suspend fun shutdownGlasses(): String {
|
||||
sender.send(Shutdown())
|
||||
|
||||
@@ -39,6 +39,16 @@ class PhoneState {
|
||||
log("state", "масштаб → $value")
|
||||
}
|
||||
|
||||
private val _vertical = MutableStateFlow(1f)
|
||||
val verticalFlow: StateFlow<Float> = _vertical.asStateFlow()
|
||||
/** Вертикаль экрана очков (0..1): 1.0 — у верха, 0.0 — нижняя кромка у низа. */
|
||||
var vertical: Float
|
||||
get() = _vertical.value
|
||||
set(value) {
|
||||
_vertical.value = value.coerceIn(0f, 1f)
|
||||
log("state", "высота → $value")
|
||||
}
|
||||
|
||||
private val _currentItem = MutableStateFlow<JellyfinItem?>(null)
|
||||
val currentItemFlow: StateFlow<JellyfinItem?> = _currentItem.asStateFlow()
|
||||
var currentItem: JellyfinItem?
|
||||
|
||||
@@ -81,6 +81,11 @@ data class ChatSessionMsg(val sessionId: String, val title: String) : HostToGlas
|
||||
@SerialName("set_scale")
|
||||
data class SetScale(val scale: Float) : HostToGlasses
|
||||
|
||||
/** Вертикальное положение экрана очков (0..1); 1.0 — у верха, 0.0 — нижняя кромка у низа. */
|
||||
@Serializable
|
||||
@SerialName("set_vertical")
|
||||
data class SetVertical(val vertical: Float) : HostToGlasses
|
||||
|
||||
/** Фраза распознана (streaming): phrase — фраза, full — весь накопленный текст сессии. */
|
||||
@Serializable
|
||||
@SerialName("stt_phrase")
|
||||
|
||||
Reference in New Issue
Block a user