From fa044dd20448c204cced445d949767de941758b9 Mon Sep 17 00:00:00 2001 From: Winston Lowe Date: Tue, 12 May 2026 17:59:40 -0700 Subject: [PATCH] feat: Add dialog messages for companion connection and disconnection - Introduced new dialog messages for connecting to a companion and handling disconnection across multiple languages. - Updated localization files for French, Hungarian, Italian, Japanese, Korean, Bulgarian, German, English, Spanish, Dutch, Polish, Portuguese, Russian, Slovak, Slovenian, Swedish, Ukrainian, and Chinese. - Modified the contacts and map screens to utilize the new dialog messages. - Enhanced the disconnect confirmation dialog to show a message upon successful disconnection. - Updated app bar to conditionally display radio stats based on companion connection status. --- lib/l10n/app_bg.arb | 5 +- lib/l10n/app_de.arb | 5 +- lib/l10n/app_en.arb | 8 ++- lib/l10n/app_es.arb | 5 +- lib/l10n/app_fr.arb | 5 +- lib/l10n/app_hu.arb | 5 +- lib/l10n/app_it.arb | 5 +- lib/l10n/app_ja.arb | 5 +- lib/l10n/app_ko.arb | 3 + lib/l10n/app_localizations.dart | 24 +++++-- lib/l10n/app_localizations_bg.dart | 15 ++-- lib/l10n/app_localizations_de.dart | 15 ++-- lib/l10n/app_localizations_en.dart | 15 ++-- lib/l10n/app_localizations_es.dart | 15 ++-- lib/l10n/app_localizations_fr.dart | 15 ++-- lib/l10n/app_localizations_hu.dart | 14 ++-- lib/l10n/app_localizations_it.dart | 15 ++-- lib/l10n/app_localizations_ja.dart | 12 +++- lib/l10n/app_localizations_ko.dart | 12 +++- lib/l10n/app_localizations_nl.dart | 15 ++-- lib/l10n/app_localizations_pl.dart | 15 ++-- lib/l10n/app_localizations_pt.dart | 15 ++-- lib/l10n/app_localizations_ru.dart | 15 ++-- lib/l10n/app_localizations_sk.dart | 15 ++-- lib/l10n/app_localizations_sl.dart | 15 ++-- lib/l10n/app_localizations_sv.dart | 15 ++-- lib/l10n/app_localizations_uk.dart | 15 ++-- lib/l10n/app_localizations_zh.dart | 12 +++- lib/l10n/app_nl.arb | 5 +- lib/l10n/app_pl.arb | 5 +- lib/l10n/app_pt.arb | 5 +- lib/l10n/app_ru.arb | 5 +- lib/l10n/app_sk.arb | 5 +- lib/l10n/app_sl.arb | 5 +- lib/l10n/app_sv.arb | 5 +- lib/l10n/app_uk.arb | 5 +- lib/l10n/app_zh.arb | 5 +- lib/screens/contacts_screen.dart | 107 +++++++++++++++-------------- lib/screens/map_screen.dart | 28 +++++++- lib/utils/dialog_utils.dart | 15 ++++ lib/widgets/app_bar.dart | 3 +- 41 files changed, 379 insertions(+), 149 deletions(-) diff --git a/lib/l10n/app_bg.arb b/lib/l10n/app_bg.arb index ef855c3b..414db595 100644 --- a/lib/l10n/app_bg.arb +++ b/lib/l10n/app_bg.arb @@ -2312,5 +2312,8 @@ "chat_newMessages": "Нови съобщения", "settings_companionDebugLog": "Лог за отстраняване на грешки (за съпътстваща програма)", "repeater_chanUtil": "Използване на канала", - "contact_connectCompanion": "Свържете се с придружител, за да получите достъп до функциите на ретранслатора и сървъра за стаи." + "dialog_connectCompanion": "Свържете се с придружител, за да получите достъп до функциите на ретранслатора и сървъра за стаи.", + "dialog_disconnectedTitle": "Прекъснато", + "dialog_disconnectedMessage": "Свързването ви с вашия спътник е прекъснато.", + "contact_connectCompanion": "Свържете се с спътник, за да получите достъп до функциите на repeater и room server." } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index e6f501c9..dad00156 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -2340,5 +2340,8 @@ "settings_companionDebugLog": "Debug-Protokoll für die Begleitsoftware", "settings_companionDebugLogSubtitle": "BLE/TCP/USB-Befehle, Antworten und Rohdaten", "repeater_chanUtil": "Nutzung des Kanals", - "contact_connectCompanion": "Verbinden Sie sich mit einem Companion, um auf die Funktionen des Repeaters und des Raumservers zuzugreifen." + "dialog_connectCompanion": "Verbinden Sie sich mit einem Companion, um auf die Funktionen des Repeaters und des Raumservers zuzugreifen.", + "dialog_disconnectedTitle": "Getrennt", + "dialog_disconnectedMessage": "Du wurdest von deinem Begleiter getrennt.", + "contact_connectCompanion": "Mit einem Companion verbinden, um auf Repeater- und Raumserver-Funktionen zuzugreifen." } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index e58b760d..ec9fef11 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1062,6 +1062,9 @@ "time_allTime": "All Time", "dialog_disconnect": "Disconnect", "dialog_disconnectConfirm": "Are you sure you want to disconnect from this device?", + "dialog_disconnectedTitle": "Disconnected", + "dialog_disconnectedMessage": "You have been disconnected from your companion.", + "dialog_connectCompanion": "Connect to a companion to access repeater and room server features.", "login_repeaterLogin": "Repeater Login", "login_roomLogin": "Room Server Login", "login_password": "Password", @@ -2366,6 +2369,5 @@ "contact_typeRepeater": "Repeater", "contact_typeRoom": "Room", "contact_typeSensor": "Sensor", - "contact_typeUnknown": "Unknown", - "contact_connectCompanion": "Connect to a companion to access repeater and room server features." -} + "contact_typeUnknown": "Unknown" +} \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 490e6927..bbeb0a59 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -2340,5 +2340,8 @@ "settings_companionDebugLogSubtitle": "Comandos, respuestas y datos brutos para protocolos BLE/TCP/USB", "chat_markAsUnread": "Marcar como no leído", "repeater_chanUtil": "Utilización del canal", - "contact_connectCompanion": "Conéctate a un compañero para acceder a las funciones de repetidor y servidor de sala." + "dialog_connectCompanion": "Conéctate a un compañero para acceder a las funciones de repetidor y servidor de sala.", + "dialog_disconnectedTitle": "Desconectado", + "dialog_disconnectedMessage": "Te has desconectado de tu compañero.", + "contact_connectCompanion": "Conéctate a un compañero para acceder a las funciones del repetidor y del servidor de la sala." } diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 2fb2b6d2..155a73e1 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -2319,5 +2319,8 @@ "chat_newMessages": "Nouveaux messages", "settings_companionDebugLogSubtitle": "Commandes, réponses et données brutes pour les protocoles BLE/TCP/USB", "repeater_chanUtil": "Utilisation du canal", - "contact_connectCompanion": "Connectez-vous à un compagnon pour accéder aux fonctionnalités de répéteur et de serveur de salle." + "dialog_connectCompanion": "Connectez-vous à un compagnon pour accéder aux fonctionnalités de répéteur et de serveur de salle.", + "dialog_disconnectedTitle": "Déconnecté", + "dialog_disconnectedMessage": "Vous avez été déconnecté de votre compagnon.", + "contact_connectCompanion": "Connectez-vous à un compagnon pour accéder aux fonctionnalités du répéteur et du serveur de salle." } diff --git a/lib/l10n/app_hu.arb b/lib/l10n/app_hu.arb index 4da7df69..283fe9d8 100644 --- a/lib/l10n/app_hu.arb +++ b/lib/l10n/app_hu.arb @@ -2350,5 +2350,8 @@ "settings_companionDebugLog": "Párhuzamos hibakeresési napló", "settings_companionDebugLogSubtitle": "BLE/TCP/USB parancsok, válaszok és alapvető adatok", "repeater_chanUtil": "Csatorna-használat", - "contact_connectCompanion": "Csatlakozzon egy kísérőhöz a ismétlő és szobaszerver funkciók eléréséhez." + "dialog_connectCompanion": "Csatlakozzon egy kísérőhöz a ismétlő és szobaszerver funkciók eléréséhez.", + "dialog_disconnectedTitle": "Lejárat", + "dialog_disconnectedMessage": "Lehentetőtől megszakadtál.", + "contact_connectCompanion": "Csatlakozzon egy társhoz az ismpa- és szobaszerver funkciók eléréséhez." } diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 4eddedfc..bd515aa3 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -2312,5 +2312,8 @@ "chat_newMessages": "Nuovi messaggi", "chat_markAsUnread": "Segna come non letto", "repeater_chanUtil": "Utilizzo del canale", - "contact_connectCompanion": "Connettiti a un dispositivo companion per accedere alle funzionalità di ripetitore e server stanza." + "dialog_connectCompanion": "Connettiti a un dispositivo companion per accedere alle funzionalità di ripetitore e server stanza.", + "dialog_disconnectedTitle": "Disconnesso", + "dialog_disconnectedMessage": "Sei stato disconnesso dal tuo compagno.", + "contact_connectCompanion": "Connettiti a un companion per accedere alle funzioni del repeater e del server di stanza." } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index b47cd8e4..4cde81aa 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -2350,5 +2350,8 @@ "chat_newMessages": "新しいメッセージ", "chat_markAsUnread": "未読としてマークする", "repeater_chanUtil": "チャンネルの利用状況", - "contact_connectCompanion": "コネクトしてリピーターとルームサーバー機能にアクセス" + "dialog_connectCompanion": "コネクトしてリピーターとルームサーバー機能にアクセス", + "dialog_disconnectedTitle": "切断済み", + "dialog_disconnectedMessage": "コンパニオンとの接続が切れました。", + "contact_connectCompanion": "リピーターおよびルームサーバー機能にアクセスするには、コンパニオンに接続してください。" } diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index 6383ad6a..ae45fe6d 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -2350,5 +2350,8 @@ "settings_companionDebugLogSubtitle": "BLE/TCP/USB 명령어, 응답 및 원시 데이터", "chat_markAsUnread": "미리 읽지 않음으로 표시", "repeater_chanUtil": "채널 활용도", + "dialog_connectCompanion": "리피터 및 룸 서버 기능에 액세스하려면 컴패니언에 연결하세요.", + "dialog_disconnectedTitle": "연결 끊김", + "dialog_disconnectedMessage": "컴패니언과의 연결이 끊어졌습니다.", "contact_connectCompanion": "리피터 및 룸 서버 기능에 액세스하려면 컴패니언에 연결하세요." } diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index a38178da..7d72a0a9 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -3561,6 +3561,24 @@ abstract class AppLocalizations { /// **'Are you sure you want to disconnect from this device?'** String get dialog_disconnectConfirm; + /// No description provided for @dialog_disconnectedTitle. + /// + /// In en, this message translates to: + /// **'Disconnected'** + String get dialog_disconnectedTitle; + + /// No description provided for @dialog_disconnectedMessage. + /// + /// In en, this message translates to: + /// **'You have been disconnected from your companion.'** + String get dialog_disconnectedMessage; + + /// No description provided for @dialog_connectCompanion. + /// + /// In en, this message translates to: + /// **'Connect to a companion to access repeater and room server features.'** + String get dialog_connectCompanion; + /// No description provided for @login_repeaterLogin. /// /// In en, this message translates to: @@ -7335,12 +7353,6 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Unknown'** String get contact_typeUnknown; - - /// No description provided for @contact_connectCompanion. - /// - /// In en, this message translates to: - /// **'Connect to a companion to access repeater and room server features.'** - String get contact_connectCompanion; } class _AppLocalizationsDelegate diff --git a/lib/l10n/app_localizations_bg.dart b/lib/l10n/app_localizations_bg.dart index 1a754860..775bdc81 100644 --- a/lib/l10n/app_localizations_bg.dart +++ b/lib/l10n/app_localizations_bg.dart @@ -1979,6 +1979,17 @@ class AppLocalizationsBg extends AppLocalizations { String get dialog_disconnectConfirm => 'Сигурни ли сте, че искате да се откъснете от това устройство?'; + @override + String get dialog_disconnectedTitle => 'Прекъснато'; + + @override + String get dialog_disconnectedMessage => + 'Свързването ви с вашия спътник е прекъснато.'; + + @override + String get dialog_connectCompanion => + 'Свържете се с придружител, за да получите достъп до функциите на ретранслатора и сървъра за стаи.'; + @override String get login_repeaterLogin => 'Повторител Вход'; @@ -4288,8 +4299,4 @@ class AppLocalizationsBg extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Свържете се с придружител, за да получите достъп до функциите на ретранслатора и сървъра за стаи.'; } diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index a8bc48f1..80bacd43 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -1977,6 +1977,17 @@ class AppLocalizationsDe extends AppLocalizations { String get dialog_disconnectConfirm => 'Sind Sie sicher, dass Sie sich von diesem Gerät trennen möchten?'; + @override + String get dialog_disconnectedTitle => 'Getrennt'; + + @override + String get dialog_disconnectedMessage => + 'Du wurdest von deinem Begleiter getrennt.'; + + @override + String get dialog_connectCompanion => + 'Verbinden Sie sich mit einem Companion, um auf die Funktionen des Repeaters und des Raumservers zuzugreifen.'; + @override String get login_repeaterLogin => 'Beim Repeater anmelden'; @@ -4305,8 +4316,4 @@ class AppLocalizationsDe extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Verbinden Sie sich mit einem Companion, um auf die Funktionen des Repeaters und des Raumservers zuzugreifen.'; } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 007a9053..66ac378d 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -1938,6 +1938,17 @@ class AppLocalizationsEn extends AppLocalizations { String get dialog_disconnectConfirm => 'Are you sure you want to disconnect from this device?'; + @override + String get dialog_disconnectedTitle => 'Disconnected'; + + @override + String get dialog_disconnectedMessage => + 'You have been disconnected from your companion.'; + + @override + String get dialog_connectCompanion => + 'Connect to a companion to access repeater and room server features.'; + @override String get login_repeaterLogin => 'Repeater Login'; @@ -4210,8 +4221,4 @@ class AppLocalizationsEn extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Connect to a companion to access repeater and room server features.'; } diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 5be56b39..69a0d3c6 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -1974,6 +1974,17 @@ class AppLocalizationsEs extends AppLocalizations { String get dialog_disconnectConfirm => '¿Está seguro de que desea desconectarse de este dispositivo?'; + @override + String get dialog_disconnectedTitle => 'Desconectado'; + + @override + String get dialog_disconnectedMessage => + 'Te has desconectado de tu compañero.'; + + @override + String get dialog_connectCompanion => + 'Conéctate a un compañero para acceder a las funciones de repetidor y servidor de sala.'; + @override String get login_repeaterLogin => 'Iniciar sesión en el Repetidor'; @@ -4292,8 +4303,4 @@ class AppLocalizationsEs extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Conéctate a un compañero para acceder a las funciones de repetidor y servidor de sala.'; } diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 5fc63fe0..231ac4ae 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -1985,6 +1985,17 @@ class AppLocalizationsFr extends AppLocalizations { String get dialog_disconnectConfirm => 'Êtes-vous sûr de vouloir vous déconnecter de cet appareil ?'; + @override + String get dialog_disconnectedTitle => 'Déconnecté'; + + @override + String get dialog_disconnectedMessage => + 'Vous avez été déconnecté de votre compagnon.'; + + @override + String get dialog_connectCompanion => + 'Connectez-vous à un compagnon pour accéder aux fonctionnalités de répéteur et de serveur de salle.'; + @override String get login_repeaterLogin => 'Connexion au répéteur'; @@ -4321,8 +4332,4 @@ class AppLocalizationsFr extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Connectez-vous à un compagnon pour accéder aux fonctionnalités de répéteur et de serveur de salle.'; } diff --git a/lib/l10n/app_localizations_hu.dart b/lib/l10n/app_localizations_hu.dart index 4209c62c..6478c837 100644 --- a/lib/l10n/app_localizations_hu.dart +++ b/lib/l10n/app_localizations_hu.dart @@ -1986,6 +1986,16 @@ class AppLocalizationsHu extends AppLocalizations { String get dialog_disconnectConfirm => 'Biztosan szeretné kiírni ezt a készüléket?'; + @override + String get dialog_disconnectedTitle => 'Lejárat'; + + @override + String get dialog_disconnectedMessage => 'Lehentetőtől megszakadtál.'; + + @override + String get dialog_connectCompanion => + 'Csatlakozzon egy kísérőhöz a ismétlő és szobaszerver funkciók eléréséhez.'; + @override String get login_repeaterLogin => 'Ismételt bejelentkezés'; @@ -4309,8 +4319,4 @@ class AppLocalizationsHu extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Csatlakozzon egy kísérőhöz a ismétlő és szobaszerver funkciók eléréséhez.'; } diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index 5b7b5400..b428c56a 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -1976,6 +1976,17 @@ class AppLocalizationsIt extends AppLocalizations { String get dialog_disconnectConfirm => 'Sei sicuro di voler disconnetterti da questo dispositivo?'; + @override + String get dialog_disconnectedTitle => 'Disconnesso'; + + @override + String get dialog_disconnectedMessage => + 'Sei stato disconnesso dal tuo compagno.'; + + @override + String get dialog_connectCompanion => + 'Connettiti a un dispositivo companion per accedere alle funzionalità di ripetitore e server stanza.'; + @override String get login_repeaterLogin => 'Login Ripetitore'; @@ -4297,8 +4308,4 @@ class AppLocalizationsIt extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Connettiti a un dispositivo companion per accedere alle funzionalità di ripetitore e server stanza.'; } diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 3bbf527d..fbd24580 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -1894,6 +1894,15 @@ class AppLocalizationsJa extends AppLocalizations { @override String get dialog_disconnectConfirm => '本当にこのデバイスとの接続を解除したいですか?'; + @override + String get dialog_disconnectedTitle => '切断済み'; + + @override + String get dialog_disconnectedMessage => 'コンパニオンとの接続が切れました。'; + + @override + String get dialog_connectCompanion => 'コネクトしてリピーターとルームサーバー機能にアクセス'; + @override String get login_repeaterLogin => '再ログイン'; @@ -4063,7 +4072,4 @@ class AppLocalizationsJa extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => 'コネクトしてリピーターとルームサーバー機能にアクセス'; } diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index b4378a79..811f8dd1 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -1890,6 +1890,15 @@ class AppLocalizationsKo extends AppLocalizations { @override String get dialog_disconnectConfirm => '이 장치와의 연결을 해제하시겠습니까?'; + @override + String get dialog_disconnectedTitle => '연결 끊김'; + + @override + String get dialog_disconnectedMessage => '컴패니언과의 연결이 끊어졌습니다.'; + + @override + String get dialog_connectCompanion => '리피터 및 룸 서버 기능에 액세스하려면 컴패니언에 연결하세요.'; + @override String get login_repeaterLogin => '다시 로그인'; @@ -4064,7 +4073,4 @@ class AppLocalizationsKo extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => '리피터 및 룸 서버 기능에 액세스하려면 컴패니언에 연결하세요.'; } diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 604654c1..cca8c046 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -1963,6 +1963,17 @@ class AppLocalizationsNl extends AppLocalizations { String get dialog_disconnectConfirm => 'Ben je er zeker van dat je verbinding met dit apparaat wilt verbreken?'; + @override + String get dialog_disconnectedTitle => 'Verbroken'; + + @override + String get dialog_disconnectedMessage => + 'Je bent verbonden met je companion.'; + + @override + String get dialog_connectCompanion => + 'Maak verbinding met een companion om repeater- en kamerserverfuncties te gebruiken.'; + @override String get login_repeaterLogin => 'Inloggen Repeater'; @@ -4273,8 +4284,4 @@ class AppLocalizationsNl extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Maak verbinding met een companion om repeater- en kamerserverfuncties te gebruiken.'; } diff --git a/lib/l10n/app_localizations_pl.dart b/lib/l10n/app_localizations_pl.dart index 91e14365..18e124f7 100644 --- a/lib/l10n/app_localizations_pl.dart +++ b/lib/l10n/app_localizations_pl.dart @@ -1990,6 +1990,17 @@ class AppLocalizationsPl extends AppLocalizations { String get dialog_disconnectConfirm => 'Czy na pewno chcesz się odłączyć od tego urządzenia?'; + @override + String get dialog_disconnectedTitle => 'Rozłączono'; + + @override + String get dialog_disconnectedMessage => + 'Zostałeś rozłączony ze swoim towarzyszem.'; + + @override + String get dialog_connectCompanion => + 'Połącz się z towarzyszem, aby uzyskać dostęp do funkcji powtarzacza i serwera pokoi.'; + @override String get login_repeaterLogin => 'Logowanie do przekaźnika'; @@ -4309,8 +4320,4 @@ class AppLocalizationsPl extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Połącz się z towarzyszem, aby uzyskać dostęp do funkcji powtarzacza i serwera pokoi.'; } diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 2388caba..bcf93561 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -1973,6 +1973,17 @@ class AppLocalizationsPt extends AppLocalizations { String get dialog_disconnectConfirm => 'Tem certeza de que deseja desconectar deste dispositivo?'; + @override + String get dialog_disconnectedTitle => 'Desconectado'; + + @override + String get dialog_disconnectedMessage => + 'Você foi desconectado do seu companheiro.'; + + @override + String get dialog_connectCompanion => + 'Conecte-se a um dispositivo companion para acessar as funcionalidades de repetidor e servidor de salas.'; + @override String get login_repeaterLogin => 'Login ao Repetidor'; @@ -4285,8 +4296,4 @@ class AppLocalizationsPt extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Conecte-se a um dispositivo companion para acessar as funcionalidades de repetidor e servidor de salas.'; } diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 02baa06a..9823fd8f 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -1977,6 +1977,17 @@ class AppLocalizationsRu extends AppLocalizations { String get dialog_disconnectConfirm => 'Вы уверены, что хотите отключиться от этого устройства?'; + @override + String get dialog_disconnectedTitle => 'Отключено'; + + @override + String get dialog_disconnectedMessage => + 'Вы были отключены от вашего компаньона.'; + + @override + String get dialog_connectCompanion => + 'Подключитесь к компаньону, чтобы получить доступ к функциям ретранслятора и сервера комнат.'; + @override String get login_repeaterLogin => 'Вход в репитер'; @@ -4303,8 +4314,4 @@ class AppLocalizationsRu extends AppLocalizations { @override String get contact_typeUnknown => 'Неизвестно'; - - @override - String get contact_connectCompanion => - 'Подключитесь к компаньону, чтобы получить доступ к функциям ретранслятора и сервера комнат.'; } diff --git a/lib/l10n/app_localizations_sk.dart b/lib/l10n/app_localizations_sk.dart index a656eab1..6811b1a0 100644 --- a/lib/l10n/app_localizations_sk.dart +++ b/lib/l10n/app_localizations_sk.dart @@ -1963,6 +1963,17 @@ class AppLocalizationsSk extends AppLocalizations { String get dialog_disconnectConfirm => 'Ste si istý/á, že chcete odpojiť od tohto zariadenia?'; + @override + String get dialog_disconnectedTitle => 'Odpojené'; + + @override + String get dialog_disconnectedMessage => + 'Od vášho spoločníka ste boli odpojený.'; + + @override + String get dialog_connectCompanion => + 'Pripojte sa k sprievodcovi a získajte prístup k funkciám opakovača a serveru miestností.'; + @override String get login_repeaterLogin => 'Opätovné prihlásenie'; @@ -4269,8 +4280,4 @@ class AppLocalizationsSk extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Pripojte sa k sprievodcovi a získajte prístup k funkciám opakovača a serveru miestností.'; } diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index 08faa527..05db20c1 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -1961,6 +1961,17 @@ class AppLocalizationsSl extends AppLocalizations { String get dialog_disconnectConfirm => 'Ste prepričani, da želite se odklopiti s tega naprave?'; + @override + String get dialog_disconnectedTitle => 'Prekinjeno'; + + @override + String get dialog_disconnectedMessage => + 'Prekinjena povezava s vašim spre伴ovalcem.'; + + @override + String get dialog_connectCompanion => + 'Povežite se s spremljevalnikom za dostop do funkcij ponavljalnika in strežnika sob.'; + @override String get login_repeaterLogin => 'Ponovni vnos'; @@ -4267,8 +4278,4 @@ class AppLocalizationsSl extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Povežite se s spremljevalnikom za dostop do funkcij ponavljalnika in strežnika sob.'; } diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index 057a55c2..55cd563c 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -1950,6 +1950,17 @@ class AppLocalizationsSv extends AppLocalizations { String get dialog_disconnectConfirm => 'Är du säker på att du vill koppla från enheten?'; + @override + String get dialog_disconnectedTitle => 'Ansluten ej'; + + @override + String get dialog_disconnectedMessage => + 'Du har kopplats från din companion.'; + + @override + String get dialog_connectCompanion => + 'Anslut till en sällskapstjänst för att komma åt upprepning och rumsserverfunktioner.'; + @override String get login_repeaterLogin => 'Återuppta Inloggning'; @@ -4241,8 +4252,4 @@ class AppLocalizationsSv extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => - 'Anslut till en sällskapstjänst för att komma åt upprepning och rumsserverfunktioner.'; } diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index e930f28c..b8f03fa1 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -1972,6 +1972,17 @@ class AppLocalizationsUk extends AppLocalizations { String get dialog_disconnectConfirm => 'Ви впевнені, що хочете відключитись від цього пристрою?'; + @override + String get dialog_disconnectedTitle => 'Від’єднано'; + + @override + String get dialog_disconnectedMessage => + 'Вас від’єднано від вашого супутника.'; + + @override + String get dialog_connectCompanion => + 'Підключіться до супутнього пристрою, щоб отримати доступ до функцій ретранслятора та сервера кімнат.'; + @override String get login_repeaterLogin => 'Вхід у ретранслятор'; @@ -4304,8 +4315,4 @@ class AppLocalizationsUk extends AppLocalizations { @override String get contact_typeUnknown => 'Невідомо'; - - @override - String get contact_connectCompanion => - 'Підключіться до супутнього пристрою, щоб отримати доступ до функцій ретранслятора та сервера кімнат.'; } diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index ffe5f1ec..61a943be 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -1861,6 +1861,15 @@ class AppLocalizationsZh extends AppLocalizations { @override String get dialog_disconnectConfirm => '确定要断开与此设备的连接吗?'; + @override + String get dialog_disconnectedTitle => '已断开连接'; + + @override + String get dialog_disconnectedMessage => '你已与你的伙伴断开连接。'; + + @override + String get dialog_connectCompanion => '连接伴机以访问中继器和房间服务器功能。'; + @override String get login_repeaterLogin => '转发节点登录'; @@ -3938,7 +3947,4 @@ class AppLocalizationsZh extends AppLocalizations { @override String get contact_typeUnknown => 'Unknown'; - - @override - String get contact_connectCompanion => '连接伴机以访问中继器和房间服务器功能。'; } diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index e6865a44..518d7354 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -2312,5 +2312,8 @@ "chat_markAsUnread": "Markeer als ongelezen", "settings_companionDebugLogSubtitle": "BLE/TCP/USB commando's, antwoorden en ruwe data", "repeater_chanUtil": "Gebruik van het kanaal", - "contact_connectCompanion": "Maak verbinding met een companion om repeater- en kamerserverfuncties te gebruiken." + "dialog_connectCompanion": "Maak verbinding met een companion om repeater- en kamerserverfuncties te gebruiken.", + "dialog_disconnectedTitle": "Verbroken", + "dialog_disconnectedMessage": "Je bent verbonden met je companion.", + "contact_connectCompanion": "Maak verbinding met een companion om toegang te krijgen tot repeater- en roomserverfuncties." } diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index ce0421d9..bb94f481 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -2350,5 +2350,8 @@ "chat_markAsUnread": "Oznacz jako nieprzeczytane", "settings_companionDebugLog": "Log debugowania (dla pomocy w rozwiązywaniu problemów)", "repeater_chanUtil": "Wykorzystanie kanału", - "contact_connectCompanion": "Połącz się z towarzyszem, aby uzyskać dostęp do funkcji powtarzacza i serwera pokoi." + "dialog_connectCompanion": "Połącz się z towarzyszem, aby uzyskać dostęp do funkcji powtarzacza i serwera pokoi.", + "dialog_disconnectedTitle": "Rozłączono", + "dialog_disconnectedMessage": "Zostałeś rozłączony ze swoim towarzyszem.", + "contact_connectCompanion": "Połącz się z towarzyszem, aby uzyskać dostęp do funkcji repeatera i serwera pokojowego." } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index b4cfcbe8..4ad1b480 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -2312,5 +2312,8 @@ "chat_markAsUnread": "Marcar como não lido", "chat_newMessages": "Novas mensagens", "repeater_chanUtil": "Utilização do canal", - "contact_connectCompanion": "Conecte-se a um dispositivo companion para acessar as funcionalidades de repetidor e servidor de salas." + "dialog_connectCompanion": "Conecte-se a um dispositivo companion para acessar as funcionalidades de repetidor e servidor de salas.", + "dialog_disconnectedTitle": "Desconectado", + "dialog_disconnectedMessage": "Você foi desconectado do seu companheiro.", + "contact_connectCompanion": "Conecte-se a um companheiro para acessar recursos de repetidor e servidor de sala." } diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index e7ef34bf..0c656409 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -1615,5 +1615,8 @@ "settings_companionDebugLogSubtitle": "Команды, ответы и необработанные данные, используемые для протоколов BLE, TCP и USB.", "repeater_chanUtil": "Использование канала", "settings_companionDebugLog": "Журнал отладки (для сопутствующего приложения)", - "contact_connectCompanion": "Подключитесь к компаньону, чтобы получить доступ к функциям ретранслятора и сервера комнат." + "dialog_connectCompanion": "Подключитесь к компаньону, чтобы получить доступ к функциям ретранслятора и сервера комнат.", + "dialog_disconnectedTitle": "Отключено", + "dialog_disconnectedMessage": "Вы были отключены от вашего компаньона.", + "contact_connectCompanion": "Подключитесь к компаньону, чтобы получить доступ к функциям репитера и серверу комнаты." } diff --git a/lib/l10n/app_sk.arb b/lib/l10n/app_sk.arb index 8f898f33..573ae22a 100644 --- a/lib/l10n/app_sk.arb +++ b/lib/l10n/app_sk.arb @@ -2312,5 +2312,8 @@ "settings_companionDebugLog": "Logovanie pre ladenie (sprievodný log)", "chat_newMessages": "Nové správy", "repeater_chanUtil": "Využitie kanálu", - "contact_connectCompanion": "Pripojte sa k sprievodcovi a získajte prístup k funkciám opakovača a serveru miestností." + "dialog_connectCompanion": "Pripojte sa k sprievodcovi a získajte prístup k funkciám opakovača a serveru miestností.", + "dialog_disconnectedTitle": "Odpojené", + "dialog_disconnectedMessage": "Od vášho spoločníka ste boli odpojený.", + "contact_connectCompanion": "Pripojte sa k spoločníkovi pre prístup k funkciám opakovača a miestneho servera." } diff --git a/lib/l10n/app_sl.arb b/lib/l10n/app_sl.arb index ef1477b7..9c542c10 100644 --- a/lib/l10n/app_sl.arb +++ b/lib/l10n/app_sl.arb @@ -2312,5 +2312,8 @@ "chat_newMessages": "Nove novice", "settings_companionDebugLogSubtitle": "Navodila, odgovori in surova podatka za BLE/TCP/USB.", "repeater_chanUtil": "Uporaba kanala", - "contact_connectCompanion": "Povežite se s spremljevalnikom za dostop do funkcij ponavljalnika in strežnika sob." + "dialog_connectCompanion": "Povežite se s spremljevalnikom za dostop do funkcij ponavljalnika in strežnika sob.", + "dialog_disconnectedTitle": "Prekinjeno", + "dialog_disconnectedMessage": "Prekinjena povezava s vašim spre伴ovalcem.", + "contact_connectCompanion": "Povežite se s ponсоbnikom za dostop do funkcij pon 반복nika in strežnika prostorov." } diff --git a/lib/l10n/app_sv.arb b/lib/l10n/app_sv.arb index 4364b489..7cd9fb0c 100644 --- a/lib/l10n/app_sv.arb +++ b/lib/l10n/app_sv.arb @@ -2312,5 +2312,8 @@ "chat_newMessages": "Nya meddelanden", "settings_companionDebugLogSubtitle": "BLE/TCP/USB-kommandon, svar och rådata", "repeater_chanUtil": "Användning av kanal", - "contact_connectCompanion": "Anslut till en sällskapstjänst för att komma åt upprepning och rumsserverfunktioner." + "dialog_connectCompanion": "Anslut till en sällskapstjänst för att komma åt upprepning och rumsserverfunktioner.", + "dialog_disconnectedTitle": "Ansluten ej", + "dialog_disconnectedMessage": "Du har kopplats från din companion.", + "contact_connectCompanion": "Anslut till en companion för att få tillgång till repeater- och rumsserverfunktioner." } diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 15c96e5a..8255287c 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -2292,5 +2292,8 @@ "chat_newMessages": "Нові повідомлення", "chat_markAsUnread": "Позначити як непрочитане", "repeater_chanUtil": "Використання каналу", - "contact_connectCompanion": "Підключіться до супутнього пристрою, щоб отримати доступ до функцій ретранслятора та сервера кімнат." + "dialog_connectCompanion": "Підключіться до супутнього пристрою, щоб отримати доступ до функцій ретранслятора та сервера кімнат.", + "dialog_disconnectedTitle": "Від’єднано", + "dialog_disconnectedMessage": "Вас від’єднано від вашого супутника.", + "contact_connectCompanion": "Підключіться до супутника, щоб отримати доступ до функцій репітера та серверів кімнат." } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 0750b2ba..f6a02af9 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -2317,5 +2317,8 @@ "chat_newMessages": "新的消息", "settings_companionDebugLogSubtitle": "BLE/TCP/USB 协议、响应和原始数据", "repeater_chanUtil": "频道利用率", - "contact_connectCompanion": "连接伴机以访问中继器和房间服务器功能。" + "dialog_connectCompanion": "连接伴机以访问中继器和房间服务器功能。", + "dialog_disconnectedTitle": "已断开连接", + "dialog_disconnectedMessage": "你已与你的伙伴断开连接。", + "contact_connectCompanion": "连接至伴侣设备以访问中继器和房间服务器功能。" } diff --git a/lib/screens/contacts_screen.dart b/lib/screens/contacts_screen.dart index 67c3b38f..0c09326c 100644 --- a/lib/screens/contacts_screen.dart +++ b/lib/screens/contacts_screen.dart @@ -313,63 +313,64 @@ class _ContactsScreenState extends State { title: AppBarTitle(context.l10n.contacts_title), automaticallyImplyLeading: false, actions: [ - PopupMenuButton( - itemBuilder: (context) => [ - PopupMenuItem( - child: Row( - children: [ - const Icon(Icons.connect_without_contact), - const SizedBox(width: 8), - Text(context.l10n.contacts_zeroHopAdvert), - ], - ), - onTap: () => { - connector.sendSelfAdvert(flood: false), - showDismissibleSnackBar( - context, - content: Text(context.l10n.settings_advertisementSent), + if (connector.isConnected) + PopupMenuButton( + itemBuilder: (context) => [ + PopupMenuItem( + child: Row( + children: [ + const Icon(Icons.connect_without_contact), + const SizedBox(width: 8), + Text(context.l10n.contacts_zeroHopAdvert), + ], ), - }, - ), - PopupMenuItem( - child: Row( - children: [ - const Icon(Icons.cell_tower), - const SizedBox(width: 8), - Text(context.l10n.contacts_floodAdvert), - ], + onTap: () => { + connector.sendSelfAdvert(flood: false), + showDismissibleSnackBar( + context, + content: Text(context.l10n.settings_advertisementSent), + ), + }, ), - onTap: () => { - connector.sendSelfAdvert(flood: true), - showDismissibleSnackBar( - context, - content: Text(context.l10n.settings_advertisementSent), + PopupMenuItem( + child: Row( + children: [ + const Icon(Icons.cell_tower), + const SizedBox(width: 8), + Text(context.l10n.contacts_floodAdvert), + ], ), - }, - ), - PopupMenuItem( - child: Row( - children: [ - const Icon(Icons.copy), - const SizedBox(width: 8), - Text(context.l10n.contacts_copyAdvertToClipboard), - ], + onTap: () => { + connector.sendSelfAdvert(flood: true), + showDismissibleSnackBar( + context, + content: Text(context.l10n.settings_advertisementSent), + ), + }, ), - onTap: () => _contactExport(Uint8List.fromList([])), - ), - PopupMenuItem( - child: Row( - children: [ - const Icon(Icons.paste), - const SizedBox(width: 8), - Text(context.l10n.contacts_addContactFromClipboard), - ], + PopupMenuItem( + child: Row( + children: [ + const Icon(Icons.copy), + const SizedBox(width: 8), + Text(context.l10n.contacts_copyAdvertToClipboard), + ], + ), + onTap: () => _contactExport(Uint8List.fromList([])), ), - onTap: () => _contactImport(), - ), - ], - icon: const Icon(Icons.connect_without_contact), - ), + PopupMenuItem( + child: Row( + children: [ + const Icon(Icons.paste), + const SizedBox(width: 8), + Text(context.l10n.contacts_addContactFromClipboard), + ], + ), + onTap: () => _contactImport(), + ), + ], + icon: const Icon(Icons.connect_without_contact), + ), PopupMenuButton( itemBuilder: (context) => [ if (connector.isConnected) @@ -1048,7 +1049,7 @@ class _ContactsScreenState extends State { context: context, builder: (dialogContext) => AlertDialog( title: Text(context.l10n.scanner_notConnected), - content: Text(context.l10n.contact_connectCompanion), + content: Text(context.l10n.dialog_connectCompanion), actions: [ TextButton( onPressed: () => Navigator.pop(dialogContext), diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart index 1a4ebcc4..ed1f40c2 100644 --- a/lib/screens/map_screen.dart +++ b/lib/screens/map_screen.dart @@ -416,7 +416,7 @@ class _MapScreenState extends State { centerTitle: true, automaticallyImplyLeading: false, actions: [ - if (!_isBuildingPathTrace) + if (!_isBuildingPathTrace && connector.isConnected) IconButton( icon: const Icon(Icons.radar), onPressed: () => _startPath( @@ -1500,7 +1500,28 @@ class _MapScreenState extends State { ); } + void _showCompanionRequiredDialog(BuildContext context) { + showDialog( + context: context, + builder: (dialogContext) => AlertDialog( + title: Text(context.l10n.scanner_notConnected), + content: Text(context.l10n.dialog_connectCompanion), + actions: [ + TextButton( + onPressed: () => Navigator.pop(dialogContext), + child: Text(context.l10n.common_ok), + ), + ], + ), + ); + } + void _showRepeaterLogin(BuildContext context, Contact repeater) { + final connector = context.read(); + if (!connector.isConnected) { + _showCompanionRequiredDialog(context); + return; + } showDialog( context: context, builder: (context) => RepeaterLoginDialog( @@ -1523,6 +1544,11 @@ class _MapScreenState extends State { } void _showRoomLogin(BuildContext context, Contact room) { + final connector = context.read(); + if (!connector.isConnected) { + _showCompanionRequiredDialog(context); + return; + } showDialog( context: context, builder: (context) => RoomLoginDialog( diff --git a/lib/utils/dialog_utils.dart b/lib/utils/dialog_utils.dart index 8a6ad9bb..3c0e3d5d 100644 --- a/lib/utils/dialog_utils.dart +++ b/lib/utils/dialog_utils.dart @@ -31,6 +31,21 @@ Future showDisconnectDialog( if (confirmed == true) { appLogger.info('Disconnect confirmed from popup', tag: 'Connection'); await connector.disconnect(); + if (context.mounted) { + await showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text(context.l10n.dialog_disconnectedTitle), + content: Text(context.l10n.dialog_disconnectedMessage), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(context.l10n.common_ok), + ), + ], + ), + ); + } return true; } return false; diff --git a/lib/widgets/app_bar.dart b/lib/widgets/app_bar.dart index 3062b598..1c8a17f1 100644 --- a/lib/widgets/app_bar.dart +++ b/lib/widgets/app_bar.dart @@ -69,7 +69,8 @@ class AppBarTitle extends StatelessWidget { if (showBattery) BatteryIndicator(connector: connector), if (showSnr) SNRIndicator(connector: connector), if (connector.supportsCompanionRadioStats) - const RadioStatsIconButton(compact: true), + if (connector.isConnected) + const RadioStatsIconButton(compact: true), ], ), trailing ?? const SizedBox.shrink(),