From 027e2efb9c2e26feea1a2096faa37a06928b50d2 Mon Sep 17 00:00:00 2001 From: subochev Date: Sun, 27 Sep 2026 04:01:22 +0300 Subject: [PATCH] phone: rewind/forward buttons in remote screen (DPAD left/right) --- .../binom/rayneovm/phone/ui/RemoteScreen.kt | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/app-phone-vm/src/main/kotlin/pw/binom/rayneovm/phone/ui/RemoteScreen.kt b/app-phone-vm/src/main/kotlin/pw/binom/rayneovm/phone/ui/RemoteScreen.kt index fa86e1f..32a07a1 100644 --- a/app-phone-vm/src/main/kotlin/pw/binom/rayneovm/phone/ui/RemoteScreen.kt +++ b/app-phone-vm/src/main/kotlin/pw/binom/rayneovm/phone/ui/RemoteScreen.kt @@ -15,6 +15,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.FastForward +import androidx.compose.material.icons.filled.FastRewind import androidx.compose.material.icons.filled.Keyboard import androidx.compose.material.icons.filled.Pause import androidx.compose.material.icons.filled.PlayArrow @@ -45,6 +47,8 @@ import pw.binom.rayneovm.shared.VmDisplay // android.view.KeyEvent-коды. Здесь обычные числа, чтобы не тянуть android-зависимости в UI-тесты. private const val KEYCODE_BACK = 4 +private const val KEYCODE_DPAD_LEFT = 21 +private const val KEYCODE_DPAD_RIGHT = 22 private const val KEYCODE_MEDIA_PLAY = 126 private const val KEYCODE_MEDIA_PAUSE = 127 @@ -56,7 +60,7 @@ private const val CLICK_GRACE_MS = 100L * - тачпад-мышь: движение одного пальца → курсор (отыгрывается на очках в обоих глазах), * тап по тачпаду → клик в текущей позиции курсора; * - два пальца по тачпаду → скролл (вверх/вниз/вправо/влево) под курсором; - * - кнопки «Назад», «Плей», «Пауза»; + * - кнопки «Перемотка», «Плей», «Вперёд», «Назад», «Пауза»; * - «Клавиатура» — заглушка (сделаем позже). */ @Composable @@ -170,12 +174,24 @@ fun RemoteScreen( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(12.dp), ) { - RemoteButton(Icons.AutoMirrored.Filled.ArrowBack, "Назад", Modifier.weight(1f)) { - scope.launch { controller.sendKey(KEYCODE_BACK) } + RemoteButton(Icons.Default.FastRewind, "Перемотка", Modifier.weight(1f)) { + scope.launch { controller.sendKey(KEYCODE_DPAD_LEFT) } } RemoteButton(Icons.Default.PlayArrow, "Плей", Modifier.weight(1f)) { scope.launch { controller.sendKey(KEYCODE_MEDIA_PLAY) } } + RemoteButton(Icons.Default.FastForward, "Вперёд", Modifier.weight(1f)) { + scope.launch { controller.sendKey(KEYCODE_DPAD_RIGHT) } + } + } + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp), + ) { + RemoteButton(Icons.AutoMirrored.Filled.ArrowBack, "Назад", Modifier.weight(1f)) { + scope.launch { controller.sendKey(KEYCODE_BACK) } + } RemoteButton(Icons.Default.Pause, "Пауза", Modifier.weight(1f)) { scope.launch { controller.sendKey(KEYCODE_MEDIA_PAUSE) } } @@ -197,7 +213,7 @@ private fun RemoteButton( onClick = onClick, enabled = enabled, modifier = modifier, - contentPadding = PaddingValues(vertical = 12.dp), + contentPadding = PaddingValues(horizontal = 4.dp, vertical = 12.dp), ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Icon(icon, contentDescription = label)