diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt index 7580abdce2..e214fdcda1 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatInfoView.kt @@ -1,10 +1,12 @@ package chat.simplex.app.views.chat import InfoRow +import InfoRowEllipsis import SectionDivider import SectionItemView import SectionSpacer import SectionView +import android.widget.Toast import androidx.activity.compose.BackHandler import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -12,16 +14,20 @@ import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.outlined.* -import androidx.compose.runtime.Composable +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.ClipboardManager +import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import chat.simplex.app.R +import chat.simplex.app.SimplexApp import chat.simplex.app.model.* import chat.simplex.app.ui.theme.* import chat.simplex.app.views.helpers.* @@ -223,7 +229,11 @@ fun ServerImage(networkStatus: Chat.NetworkStatus) { @Composable fun SimplexServers(text: String, servers: List) { val info = servers.joinToString(separator = ", ") { it.substringAfter("@") } - InfoRow(text, info) + val clipboardManager: ClipboardManager = LocalClipboardManager.current + InfoRowEllipsis(text, info) { + clipboardManager.setText(AnnotatedString(servers.joinToString(separator = ","))) + Toast.makeText(SimplexApp.context, generalGetString(R.string.copied), Toast.LENGTH_SHORT).show() + } } @Composable diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt index 7e22b00d2d..2adaf878e2 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt @@ -79,7 +79,7 @@ class AlertManager { title = { Text(title) }, text = alertText, confirmButton = { - Button(onClick = { + TextButton(onClick = { onConfirm?.invoke() hideAlert() }) { Text(confirmText) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt index f77c179e57..6a04db96e3 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/Section.kt @@ -5,6 +5,8 @@ import androidx.compose.material.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.* import chat.simplex.app.ui.theme.GroupDark import chat.simplex.app.ui.theme.HighOrLowlight @@ -80,3 +82,26 @@ fun InfoRow(title: String, value: String) { } } } + +@Composable +fun InfoRowEllipsis(title: String, value: String, onClick: () -> Unit) { + SectionItemView { + Row( + Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + val configuration = LocalConfiguration.current + Text(title) + Text(value, + Modifier + .padding(start = 10.dp) + .widthIn(max = (configuration.screenWidthDp / 2).dp) + .clickable(onClick = onClick), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + color = HighOrLowlight + ) + } + } +} diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index 6aaeed14be..6a830e114a 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -160,6 +160,7 @@ нет описания Добавить контакт + Скопировано в буфер обмена Начать новый разговор @@ -273,7 +274,7 @@ Введите SMP серверы, каждый сервер в отдельной строке: Инфо Сохранить - Сеть & серверы + Сеть и серверы Настройки сети Настройки сети Использовать SOCKS прокси (порт 9050) diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml index 90d7fa256b..fd4f5a519b 100644 --- a/apps/android/app/src/main/res/values/strings.xml +++ b/apps/android/app/src/main/res/values/strings.xml @@ -160,6 +160,7 @@ Ok no details Add contact + Copied to clipboard Start new chat