From f23d8e35bba994a65f45ae1bcd834d6d949fe670 Mon Sep 17 00:00:00 2001 From: ua1zbe Date: Fri, 21 Aug 2026 11:54:44 +0300 Subject: [PATCH] =?UTF-8?q?1.0.12:=20UI=20=E2=80=94=20=D1=83=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20HOLD=20TO=20TALK,=20PTT=20=D0=BA=D1=80?= =?UTF-8?q?=D1=83=D0=BF=D0=BD=D0=B5=D0=B5,=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B3=D0=BE=D0=B2=D0=BE=D1=80=D1=8F=D1=89=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BC=D0=B5=D0=B6=D0=B4=D1=83=20=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Удалена надпись HOLD TO TALK (lbl_ptt_hint). - PTT-кнопка увеличена 130→170 dp. - Строка говорящего перенесена между блоками «на связи» и индикаторами; единый формат: «Говорит UA1ZBE TG12» при приёме, «UA1ZBE TG12» когда приёма нет (шрифт прежний). --- .../java/ru/ua1zbe/svxremote/MainActivity.kt | 30 +++++++---- app/src/main/res/layout/activity_main.xml | 52 ++++++------------- app/src/main/res/values/strings.xml | 4 +- 3 files changed, 37 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt b/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt index b31e990..e2d1848 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt @@ -57,10 +57,10 @@ class MainActivity : Activity(), SvxService.Listener { private lateinit var lblSubtitle: TextView private lateinit var lblCallsign: TextView private lateinit var lblTg: TextView - private lateinit var lblTalkerTitle: TextView private lateinit var lblTalker: TextView private lateinit var lblDuplex: TextView - private lateinit var lblPttHint: TextView + private var lastTalkerCs = "" + private var lastTalkerTg = -1L private lateinit var lblTxState: TextView private lateinit var lblConnectHint: TextView private lateinit var connectZone: View @@ -147,10 +147,8 @@ class MainActivity : Activity(), SvxService.Listener { statusChip = findViewById(R.id.status_chip) lblAppTitle = findViewById(R.id.lbl_app_title) lblSubtitle = findViewById(R.id.lbl_subtitle) - lblTalkerTitle = findViewById(R.id.lbl_talker_title) lblTalker = findViewById(R.id.lbl_talker) lblDuplex = findViewById(R.id.lbl_duplex) - lblPttHint = findViewById(R.id.lbl_ptt_hint) lblTxState = findViewById(R.id.lbl_tx_state) lblConnectHint = findViewById(R.id.lbl_connect_hint) connectZone = findViewById(R.id.connect_zone) @@ -274,7 +272,6 @@ class MainActivity : Activity(), SvxService.Listener { toast(getString(R.string.perm_mic)) return } - lblPttHint.text = getString(R.string.ptt_talking) lblTxState.text = getString(R.string.status_big_talking) showDuplex(getString(R.string.duplex_tx), R.color.danger, null) svc?.startTx() @@ -283,7 +280,6 @@ class MainActivity : Activity(), SvxService.Listener { override fun onPttUp() { Log.d("SVXRemote", "PTT up") svc?.stopTx() - lblPttHint.text = getString(R.string.hold_to_talk) lblTxState.text = if (connected) getString(R.string.status_big_connected) else getString(R.string.status_big_disconnected) @@ -376,7 +372,6 @@ class MainActivity : Activity(), SvxService.Listener { lblTxState.text = getString(R.string.status_big_disconnected) lblTxState.setTextColor(getColor(R.color.danger)) lblConnectHint.text = getString(R.string.hint_connect) - lblPttHint.text = getString(R.string.hold_to_talk) } ReflectorClient.STATE_CONNECTING, @@ -454,9 +449,9 @@ class MainActivity : Activity(), SvxService.Listener { } resetMonitorIdle() } - lblTalkerTitle.text = getString(R.string.talker_now, tg) - lblTalkerTitle.setTextColor(getColor(R.color.text_secondary)) - lblTalker.text = callsign + lastTalkerCs = callsign + lastTalkerTg = tg + updateTalkerLine(active = true) if (!pttButton.isPressed2) { showDuplex(getString(R.string.duplex_rx), R.color.accent, DUPLEX_RX_HIDE_MS) } @@ -464,7 +459,20 @@ class MainActivity : Activity(), SvxService.Listener { } override fun onTalkerStop(tg: Long, callsign: String) { - // последний говоривший остаётся на экране + // последний говоривший остаётся на экране, но без префикса «Говорит» + mainHandler.post { updateTalkerLine(active = false) } + } + + /** Единая строка говорящего: «Говорит …» при приёме, иначе позывной+TG. */ + private fun updateTalkerLine(active: Boolean) { + if (lastTalkerCs.isEmpty()) { + lblTalker.text = "" + return + } + lblTalker.text = if (active) + getString(R.string.talker_active_fmt, lastTalkerCs, lastTalkerTg) + else + getString(R.string.talker_idle_fmt, lastTalkerCs, lastTalkerTg) } override fun onNodeJoined(callsign: String, tg: Long?) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 463d421..b923f13 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -154,11 +154,24 @@ android:text="@string/status_disconnected" /> + + + - - - - - - - + android:layout_width="170dp" + android:layout_height="170dp" /> Удалить Удалено Мониторинг: %1$s - Говорит TG%1$d + Говорит %1$s TG%2$d + %1$s TG%2$d RX TX DISCONNECTED @@ -63,7 +64,6 @@ ПЕРЕДАЧА Нажмите, чтобы подключиться Нажмите, чтобы отключиться - HOLD TO TALK RX MIC ---