ui: redesign toolbar position card (#6901)

This commit is contained in:
spaced4ndy
2026-04-28 14:25:40 +00:00
committed by GitHub
parent ed3b85e103
commit 51480958c4
29 changed files with 143 additions and 87 deletions
@@ -401,6 +401,13 @@ struct ChatListView: View {
.padding(.top, oneHandUI ? 8 : 0)
.id("searchBar")
}
if !oneHandUICardShown {
OneHandUICard()
.padding(.vertical, 6)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
}
if #available(iOS 16.0, *) {
ForEach(cs, id: \.viewId) { chat in
ChatListNavLink(chat: chat, parentSheet: $sheet)
@@ -420,13 +427,6 @@ struct ChatListView: View {
.disabled(chatModel.chatRunning != true || chatModel.deletedChats.contains(chat.chatInfo.id))
}
}
if !oneHandUICardShown {
OneHandUICard()
.padding(.vertical, 6)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
}
if !addressCreationCardShown && hasConversations {
ConnectBannerCard()
.padding(.vertical, 6)
@@ -11,27 +11,46 @@ import SimpleXChat
struct OneHandUICard: View {
@EnvironmentObject var theme: AppTheme
@Environment(\.dynamicTypeSize) private var userFont: DynamicTypeSize
@AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true
@AppStorage(DEFAULT_ONE_HAND_UI_CARD_SHOWN) private var oneHandUICardShown = false
@AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.defaultMaterial
@State private var showOneHandUIAlert = false
var body: some View {
ZStack(alignment: .topTrailing) {
VStack(alignment: .leading, spacing: 8) {
Text("Toggle chat list:").font(.title3)
Toggle("Reachable chat toolbar", isOn: $oneHandUI)
HStack(spacing: 2) {
segment(
icon: "platter.filled.bottom.and.arrow.down.iphone",
text: "Bottom bar",
isSelected: oneHandUI
) {
withAnimation { oneHandUI = true }
}
Image(systemName: "multiply")
.foregroundColor(theme.colors.secondary)
.onTapGesture {
showOneHandUIAlert = true
.background { if oneHandUI { Color(uiColor: .systemGray5) } }
.background(ToolbarMaterial.material(toolbarMaterial))
ZStack(alignment: .trailing) {
segment(
icon: "platter.filled.top.and.arrow.up.iphone",
text: "Top bar",
isSelected: !oneHandUI
) {
withAnimation { oneHandUI = false }
}
Image(systemName: "multiply")
.foregroundColor(theme.colors.secondary)
.frame(width: 12, height: 12)
.padding(.vertical, 4)
.padding(.trailing, 12)
.padding(.leading, 4)
.contentShape(Rectangle())
.onTapGesture {
showOneHandUIAlert = true
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background { if !oneHandUI { Color(uiColor: .systemGray5) } }
.background(ToolbarMaterial.material(toolbarMaterial))
}
.padding()
.background(theme.appColors.sentMessage)
.cornerRadius(12)
.frame(height: dynamicSize(userFont).rowHeight)
.clipShape(Capsule())
.alert(isPresented: $showOneHandUIAlert) {
Alert(
title: Text("Reachable chat toolbar"),
@@ -44,6 +63,22 @@ struct OneHandUICard: View {
)
}
}
private func segment(icon: String, text: String, isSelected: Bool, action: @escaping () -> Void) -> some View {
HStack(spacing: 8) {
Image(systemName: icon)
.font(.body)
.foregroundColor(isSelected ? theme.colors.secondary : theme.colors.primary)
Text(text)
.font(.subheadline)
.foregroundColor(isSelected ? theme.colors.secondary : theme.colors.onBackground)
}
.padding(.leading, 16)
.padding(.vertical, 4)
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
.contentShape(Rectangle())
.onTapGesture { action() }
}
}
#Preview {
@@ -90,41 +90,85 @@ private fun showNewChatSheet(oneHandUI: State<Boolean>) {
@Composable
fun ToggleChatListCard() {
ChatListCard(
close = {
appPrefs.oneHandUICardShown.set(true)
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.one_hand_ui),
text = generalGetString(MR.strings.one_hand_ui_change_instruction),
val oneHandUI = remember { appPrefs.oneHandUI.state }
val onClose = {
appPrefs.oneHandUICardShown.set(true)
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.one_hand_ui),
text = generalGetString(MR.strings.one_hand_ui_change_instruction),
)
}
val activeBg = MaterialTheme.colors.background.mixWith(MaterialTheme.colors.onBackground, 0.97f)
.copy(alpha = appPrefs.inAppBarsAlpha.get())
val selectedBg = MaterialTheme.colors.background.mixWith(MaterialTheme.colors.onBackground, 0.92f)
Row(
Modifier
.padding(horizontal = 16.dp, vertical = 12.dp)
.fillMaxWidth()
.height(IntrinsicSize.Min)
.clip(RoundedCornerShape(percent = 50)),
horizontalArrangement = Arrangement.spacedBy(2.dp)
) {
ToolbarSegment(
icon = MR.images.ic_mobile_3,
text = stringResource(MR.strings.one_hand_ui_bottom_bar),
isSelected = oneHandUI.value,
selectedBg = selectedBg,
activeBg = activeBg,
modifier = Modifier.weight(1f)
) { appPrefs.oneHandUI.set(true) }
Box(Modifier.weight(1f).fillMaxHeight()) {
ToolbarSegment(
icon = MR.images.ic_mobile_4,
text = stringResource(MR.strings.one_hand_ui_top_bar),
isSelected = !oneHandUI.value,
selectedBg = selectedBg,
activeBg = activeBg,
modifier = Modifier.fillMaxSize()
) { appPrefs.oneHandUI.set(false) }
Icon(
painterResource(MR.images.ic_close), null,
Modifier
.align(Alignment.CenterEnd)
.padding(end = 4.dp)
.clip(CircleShape)
.clickable(onClick = onClose)
.padding(8.dp)
.size(16.dp),
tint = MaterialTheme.colors.secondary
)
}
}
}
@Composable
private fun ToolbarSegment(
icon: ImageResource,
text: String,
isSelected: Boolean,
selectedBg: Color,
activeBg: Color,
modifier: Modifier = Modifier,
onClick: () -> Unit
) {
Row(
modifier
.fillMaxHeight()
.background(if (isSelected) selectedBg else activeBg)
.then(if (!isSelected) Modifier.clickable(onClick = onClick) else Modifier)
.padding(start = 16.dp, top = 8.dp, bottom = 8.dp),
verticalAlignment = Alignment.CenterVertically
) {
Column(
modifier = Modifier
.padding(horizontal = DEFAULT_PADDING)
.padding(top = DEFAULT_PADDING)
) {
Row(
horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth()
) {
Text(stringResource(MR.strings.one_hand_ui_card_title), style = MaterialTheme.typography.h3)
}
Row(
Modifier.fillMaxWidth().padding(top = 6.dp, bottom = 12.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(stringResource(MR.strings.one_hand_ui), Modifier.weight(10f), style = MaterialTheme.typography.body1)
Spacer(Modifier.fillMaxWidth().weight(1f))
SharedPreferenceToggle(
appPrefs.oneHandUI,
enabled = true
)
}
}
Icon(
painterResource(icon), null, Modifier.size(20.dp),
tint = if (isSelected) MaterialTheme.colors.secondary else MaterialTheme.colors.primary
)
Spacer(Modifier.width(8.dp))
Text(
text,
color = if (isSelected) MaterialTheme.colors.secondary else MaterialTheme.colors.onBackground,
style = MaterialTheme.typography.body1
)
}
}
@@ -918,13 +962,18 @@ private fun BoxScope.ChatList(searchText: MutableState<TextFieldValue>, listStat
}
}
}
if (!oneHandUICardShown.value) {
item {
ToggleChatListCard()
}
}
itemsIndexed(chats, key = { _, chat -> chat.remoteHostId to chat.id }) { index, chat ->
val nextChatSelected = remember(chat.id, chats) { derivedStateOf {
chatModel.chatId.value != null && chats.getOrNull(index + 1)?.id == chatModel.chatId.value
} }
ChatListNavLinkView(chat, nextChatSelected)
}
if (!oneHandUICardShown.value || !addressCreationCardShown.value) {
if (!addressCreationCardShown.value) {
item {
ChatListFeatureCards()
}
@@ -989,20 +1038,12 @@ private fun NoChatsView(searchText: MutableState<TextFieldValue>) {
@Composable
private fun ChatListFeatureCards() {
val oneHandUI = remember { appPrefs.oneHandUI.state }
val oneHandUICardShown = remember { appPrefs.oneHandUICardShown.state }
val addressCreationCardShown = remember { appPrefs.addressCreationCardShown.state }
Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp)) {
if (!oneHandUICardShown.value && !oneHandUI.value) {
ToggleChatListCard()
}
if (!addressCreationCardShown.value && hasConversations(chatModel.chats.value)) {
if (!addressCreationCardShown.value && hasConversations(chatModel.chats.value)) {
Column(modifier = Modifier.padding(16.dp)) {
ConnectBannerCard()
}
if (!oneHandUICardShown.value && oneHandUI.value) {
ToggleChatListCard()
}
}
}
@@ -2023,7 +2023,6 @@
<string name="invite_friends_short">ادعُ</string>
<string name="v6_0_new_media_options">خيارات الوسائط الجديدة</string>
<string name="v6_0_chat_list_media">شغّل من قائمة الدردشة.</string>
<string name="one_hand_ui_card_title">تبديل قائمة الدردشة:</string>
<string name="one_hand_ui_change_instruction">يمكنك تغييره في إعدادات المظهر.</string>
<string name="v6_0_upgrade_app_descr">نزّل الإصدارات الجديدة من GitHub.</string>
<string name="v6_0_upgrade_app">ترقية التطبيق تلقائيًا</string>
@@ -1701,7 +1701,8 @@
<string name="confirm_database_upgrades">Confirm database upgrades</string>
<string name="one_hand_ui">Reachable app toolbars</string>
<string name="chat_bottom_bar">Reachable chat toolbar</string>
<string name="one_hand_ui_card_title">Toggle chat list:</string>
<string name="one_hand_ui_bottom_bar">Bottom bar</string>
<string name="one_hand_ui_top_bar">Top bar</string>
<string name="one_hand_ui_change_instruction">You can change it in Appearance settings.</string>
<string name="terminal_always_visible">Show console in new window</string>
<string name="chat_list_always_visible">Show chat list in new window</string>
@@ -2039,7 +2039,6 @@
<string name="app_check_for_updates_button_skip">Пропусни тази версия</string>
<string name="app_check_for_updates_notice_title">Провери за актуализации</string>
<string name="settings_section_title_chat_database">БАЗА ДАННИ</string>
<string name="one_hand_ui_card_title">Превключване на чат списъка:</string>
<string name="you_can_still_send_messages_to_contact">Можете да изпращате съобщения до %1$s от архивираните контакти.</string>
<string name="chat_bottom_bar">Достъпен панел</string>
<string name="cant_send_message_to_member_alert_title">Изпращането на съобщения на груповия член не е налично</string>
@@ -1974,7 +1974,6 @@
<string name="one_hand_ui">Barres d\'eines d\'aplicacions accessible</string>
<string name="chat_bottom_bar">Barres d\'eines de xat accessible</string>
<string name="chat_list_always_visible">Mostra la llista de xat en una finestra nova</string>
<string name="one_hand_ui_card_title">Commuta la llista de xat:</string>
<string name="terminal_always_visible">Mostrar consola en finestra nova</string>
<string name="one_hand_ui_change_instruction">Podeu canviar-la a la configuració de l\'aparença.</string>
<string name="upgrade_and_open_chat">Actualitzar i obrir el xat</string>
@@ -2246,7 +2246,6 @@
<string name="chat_theme_set_default_theme">Nastavit výchozí téma</string>
<string name="servers_info_uploaded">Nahráno</string>
<string name="privacy_chat_list_open_links_yes">Ano</string>
<string name="one_hand_ui_card_title">Přepnout chat seznam:</string>
<string name="change_automatic_chat_deletion_message">Tuto akci nelze zrušit - zprávy odeslané a přijaté v tomto chatu dříve než vybraná, budou smazány.</string>
<string name="servers_info_reset_stats_alert_message">Statistiky serverů budou obnoveny - nemůže být vráceno!</string>
<string name="v6_3_reports">Odešlete soukromý report</string>
@@ -2107,7 +2107,6 @@
<string name="create_address_button">Erstellen</string>
<string name="v6_0_upgrade_app_descr">Laden Sie neue Versionen von GitHub herunter.</string>
<string name="v6_0_chat_list_media">Direkt aus der Chat-Liste abspielen.</string>
<string name="one_hand_ui_card_title">Chat-Liste umschalten:</string>
<string name="one_hand_ui_change_instruction">Kann von Ihnen in den Erscheinungsbild-Einstellungen geändert werden.</string>
<string name="v6_0_your_contacts_descr">Kontakte für spätere Chats archivieren.</string>
<string name="v6_0_private_routing_descr">Ihre IP-Adresse und Verbindungen werden geschützt.</string>
@@ -1385,7 +1385,6 @@
<string name="app_check_for_updates_notice_desc">Για να λαμβάνεις ειδοποιήσεις σχετικά με τις νέες εκδόσεις, ενεργοποίησε τον περιοδικό έλεγχο για σταθερές ή δοκιμαστικές εκδόσεις.</string>
<string name="to_connect_via_link_title">Για να συνδεθείς μέσω συνδέσμου</string>
<string name="scan_qr_to_connect_to_contact">Για να συνδεθείς, η επαφή σου μπορεί να σαρώσει τον κωδικό QR ή να χρησιμοποιήσει τον σύνδεσμο στην εφαρμογή.</string>
<string name="one_hand_ui_card_title">Εναλλαγή λίστας συνομιλιών:</string>
<string name="v5_3_simpler_incognito_mode_descr">Ενεργοποίηση ανώνυμης λειτουργίας κατά τη σύνδεση.</string>
<string name="v5_4_block_group_members_descr">Για απόκρυψη ανεπιθύμητων μηνυμάτων.</string>
<string name="call_desktop_permission_denied_title">Για να πραγματοποιήσεις κλήσεις, επέτρεψε τη χρήση του μικροφώνου σου. Τερμάτισε την κλήση και προσπάθησε να καλέσεις ξανά.</string>
@@ -2040,7 +2040,6 @@
<string name="no_filtered_contacts">Ningún contacto filtrado</string>
<string name="v6_0_privacy_blur">Difumina para mayor privacidad</string>
<string name="create_address_button">Crear</string>
<string name="one_hand_ui_card_title">Alternar lista de chats:</string>
<string name="v6_0_increase_font_size">Ajusta el tamaño de la fuente.</string>
<string name="v6_0_chat_list_media">Reproduce desde la lista de chats.</string>
<string name="v6_0_upgrade_app">Actualizar la aplicación automáticamente</string>
@@ -2424,7 +2424,6 @@
<string name="message_deleted_or_not_received_error_desc">این پیام حذف شده یا هنوز دریافت نشده است.</string>
<string name="time_to_disappear_is_set_only_for_new_contacts">زمان ناپدید شدن فقط برای مخاطبان جدید تنظیم شده است.</string>
<string name="app_check_for_updates_notice_desc">برای مطلع شدن از نسخه‌های جدید، بررسی دوره‌ای برای نسخه‌های Stable یا Beta را فعال کنید.</string>
<string name="one_hand_ui_card_title">تغییر لیست چت:</string>
<string name="call_desktop_permission_denied_title">برای برقراری تماس، اجازه دهید از میکروفن شما استفاده شود. تماس را پایان دهید و دوباره تلاش کنید.</string>
<string name="to_protect_against_your_link_replaced_compare_codes">برای جلوگیری از جایگزینی لینک شما، می‌توانید کدهای امنیتی مخاطب را مقایسه کنید.</string>
<string name="operator_use_for_messages_receiving">برای دریافت</string>
@@ -2041,7 +2041,6 @@
<string name="selected_chat_items_selected_n">%d sélectionné(s)</string>
<string name="v6_0_chat_list_media">Aperçu depuis la liste de conversation.</string>
<string name="moderate_messages_will_be_marked_warning">Les messages seront marqués comme modérés pour tous les membres.</string>
<string name="one_hand_ui_card_title">Afficher la liste des conversations:</string>
<string name="one_hand_ui_change_instruction">Vous pouvez choisir de le modifier dans les paramètres d\'apparence.</string>
<string name="reset_all_hints">Rétablir tous les conseils</string>
<string name="v6_0_upgrade_app">Mise à jour automatique de l\'app</string>
@@ -2001,7 +2001,6 @@
<string name="network_option_tcp_connection">TCP-kapcsolat</string>
<string name="chat_database_exported_save">Mentheti az exportált archívumot.</string>
<string name="reset_all_hints">Tippek visszaállítása</string>
<string name="one_hand_ui_card_title">Csevegési lista ki/be:</string>
<string name="one_hand_ui_change_instruction">Ezt a „Megjelenés” menüben módosíthatja.</string>
<string name="v6_0_new_media_options">Új médiabeállítások</string>
<string name="v6_0_chat_list_media">Lejátszás a csevegési listából.</string>
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M263-45q-24.19 0-40.84-16.89-16.66-16.89-16.66-40.61v-755q0-22.97 17.27-40.23Q240.03-915 263-915h433.5q23.72 0 40.61 16.89T754-857.5v755q0 23.72-16.89 40.61T696.5-45H263Zm0-57.5h433.5v-755H263v755Zm0 0v-755 755ZM330-185h300q12.25 0 20.63-8.43 8.37-8.42 8.37-20.5 0-12.07-8.37-20.32-8.38-8.25-20.63-8.25H330q-12.25 0-20.37 8.53-8.13 8.54-8.13 20.4 0 11.85 8.13 20.21Q317.75-185 330-185Z"/></svg>

After

Width:  |  Height:  |  Size: 510 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M263-45q-24.19 0-40.84-16.89-16.66-16.89-16.66-40.61v-755q0-22.97 17.27-40.23Q240.03-915 263-915h433.5q23.72 0 40.61 16.89T754-857.5v755q0 23.72-16.89 40.61T696.5-45H263Zm0-57.5h433.5v-755H263v755Zm0 0v-755 755ZM330-717.5h300q12.25 0 20.63-8.43 8.37-8.42 8.37-20.5 0-12.07-8.37-20.32-8.38-8.25-20.63-8.25H330q-12.25 0-20.37 8.53-8.13 8.54-8.13 20.4 0 11.85 8.13 20.21Q317.75-717.5 330-717.5Z"/></svg>

After

Width:  |  Height:  |  Size: 517 B

@@ -2025,7 +2025,6 @@
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">Platform perpesanan dan aplikasi yang melindungi privasi dan keamanan Anda.</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Untuk melindungi privasi Anda, SimpleX gunakan ID terpisah untuk setiap kontak.</string>
<string name="settings_section_title_socks">PROXY SOCKS</string>
<string name="one_hand_ui_card_title">Alihkan daftar obrolan:</string>
<string name="upgrade_and_open_chat">Tingkatkan dan buka obrolan</string>
<string name="group_invitation_tap_to_join_incognito">Ketuk untuk gabung ke samaran</string>
<string name="snd_group_event_member_blocked">Anda memblokir %s</string>
@@ -2040,7 +2040,6 @@
<string name="v6_0_private_routing_descr">Protegge il tuo indirizzo IP e le connessioni.</string>
<string name="network_options_save_and_reconnect">Salva e riconnetti</string>
<string name="reset_all_hints">Ripristina tutti i suggerimenti</string>
<string name="one_hand_ui_card_title">Cambia l\'elenco delle chat:</string>
<string name="one_hand_ui_change_instruction">Puoi cambiarlo nelle impostazioni dell\'aspetto.</string>
<string name="v6_0_chat_list_media">Riproduci dall\'elenco delle chat.</string>
<string name="v6_0_increase_font_size">Aumenta la dimensione dei caratteri.</string>
@@ -1825,7 +1825,6 @@
<string name="smp_servers_configured">SMPサーバーの構成</string>
<string name="servers_info_sessions_connected">接続中</string>
<string name="xftp_servers_configured">XFTPサーバーの構成</string>
<string name="one_hand_ui_card_title">チャットリスト表示切り替え</string>
<string name="contact_list_header_title">連絡先</string>
<string name="message_servers">メッセージサーバ</string>
<string name="media_and_file_servers">メディア&amp;ファイルサーバ</string>
@@ -1796,7 +1796,6 @@
<string name="confirm_database_upgrades">Apstiprināt datu bāzes jauninājumus</string>
<string name="one_hand_ui">Vienas rokas saskarne</string>
<string name="chat_bottom_bar">Sarunu apakšējā josla</string>
<string name="one_hand_ui_card_title">Vienas rokas saskarnes karte</string>
<string name="one_hand_ui_change_instruction">Vienas rokas saskarnes maiņas instrukcija</string>
<string name="terminal_always_visible">Terminālis vienmēr redzams</string>
<string name="chat_list_always_visible">Sarunu saraksts vienmēr redzams</string>
@@ -2038,7 +2038,6 @@
<string name="v6_0_delete_many_messages_descr">Verwijder maximaal 20 berichten tegelijk.</string>
<string name="chat_database_exported_not_all_files">Sommige bestanden zijn niet geëxporteerd</string>
<string name="reset_all_hints">Alle hints resetten</string>
<string name="one_hand_ui_card_title">Chat-lijst wisselen:</string>
<string name="one_hand_ui_change_instruction">U kunt dit wijzigen in de instellingen onder uiterlijk</string>
<string name="create_address_button">Creëren</string>
<string name="v6_0_privacy_blur">Vervagen voor betere privacy.</string>
@@ -2007,7 +2007,6 @@
<string name="network_option_tcp_connection">Połączenie TCP</string>
<string name="selected_chat_items_nothing_selected">Nic nie jest zaznaczone</string>
<string name="error_parsing_uri_desc">Sprawdź czy link SimpleX jest poprawny.</string>
<string name="one_hand_ui_card_title">Przełącz listę czatów:</string>
<string name="v6_0_your_contacts_descr">Archiwizuj kontakty aby porozmawiać później.</string>
<string name="v6_0_private_routing_descr">Chroni Twój adres IP i połączenia.</string>
<string name="v6_0_reachable_chat_toolbar">Osiągalny pasek narzędzi czatu</string>
@@ -1870,7 +1870,6 @@
<string name="migrate_from_device_to_another_device">Migrar para outro dispositivo</string>
<string name="migrate_from_device_verify_passphrase">Verificar palavra-passe</string>
<string name="network_type_network_wifi">WiFi</string>
<string name="one_hand_ui_card_title">Alternar lista de conversa:</string>
<string name="one_hand_ui_change_instruction">Você pode mudar isso em configurações de Aparência.</string>
<string name="member_info_member_disabled">desativado</string>
<string name="message_queue_info_none">nenhum</string>
@@ -1890,7 +1890,6 @@
<string name="video_descr">Video</string>
<string name="voice_message_with_duration">Mesaj vocal (%1$s)</string>
<string name="submit_passcode">Trimite</string>
<string name="one_hand_ui_card_title">Comută lista de conversații:</string>
<string name="enter_passphrase_notification_desc">Pentru a primi notificări, te rugăm să introduci parola bazei de date</string>
<string name="waiting_for_video">Se așteaptă videoclipul</string>
<string name="connection_error_quota">Mesaje nelivrate</string>
@@ -2122,7 +2122,6 @@
<string name="v6_0_new_media_options">Новые медиа-опции</string>
<string name="invite_friends_short">Пригласить</string>
<string name="new_message">Новое сообщение</string>
<string name="one_hand_ui_card_title">Переключите список чатов:</string>
<string name="v6_0_upgrade_app">Обновление приложения</string>
<string name="v6_0_upgrade_app_descr">Загружать новые версии из GitHub.</string>
<string name="v6_0_increase_font_size">Увеличить размер шрифтов.</string>
@@ -2054,7 +2054,6 @@
<string name="servers_info_reset_stats_alert_message">Sunucu istatistikleri sıfırlanacaktır - bu geri alınamaz!</string>
<string name="one_hand_ui">Erişilebilir uygulama araç çubukları</string>
<string name="one_hand_ui_change_instruction">Görünüm ayarlarından değiştirebilirsiniz.</string>
<string name="one_hand_ui_card_title">Sohbet listesini değiştir:</string>
<string name="system_mode_toast">Sistem modu</string>
<string name="v6_0_reachable_chat_toolbar">Erişilebilir sohbet araç çubuğu</string>
<string name="servers_info_target">İçin bilgi gösteriliyor</string>
@@ -1886,7 +1886,6 @@
<string name="new_message">Нове повідомлення</string>
<string name="create_address_button">Створити</string>
<string name="invite_friends_short">Запросити</string>
<string name="one_hand_ui_card_title">Перемикнути список чатів:</string>
<string name="one_hand_ui_change_instruction">Ви можете змінити це в налаштуваннях зовнішнього вигляду.</string>
<string name="info_row_message_status">Статус повідомлення</string>
<string name="v6_0_your_contacts_descr">Архівувати контакти, щоб поговорити пізніше.</string>
@@ -1982,7 +1982,6 @@
<string name="message_deleted_or_not_received_error_desc">Tin nhắn này đã bị xóa hoặc vẫn chưa được nhận.</string>
<string name="this_QR_code_is_not_a_link">Mã QR này không phải là một đường dẫn!</string>
<string name="this_link_is_not_a_valid_connection_link">Đường dẫn này không phải là một đường dẫn kết nối hợp lệ!</string>
<string name="one_hand_ui_card_title">Chuyển đổi danh sách trò chuyện:</string>
<string name="remote_ctrl_error_timeout">Thời gian chờ đã hết trong khi kết nối tới máy tính</string>
<string name="open_port_in_firewall_desc">Để cho phép một ứng dụng di động kết nối tới máy tính, mở cổng này trong tường lửa của bạn, nếu bạn có bật nó lên</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Để bảo vệ sự riêng tư của bạn, SimpleX sử dụng các ID riêng biệt cho mỗi liên hệ bạn có.</string>
@@ -2011,7 +2011,6 @@
<string name="v6_0_connection_servers_status_descr">连接和服务器状态。</string>
<string name="v6_0_delete_many_messages_descr">最多同时删除 20 条消息</string>
<string name="v6_0_private_routing_descr">它保护你的 IP 地址和连接。</string>
<string name="one_hand_ui_card_title">切换聊天列表:</string>
<string name="one_hand_ui_change_instruction">你可以在“外观”设置中更改它。</string>
<string name="network_options_save_and_reconnect">保存并重新连接</string>
<string name="network_option_tcp_connection">TCP 连接</string>