Move Android message action to member details and translate radio call UI

This commit is contained in:
evgeny committed 2026-10-19 14:03:24 +02:00
1 parent 25376197db
commit b57c8e5041
3 files changed
+41 -9

No files matched your search

@@ -109,7 +109,6 @@ fun MemberListScreen(
onClick = { viewModel.showMemberDetail(channel.id, m.nodeId) },
onCall = { viewModel.startCall(channel.id, m.nodeId, m.name) },
onRadioCall = { com.utun.chat.data.RadioCallController.start(channel.id, m.nodeId) },
onMessage = { viewModel.startDm(channel.id, m.nodeId, m.name) },
onRadioMute = { viewModel.toggleMemberRadioMute(channel.id, m.nodeId) }
)
}
@@ -130,6 +129,7 @@ fun MemberListScreen(
canEdit = member != null,
onFiles = { onFiles(detail.nodeId) },
onInvite = { viewModel.showPmInvite(detail.nodeId, member?.name ?: detail.name, channel.id) },
onMessage = { viewModel.startDm(channel.id, detail.nodeId, member?.name ?: detail.name) },
onConnect = {
Log.i("utun-gui", "Member detail connect: channel=${channel.id} node=${detail.nodeId}")
viewModel.connectMemberNode(channel.id, detail.nodeId)
@@ -184,7 +184,6 @@ private fun MemberListItem(
onClick: () -> Unit,
onCall: () -> Unit,
onRadioCall: () -> Unit,
onMessage: () -> Unit,
onRadioMute: () -> Unit
) {
val onlineColor = when {
@@ -283,9 +282,6 @@ private fun MemberListItem(
IconButton(onClick = onCall, enabled = member.online, modifier = actionModifier) {
Icon(Icons.Filled.Call, stringResource(R.string.call))
}
IconButton(onClick = onMessage, modifier = actionModifier) {
Icon(Icons.AutoMirrored.Filled.Message, stringResource(R.string.message))
}
}
}
}
@@ -307,6 +303,7 @@ private fun MemberDetailCard(
canEdit: Boolean,
onFiles: () -> Unit,
onInvite: () -> Unit,
onMessage: () -> Unit,
onConnect: () -> Unit,
onEdit: () -> Unit
) {
@@ -401,10 +398,17 @@ private fun MemberDetailCard(
}
if (!isSelf) {
TextButton(onClick = onInvite) {
Icon(Icons.Filled.Add, stringResource(R.string.invite_to_group))
Spacer(Modifier.width(4.dp))
Text(stringResource(R.string.invite_to_group))
Row(verticalAlignment = Alignment.CenterVertically) {
TextButton(onClick = onMessage) {
Icon(Icons.AutoMirrored.Filled.Message, stringResource(R.string.message))
Spacer(Modifier.width(4.dp))
Text(stringResource(R.string.message))
}
TextButton(onClick = onInvite) {
Icon(Icons.Filled.Add, stringResource(R.string.invite_to_group))
Spacer(Modifier.width(4.dp))
Text(stringResource(R.string.invite_to_group))
}
}
}
Spacer(Modifier.height(4.dp))
@@ -1,5 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="radio_call">Вызов по рации</string>
<string name="radio_call_start">Вызвать по рации</string>
<string name="radio_call_incoming">Входящий вызов по рации</string>
<string name="radio_call_channel">Канал: %1$s</string>
<string name="radio_call_checking">Проверяем доступность абонента…</string>
<string name="radio_call_waiting">Примите вызов, чтобы включить рацию канала</string>
<string name="radio_call_ringing">Идёт вызов…</string>
<string name="radio_call_preparing">Включаем рацию канала…</string>
<string name="radio_call_declined">Вызов по рации отклонён</string>
<string name="radio_call_busy">Абонент занят</string>
<string name="radio_call_unavailable">Абонент недоступен</string>
<string name="radio_call_no_answer">Нет ответа</string>
<string name="radio_call_cancelled">Вызов отменён</string>
<string name="radio_call_audio_error">Не удалось включить рацию канала</string>
<string name="delete_conversation">Удалить переписку</string>
<string name="delete_conversation_confirm">Удалить переписку с %1$s и её локальные файлы? У собеседника история сохранится.</string>
<string name="delete_conversation_failed">Не удалось удалить переписку. Повторите попытку.</string>
@@ -1,5 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="radio_call">Radio call</string>
<string name="radio_call_start">Call by radio</string>
<string name="radio_call_incoming">Incoming radio call</string>
<string name="radio_call_channel">Channel: %1$s</string>
<string name="radio_call_checking">Checking subscriber availability…</string>
<string name="radio_call_waiting">Accept to join the channel radio</string>
<string name="radio_call_ringing">Ringing…</string>
<string name="radio_call_preparing">Starting channel radio…</string>
<string name="radio_call_declined">Radio call declined</string>
<string name="radio_call_busy">Subscriber is busy</string>
<string name="radio_call_unavailable">Subscriber is unavailable</string>
<string name="radio_call_no_answer">No answer</string>
<string name="radio_call_cancelled">Call cancelled</string>
<string name="radio_call_audio_error">Could not start channel radio</string>
<string name="delete_conversation">Delete conversation</string>
<string name="delete_conversation_confirm">Delete the conversation with %1$s and its local files? The other person keeps their history.</string>
<string name="delete_conversation_failed">Could not delete the conversation. Please try again.</string>