diff --git a/app/src/main/java/com/miti99/loto/ui/settings/VoiceToggles.kt b/app/src/main/java/com/miti99/loto/ui/settings/VoiceToggles.kt
index dc8705a..28af097 100644
--- a/app/src/main/java/com/miti99/loto/ui/settings/VoiceToggles.kt
+++ b/app/src/main/java/com/miti99/loto/ui/settings/VoiceToggles.kt
@@ -4,6 +4,7 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Switch
import androidx.compose.material3.Text
@@ -11,14 +12,16 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
import com.miti99.loto.R
import com.miti99.loto.settings.SettingsState
/**
- * Three voice-announcement toggle rows.
+ * Voice-announcement toggle rows. Mirrors `SettingsButton.svelte` gating:
*
- * The "đọc số khi Chờ" switch is only visible when [state.voiceEnabledPlayer] is on
- * (matching web's conditional render at SettingsButton.svelte).
+ * - Master row visible when mode != PLAYER. Hint copy varies by mode
+ * (BOTH includes "+ báo Chờ/Kinh", MASTER-only just "Đọc số đã xổ.").
+ * - Player + waiting-number rows visible when mode != MASTER.
*/
@Composable
internal fun VoiceToggles(
@@ -29,22 +32,37 @@ internal fun VoiceToggles(
modifier: Modifier = Modifier,
) {
Column(modifier = modifier) {
- SwitchRow(
- label = stringResource(R.string.voice_enabled_master),
- checked = state.voiceEnabledMaster,
- onCheckedChange = onSetVoiceEnabledMaster,
- )
- SwitchRow(
- label = stringResource(R.string.voice_enabled_player),
- checked = state.voiceEnabledPlayer,
- onCheckedChange = onSetVoiceEnabledPlayer,
- )
- AnimatedVisibility(visible = state.voiceEnabledPlayer) {
+ if (state.mode != SettingsState.Mode.PLAYER) {
SwitchRow(
- label = stringResource(R.string.voice_waiting_number),
- checked = state.voiceWaitingNumber,
- onCheckedChange = onSetVoiceWaitingNumber,
+ label = stringResource(R.string.voice_enabled_master),
+ checked = state.voiceEnabledMaster,
+ onCheckedChange = onSetVoiceEnabledMaster,
)
+ val hintRes = if (state.mode == SettingsState.Mode.BOTH)
+ R.string.voice_master_hint_both
+ else
+ R.string.voice_master_hint_master_only
+ Text(
+ text = stringResource(hintRes),
+ style = MaterialTheme.typography.bodySmall,
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ modifier = Modifier.padding(start = 4.dp, top = 2.dp, bottom = 8.dp),
+ )
+ }
+
+ if (state.mode != SettingsState.Mode.MASTER) {
+ SwitchRow(
+ label = stringResource(R.string.voice_enabled_player),
+ checked = state.voiceEnabledPlayer,
+ onCheckedChange = onSetVoiceEnabledPlayer,
+ )
+ AnimatedVisibility(visible = state.voiceEnabledPlayer) {
+ SwitchRow(
+ label = stringResource(R.string.voice_waiting_number),
+ checked = state.voiceWaitingNumber,
+ onCheckedChange = onSetVoiceWaitingNumber,
+ )
+ }
}
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 837ba00..c96ca28 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -62,6 +62,8 @@
Quản trò: đọc số
Người chơi: đọc Chờ / Kinh
Đọc số khi Chờ
+ Đọc số đã xổ + báo Chờ/Kinh.
+ Đọc số đã xổ.
Chọn giọng
Màu ô trống
Tùy chỉnh