M Jenkinsfile => Jenkinsfile +11 -2
@@ 30,6 30,7 @@ pipeline {
JOBS=15
PATH="/usr/local/cmake-3.21.3-linux-x86_64/bin:/usr/local/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH"
}
+
stages {
stage('Check for previous running builds') {
steps {
@@ 142,7 143,11 @@ pipeline {
XDG_CACHE_HOME="/clang-cache"
}
-
+ when {
+ expression {
+ return !(env.CHANGE_TARGET ==~ /release\/[0-9]+\.[0-9]+\.[0-9]+-bell/)
+ }
+ }
steps {
echo "Check if branch needs rebasing"
sh '''#!/bin/bash -e
@@ 226,7 231,11 @@ pipeline {
CCACHE_DIR="/ccache/Linux"
XDG_CACHE_HOME="/clang-cache"
}
-
+ when {
+ expression {
+ return !(env.CHANGE_TARGET ==~ /release\/[0-9]+\.[0-9]+\.[0-9]+-pure/)
+ }
+ }
steps {
echo "Check if branch needs rebasing"
sh '''#!/bin/bash -e
M Target_RT1051.cmake => Target_RT1051.cmake +6 -0
@@ 57,6 57,12 @@ add_compile_options(
$<$<COMPILE_LANGUAGE:CXX>:-Wno-literal-suffix>
)
+set(TARGET_SOURCES
+
+ ${CMAKE_CURRENT_LIST_DIR}/module-os/board/rt1051/_exit.c
+ CACHE INTERNAL ""
+)
+
# where is the target environment
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PATH}/${TOOLCHAIN_PREFIX})
# search for programs in the build host directories
M image/assets/lang/Deutsch.json => image/assets/lang/Deutsch.json +9 -8
@@ 28,6 28,7 @@
"common_stop": "STOPPEN",
"common_resume": "FORTFAHREN",
"common_pause": "PAUSIEREN",
+ "common_play": "SPIEL",
"common_retry": "NOCHMAL VERSUCHEN",
"common_abort": "ABBRECHEN",
"common_connect": "VERBINDEN",
@@ 183,7 184,6 @@
"app_calllog_delete_call_confirmation": "Diesen Anruf aus der Liste löschen?",
"app_calllog_no_calls": "Noch keine Anrufe.",
"app_phonebook_no_contacts": "Noch keine Kontakte.<p>Drücken Sie <b>Pfeil nach links</b>, um neue hinzuzufügen.</p>",
- "tethering_enable_question": "Sie sind mit dem Computer verbunden.<br />Tethering aktivieren?<br /><text color='5'>(einige Funktionen können deaktiviert sein)</text>",
"app_music_player_artists": "<text color='9'>Künstler</text>",
"app_music_player_albums": "<text color='9'>Alben</text>",
"app_music_player_playlists": "<text color='9'>Wiedergabelisten</text>",
@@ 191,7 191,7 @@
"app_music_player_uknown_artist": "Unbekannter Künstler",
"app_music_player_music_library_window_name": "Musikbibliothek",
"app_music_player_empty_track_notification": "<text color='5'>Bitte wählen Sie einen Song aus der Bibliothek</text>",
- "app_music_player_start_window_notification": "<text color='5'>Drücken Sie den <b>Pfeil nach unten</b>, um<br></br>einen Song aus der Bibliothek auszuwählen</text>",
+ "app_music_player_start_window_notification": "<text color='5'>Drücken Sie <b>nach unten</b>, um<br></br>einen Song auszuwählen</text>",
"app_calllog_no_calls": "Noch keine Anrufe.",
"app_desktop_unlock": "ENTSPERREN",
"app_desktop_menu": "MENÜ",
@@ 330,7 330,7 @@
"app_messages_thread_not_sent": "Nicht gesendet: ",
"app_messages_thread_you": "Sie: ",
"app_onboarding_title": "Einführung",
- "app_onboarding_start_configuration": "<text font='gt_pressura' weight='light' size='46'><p>Hallo!</p></text><br></br><text font='gt_pressura' weight='regular' size='27'>Konfigurieren wir gemeinsam Ihr Mudita Pure.</text>",
+ "app_onboarding_start_configuration": "<text font='gt_pressura' weight='light' size='46'><p>Hallo!</p></text><br></br><text font='gt_pressura' weight='regular' size='27'>Konfigurieren wir gemeinsam Ihr <br></br> Mudita Pure.</text>",
"app_onboarding_eula_license": "Lizenzvereinbarung (EULA)",
"app_onboarding_select_sim": "Aktive SIM auswählen",
"app_onboarding_select_sim_description": "<text>Es kann immer nur eine SIM-Karte aktiv sein.<br></br>Sie können diese jetzt auswählen und bei Bedarf<br></br>in den Einstellungen wechseln.</text>",
@@ 424,7 424,7 @@
"app_settings_security": "Sicherheit",
"app_settings_language": "Sprache",
"app_settings_factory_reset": "Auf Werkseinstellung zurücksetzen",
- "app_settings_display_factory_reset_confirmation": "Das Telefon muss ausgeschaltet werden, \num es auf die Werkseinstellungen zurückzusetzen.\n Jetzt neu starten?",
+ "app_settings_display_factory_reset_confirmation": "Sie müssen Ihren Pure neu starten \num den Werksreset abzuschließen.\n Handy jetzt ausschalten?",
"app_settings_about_your_pure": "Über Ihr Pure",
"app_settings_technical_information": "Technische Informationen",
"app_settings_tech_info_model": "Modell",
@@ 443,6 443,7 @@
"app_settings_sar": "SAR",
"app_settings_about": "Über Mudita Pure",
"app_settings_title_languages": "Sprachauswahl",
+ "app_settings_network_sim_cards": "SIM-Karten",
"app_settings_network_active_card": "Aktive Karte",
"app_settings_network_operator_auto_select": "Automatische Auswahl",
"app_settings_network_all_operators": "Alle Bediener",
@@ 506,11 507,11 @@
"app_settings_notifications_when_locked": "Benachrichtigen bei Sperre",
"app_settings_calls_from_favorites": "Anrufe von Favoriten",
"app_settings_allow": "Erlauben",
- "app_settings_no_network_connection_flight_mode": "Keine Netzwerkverbindung (Flugmodus)",
+ "app_settings_no_network_connection_flight_mode": "Flugmodus",
"app_settings_messages_only": "Nur Nachrichten",
- "app_settings_info_dnd": "In diesem Modus kann Pure alle Benachrichtigungen stumm empfangen. Sie können Benachrichtigungen zulassen, wenn Ihre Favoriten-Kontakte Sie anrufen.",
- "app_settings_info_offline_flight_mode": "In diesem Modus wird Ihr Pure vollständig vom Netz getrennt. Sie können ihn sicher als Flugmodus verwenden. Anrufe, Nachrichten und Tethering sind nicht verfügbar.",
- "app_settings_info_offline_messages_only": "Das Pure meldet sich im Netzwerk an, um Nachrichten zu senden und herunterzuladen, je nach Verbindungshäufigkeit. Anrufe und Tethering sind nicht verfügbar.",
+ "app_settings_info_dnd": "Alle Benachrichtigungen stumm erhalten. Sie können vollständige Benachrichtigungen von bevorzugten Kontakten zulassen.",
+ "app_settings_info_offline_flight_mode": "Vollständig getrennt. Anrufe, Nachrichten und Tethering sind nicht verfügbar.",
+ "app_settings_info_offline_messages_only": "Nachrichten basierend auf Verbindungsintervallen senden und herunterladen. Keine Anrufe oder Tethering.",
"app_phonebook_title_main": "Kontakte",
"common_search_uc": "Suchen",
"common_search_results": "Suchergebnisse",
M image/assets/lang/English.json => image/assets/lang/English.json +5 -6
@@ 26,7 26,6 @@
"common_uncheck": "UNCHECK",
"common_emoji": "EMOJI",
"common_special_characters": "SPECIAL",
- "common_play": "PLAY",
"common_start": "START",
"common_stop": "STOP",
"common_resume": "RESUME",
@@ 393,7 392,7 @@
"app_settings_security": "Security",
"app_settings_language": "Language",
"app_settings_factory_reset": "Factory reset",
- "app_settings_display_factory_reset_confirmation": "Your phone needs to turn off \nto perform factory reset.\n Restart now?",
+ "app_settings_display_factory_reset_confirmation": "You need to restart your Pure \nto finalize factory reset.\n Turn off the phone now?",
"app_settings_about_your_pure": "About your Pure",
"app_settings_technical_information": "Technical Information",
"app_settings_tech_info_model": "Model",
@@ 482,11 481,11 @@
"app_settings_notifications_when_locked": "Notifications when locked",
"app_settings_calls_from_favorites": "Calls from favorites",
"app_settings_allow": "Allow",
- "app_settings_no_network_connection_flight_mode": "No network connection (flight mode)",
+ "app_settings_no_network_connection_flight_mode": "Flight mode",
"app_settings_messages_only": "Messages only",
- "app_settings_info_dnd": "This mode enables Pure to silently receive all notifications. You can allow notifications when favorite contacts call you.",
- "app_settings_info_offline_flight_mode": "This mode causes your Pure to be fully disconnected. You can safely use it as flight mode. Calls, messages and tethering are unavailable.",
- "app_settings_info_offline_messages_only": "Pure will log into the network to send and download messages based on connection frequency. Calls and tethering are unavailable.",
+ "app_settings_info_dnd": "Silently receive all notifications. You can allow full notifications from favorite contacts.",
+ "app_settings_info_offline_flight_mode": "Fully disconnected. Calls, messages and tethering are unavailable.",
+ "app_settings_info_offline_messages_only": "Send and download messages based on connection intervals. No calls nor tethering.",
"app_phonebook_title_main": "Contacts",
"common_search_uc": "Search",
"common_search_results": "Search results",
M image/assets/lang/Espanol.json => image/assets/lang/Espanol.json +8 -7
@@ 28,6 28,7 @@
"common_stop": "DETENER",
"common_resume": "REANUDAR",
"common_pause": "PAUSA",
+ "common_play": "REPRODUCIR",
"common_retry": "REINTENTAR",
"common_abort": "ANULAR",
"common_connect": "CONECTAR",
@@ 183,7 184,6 @@
"app_calllog_delete_call_confirmation": "¿Eliminar esta llamada de la lista?",
"app_calllog_no_calls": "Aún no hay llamadas.",
"app_phonebook_no_contacts": "Aún no hay contactos. <p> Presiona la <b> flecha izquierda </b> para agregar nuevos. </p>",
- "tethering_enable_question": "Estás conectado a la computadora. <br /> ¿Activar el tethering? <br /> <text color = '5'> (algunas funciones pueden estar deshabilitadas) </text>",
"app_music_player_artists": "<text color = '9'> Artistas </text>",
"app_music_player_albums": "<text color = '9'> Álbumes </text>",
"app_music_player_playlists": "<text color = '9'> Listas de reproducción </text>",
@@ 191,7 191,7 @@
"app_music_player_uknown_artist": "Artista desconocido",
"app_music_player_music_library_window_name": "Biblioteca de música",
"app_music_player_empty_track_notification": "<text color = '5'> Elige una canción de la biblioteca </text>",
- "app_music_player_start_window_notification": "<text color = '5'> Presiona la <b> flecha hacia abajo </b> para elegir <br> </br> una canción de la biblioteca </text>",
+ "app_music_player_start_window_notification": "<text color = '5'> Presiona la <b>abajo</b> para elegir <br> </br> una canción </text>",
"app_desktop_unlock": "DESBLOQUEAR",
"app_desktop_menu": "MENÚ",
"app_desktop_emergency": "SOS",
@@ 423,7 423,7 @@
"app_settings_security": "Seguridad",
"app_settings_language": "Idioma",
"app_settings_factory_reset": "Configuración de fábrica",
- "app_settings_display_factory_reset_confirmation": "Debes apagar el teléfono \npara restablecer la configuración de fábrica.\n ¿Reiniciar ahora?",
+ "app_settings_display_factory_reset_confirmation": "Necesita reiniciar su Pure \npara finalizar el reinicio de fábrica.\n ¿Apagar el teléfono ahora?",
"app_settings_about_your_pure": "Mi dispositivo Pure",
"app_settings_technical_information": "Información técnica",
"app_settings_tech_info_model": "Modelo",
@@ 442,6 442,7 @@
"app_settings_sar": "TAE",
"app_settings_about": "Sobre Mudita Pure",
"app_settings_title_languages": "Selección de idioma",
+ "app_settings_network_sim_cards": "Tarjetas SIM",
"app_settings_network_active_card": "Tarjeta activa",
"app_settings_network_operator_auto_select": "Selección automática de operador",
"app_settings_network_all_operators": "Todos los operadores",
@@ 506,11 507,11 @@
"app_settings_notifications_when_locked": "Notificaciones cuando esté bloqueado",
"app_settings_calls_from_favorites": "Llamadas de favoritos",
"app_settings_allow": "Permitir",
- "app_settings_no_network_connection_flight_mode": "Sin conexión de red (modo avión)",
+ "app_settings_no_network_connection_flight_mode": "Modo avión",
"app_settings_messages_only": "Solo mensajes",
- "app_settings_info_dnd": "Este modo permite que Pure reciba todas las notificaciones en silencio. Puedes permitir las notificaciones al recibir llamadas de tus contactos favoritos.",
- "app_settings_info_offline_flight_mode": "Este modo hace que tu Pure se desconecte por completo. Puedes usarlo de forma segura en modo avión. Las llamadas, los mensajes y el anclaje de red no están disponibles.",
- "app_settings_info_offline_messages_only": "Pure se conectará a la red para enviar y descargar mensajes en función de la frecuencia de conexión. Las llamadas y el anclaje de red no están disponibles.",
+ "app_settings_info_dnd": "Recibe todas las notificaciones en silencio. Puedes permitir notificaciones completas de tus contactos favoritos.",
+ "app_settings_info_offline_flight_mode": "Completamente desconectado. Las llamadas, los mensajes y la conexión no están disponibles.",
+ "app_settings_info_offline_messages_only": "Envía y descarga mensajes según los intervalos de conexión. Sin llamadas ni conexión.",
"app_phonebook_title_main": "Contactos",
"common_search_uc": "Buscar",
"common_search_results": "Buscar resultados",
M image/assets/lang/Francais.json => image/assets/lang/Francais.json +9 -7
@@ 28,6 28,7 @@
"common_stop": "ARRÊTER",
"common_resume": "REPRENDRE",
"common_pause": "ARRÊTER",
+ "common_play": "JOUER",
"common_retry": "ESSAYER DE NOUVEAU",
"common_abort": "ANNULER",
"common_connect": "CONNECTER",
@@ 152,7 153,6 @@
"app_calllog_delete_call_confirmation": "Supprimer cet appel de la liste?",
"app_calllog_no_calls": "Pas encore d'appels.",
"app_phonebook_no_contacts": "Aucun contact pour le moment.<p>Appuyez sur la <b>flèche gauche</b> pour en ajouter un nouveau.</p>",
- "tethering_enable_question": "Vous êtes connecté à l'ordinateur.<br />Activer le partage de connexion ?<br /><text color='5'>(certaines fonctions peuvent être désactivées)</text>",
"app_music_player_artists": "<text color='9'>Artistes</text>",
"app_music_player_albums": "<text color='9'>Albums</text>",
"app_music_player_playlists": "<text color='9'>Listes de lecture</text>",
@@ 160,7 160,7 @@
"app_music_player_uknown_artist": "Artiste inconnu",
"app_music_player_music_library_window_name": "Bibliothèque musicale",
"app_music_player_empty_track_notification": "<text color='5'>Veuillez choisir une chanson dans la bibliothèque</text>",
- "app_music_player_start_window_notification": "<text color='5'>Appuyez sur la <b>flèche vers le bas</b> pour choisir<br></br> une chanson de la bibliothèque</text>",
+ "app_music_player_start_window_notification": "<text color='5'>Appuyez sur <b>le bas</b> pour choisir<br></br> une chanson</text>",
"app_desktop_unlock": "DÉVÉROUILLER",
"app_desktop_menu": "MENU",
"app_desktop_emergency": "URGENCE",
@@ 391,7 391,7 @@
"app_settings_security": "Sécurité",
"app_settings_language": "Langues",
"app_settings_factory_reset": "Retour aux paramètres d'usine",
- "app_settings_display_factory_reset_confirmation": "Votre téléphone doit s'éteindre\npour effectuer la réinitialisation d'usine.\nRedémarrer maintenant ?",
+ "app_settings_display_factory_reset_confirmation": "Il faut redémarrer votre Pure\npour finaliser la réinitialisation d'usine.\nÉteindre le téléphone maintenant?",
"app_settings_about_your_pure": "À propos de votre Pure",
"app_settings_technical_information": "Informations techniques",
"app_settings_tech_info_model": "Modèle",
@@ 410,6 410,7 @@
"app_settings_sar": "SAR",
"app_settings_about": "À propos de Mudita Pure",
"app_settings_title_languages": "Sélection de langue",
+ "app_settings_network_sim_cards": "Cartes SIM",
"app_settings_network_active_card": "Activer la carte",
"app_settings_network_operator_auto_select": "Operator auto-select",
"app_settings_network_all_operators": "All operators",
@@ 473,11 474,12 @@
"app_settings_notifications_when_locked": "Notifications lorsque verrouillé",
"app_settings_calls_from_favorites": "Appels des favoris",
"app_settings_allow": "Permettre",
- "app_settings_no_network_connection_flight_mode": "Pas de connexion réseau (mode avion)",
+ "app_settings_no_network_connection_flight_mode": "Mode avion",
"app_settings_messages_only": "Messages seulement",
- "app_settings_info_dnd": "Ce mode permet à Pure de recevoir silencieusement toutes les notifications. Vous pouvez autoriser les notifications lorsque vos contacts favoris vous appellent.",
- "app_settings_info_offline_flight_mode": "Ce mode entraîne la déconnexion complète de votre Pure. Vous pouvez l'utiliser en toute sécurité comme mode avion. Les appels, les messages et le partage de connexion ne sont pas disponibles.",
- "app_settings_info_offline_messages_only": "Pure se connectera au réseau pour envoyer et télécharger des messages en fonction de la fréquence de connexion. Les appels et le partage de connexion ne sont pas disponibles.", "app_phonebook_title_main": "Contacts",
+ "app_settings_info_dnd": "Recevez toutes les notifications en silence. Vous pouvez autoriser les notifications complètes de vos contacts favoris.",
+ "app_settings_info_offline_flight_mode": "Complètement déconnecté. Les appels, les messages et le partage de connexion ne sont pas disponibles.",
+ "app_settings_info_offline_messages_only": "Envoyer et télécharger des messages en fonction des intervalles de connexion. Pas d'appels ni de partage de connexion.",
+ "app_phonebook_title_main": "Contacts",
"common_search_uc": "Rechercher",
"common_search_results": "Résultats de recherche",
"app_phonebook_search_no_results": "Aucun contact trouvé.",
M image/assets/lang/Polski.json => image/assets/lang/Polski.json +16 -16
@@ 28,7 28,7 @@
"common_stop": "STOP",
"common_resume": "WZNÓW",
"common_pause": "PAUZA",
- "common_play_pause": "ODTWÓRZ/PAUZUJ",
+ "common_play": "GRAJ",
"common_retry": "SPRÓBUJ PONOWNIE",
"common_abort": "ZREZYGNUJ",
"common_connect": "POŁĄCZ SIĘ",
@@ 176,16 176,15 @@
"app_calllog_no_calls": "<text align='center' color='5'>Brak połączeń.</text>",
"app_calllog_type": "Połączenie",
"app_calllog_duration": "Czas trwania",
- "app_calllog_incoming_call": "Połączenie odebrane",
- "app_calllog_outgoing_call": "Połączenie wykonane",
- "app_calllog_missed_call": "Nieodebrane połączenie",
- "app_calllog_rejected_call": "Odrzucone połączenie",
+ "app_calllog_incoming_call": "Odebrane",
+ "app_calllog_outgoing_call": "Wykonane",
+ "app_calllog_missed_call": "Nieodebrane",
+ "app_calllog_rejected_call": "Odrzucone",
"app_calllog_date": "Data",
"app_calllog_options_delete_call": "Usuń połączenie",
"app_calllog_delete_call_confirmation": "Czy chcesz usunąć to połączenie z listy?",
"app_calllog_no_calls": "Brak połączeń.",
"app_phonebook_no_contacts": "Brak kontaktów.<p>Naciśnij <b>strzałkę w lewo</b>, aby dodać nowe.</p>",
- "tethering_enable_question": "Jesteś podłączony do komputera.<br />Włączyć tethering?<br /><text color='5'>(niektóre funkcje mogą być wyłączone)</text>",
"app_music_player_artists": "<text color='9'>Wykonawcy</text>",
"app_music_player_albums": "<text color='9'>Albumy</text>",
"app_music_player_playlists": "<text color='9'>Playlisty</text>",
@@ 302,7 301,7 @@
"app_call_reject": "ODRZUĆ",
"app_call_answer": "ODBIERZ",
"app_call_message": "WIADOMOŚĆ",
- "app_call_end_call": "ZAKOŃCZ POŁĄCZENIE",
+ "app_call_end_call": "ZAKOŃCZ",
"app_call_emergency": "Połączenie alarmowe",
"app_call_is_calling": "dzwoni",
"app_call_calling": "dzwoni…",
@@ 312,7 311,7 @@
"app_call_mute": "WYCISZ",
"app_call_muted": "WYCISZONE",
"app_call_speaker": "GŁOŚNIK",
- "app_call_speaker_on": "GŁOŚNIK WŁĄCZONY",
+ "app_call_speaker_on": "GŁOŚNIK",
"app_call_bluetooth": "BLUETOOTH",
"app_call_no_sim": "Brak SIM.\n\nAby wykonać połączenie,\nwłóż kartę SIM.",
"app_call_offline": "Jesteś w trybie offline.\n\nAby wykonać połączenie,\n przejdź w tryb Połączony.",
@@ 331,7 330,7 @@
"app_messages_thread_not_sent": "Niewysłane: ",
"app_messages_thread_you": "Ty: ",
"app_onboarding_title": "Wprowadzenie",
- "app_onboarding_start_configuration": "<text font='gt_pressura' weight='light' size='46'><p>Witaj!</p></text><br></br><text font='gt_pressura' weight='regular' size='27'>Skonfigurujmy twój telefon Mudita Pure.</text>",
+ "app_onboarding_start_configuration": "<text font='gt_pressura' weight='light' size='46'><p>Witaj!</p></text><br></br><text font='gt_pressura' weight='regular' size='27'>Skonfigurujmy twój telefon <br></br> Mudita Pure.</text>",
"app_onboarding_eula_license": "Umowa licencyjna (EULA)",
"app_onboarding_select_sim": "Wybierz aktywną kartę SIM",
"app_onboarding_select_sim_description": "<text>Tylko jedna karta SIM może być jednocześnie aktywna.<br></br>Możesz ją wybrać teraz i zmienić<br></br>w razie potrzeby w Ustawieniach.</text>",
@@ 342,7 341,7 @@
"app_onboarding_skip_confirm": "<text>Do połączenia z siecią konieczna jest konfiguracja karty SIM. Pominąć konfigurację mimo to? </text>",
"app_onboarding_configuration_successful": "<text>Twój telefon Mudita Pure<br></br>jest gotowy do użycia.</text>",
"app_onboarding_no_configuration": "<text>Twój telefon Mudita Pure nie został<br></br>skonfigurowany. Możesz przejść do<br></br>Ustawień, by go skonfigurować.</text>",
- "app_onboarding_update_info": "<text>Aktualna wersja MuditaOS to <br></br> <token>$VERSION</token>. Aktualizacje z nowymi <br></br> funkcjami i poprawkami pojawiają się regularnie. <br></br>Aby zaktualizować telefon, <br></br> odwiedź stronę: </text><text font='gt_pressura' weight='bold' size='27'>www.mudita.com/updateos</text><br></br><text>i postępuj zgodnie ze wskazówkami.</text>",
+ "app_onboarding_update_info": "<text>Aktualna wersja MuditaOS to <token>$VERSION</token>.<br></br>Aktualizacje z nowymi funkcjami i poprawkami pojawiają się regularnie. Aby zaktualizować telefon, odwiedź stronę: <br></br> </text><text font='gt_pressura' weight='bold' size='27'>www.mudita.com/updateos</text><br></br><text>i postępuj zgodnie ze wskazówkami.</text>",
"app_settings_title_main": "Ustawienia",
"app_settings_advanced": "Zaawansowane",
"app_settings_bt": "Bluetooth",
@@ 425,7 424,7 @@
"app_settings_security": "Bezpieczeństwo",
"app_settings_language": "Język",
"app_settings_factory_reset": "Ustawienia fabryczne",
- "app_settings_display_factory_reset_confirmation": "Wyłącz telefon, \nby przywrócić ustawienia fabryczne.\nUruchomić ponownie teraz?",
+ "app_settings_display_factory_reset_confirmation": "Musisz ponownie uruchomić Pure \naby przywrócić ustawieia fabryczne.\nWyłączyć telefon?",
"app_settings_about_your_pure": "Dane telefonu",
"app_settings_technical_information": "Informacje techniczne",
"app_settings_tech_info_model": "Model",
@@ 444,6 443,7 @@
"app_settings_sar": "SAR",
"app_settings_about": "O Mudita Pure",
"app_settings_title_languages": "Wybór języka",
+ "app_settings_network_sim_cards": "Karty SIM",
"app_settings_network_active_card": "Aktywna karta",
"app_settings_network_operator_auto_select": "Automatyczny wybór operatora",
"app_settings_network_all_operators": "Wszyscy operatorzy",
@@ 507,14 507,14 @@
"app_settings_title_offline": "Offline",
"app_settings_title_connection_frequency": "Częstotliwość połączenia",
"app_settings_connected": "Połączony",
- "app_settings_notifications_when_locked": "Powiadomienia przy zablokowanym ekranie",
+ "app_settings_notifications_when_locked": "Alerty przy zabl. ekranie",
"app_settings_calls_from_favorites": "Połączenia od ulubionych",
"app_settings_allow": "Pozwalaj",
- "app_settings_no_network_connection_flight_mode": "Brak połączenia z siecią (tryb samolotowy)",
+ "app_settings_no_network_connection_flight_mode": "Tryb samolotowy",
"app_settings_messages_only": "Tylko wiadomości",
- "app_settings_info_dnd": "Odbieraj wszystkie powiadomienia po cichu. Możesz zezwolić na powiadomienia, kiedy dzwonią do Ciebie osoby z listy ulubionych kontaktów.",
- "app_settings_info_offline_flight_mode": "Jesteś całkowicie odłączony. Możesz bezpiecznie używać tego trybu jako trybu samolotowego. Połączenia, wiadomości i tethering są niedostępne.",
- "app_settings_info_offline_messages_only": "Pure loguje się do sieci, by wysyłać i pobierać wiadomości w zależności od częstotliwości połączenia. Połączenia i tethering są niedostępne.",
+ "app_settings_info_dnd": "Ciche powiadomienia. Możesz zezwolić na pełne powiadomienia od ulubionych kontaktów.",
+ "app_settings_info_offline_flight_mode": "Całkowicie rozłączony. Połączenia, wiadomości i tethering są niedostępne.",
+ "app_settings_info_offline_messages_only": "Wysyłaj i pobieraj wiadomości na podstawie interwałów połączeń. Żadnych połączeń ani tetheringu.",
"app_phonebook_title_main": "Kontakty",
"common_search_uc": "Szukaj",
"common_search_results": "Wyniki wyszukiwania",
M image/assets/lang/Svenska.json => image/assets/lang/Svenska.json +7 -5
@@ 27,6 27,7 @@
"common_stop": "STOPPA",
"common_resume": "FORTSÄTT",
"common_pause": "PAUSA",
+ "common_play": "SPELA",
"common_mo": "MÅ",
"common_tu": "TI",
"common_we": "ON",
@@ 137,7 138,6 @@
"app_calllog_delete_call_confirmation": "Ta bort det här samtalet från listan?",
"app_calllog_no_calls": "Inga samtal ännu.",
"app_phonebook_no_contacts": "Inga kontakter ännu.<p>Tryck på <b>vänsterpil</b> för att lägga till nya.</p>",
- "tethering_enable_question": "Du är ansluten till datorn.<br />Slå på internetdelning?<br /><text color='5'>(vissa funktioner kan vara inaktiverade)</text>",
"app_music_player_artists": "<text color='9'>Artister</text>",
"app_music_player_albums": "<text color='9'>Album</text>",
"app_music_player_playlists": "<text color='9'>Spellistor</text>",
@@ 340,6 340,7 @@
"app_settings_security": "Säkerhet",
"app_settings_language": "Språk",
"app_settings_factory_reset": "Fabriksinställningar",
+ "app_settings_display_factory_reset_confirmation": "Du måste starta om din Pure\nslutföra fabriksåterställningen.\nStänga av telefonen nu?",
"app_settings_about_your_pure": "Om din Pure",
"app_settings_technical_information": "Teknisk information",
"app_settings_tech_info_model": "Model",
@@ 353,6 354,7 @@
"app_settings_sar": "SAR",
"app_settings_about": "Om Mudita Pure",
"app_settings_title_languages": "Språkval",
+ "app_settings_network_sim_cards": "SIM-kort",
"app_settings_network_active_card": "Aktivt kort",
"app_settings_network_operator_auto_select": "Välj operatör automatiskt",
"app_settings_network_all_operators": "Alla operatörer",
@@ 381,11 383,11 @@
"app_settings_notifications_when_locked": "Meddelanden när de är låsta",
"app_settings_calls_from_favorites": "Samtal från favoriter",
"app_settings_allow": "Tillåt",
- "app_settings_no_network_connection_flight_mode": "Ingen nätverksanslutning (flygläge)",
+ "app_settings_no_network_connection_flight_mode": "Flygläge",
"app_settings_messages_only": "Endast meddelanden",
- "app_settings_info_dnd": "Med det här läget kan Pure tyst ta emot alla aviseringar. Du kan tillåta aviseringar när favoritkontakter ringer dig.",
- "app_settings_info_offline_flight_mode": "Detta läge gör att din Pure kopplas ur helt. Du kan säkert använda den som flygläge. Samtal, meddelanden och internetdelning är inte tillgängliga.",
- "app_settings_info_offline_messages_only": "Pure loggar in i nätverket för att skicka och ladda ner meddelanden baserat på anslutningsfrekvens. Samtal och internetdelning är inte tillgängliga.",
+ "app_settings_info_dnd": "Ta emot alla aviseringar tyst. Du kan tillåta fullständiga aviseringar från favoritkontakter.",
+ "app_settings_info_offline_flight_mode": "Helt frånkopplad. Samtal, meddelanden och internetdelning är inte tillgängliga.",
+ "app_settings_info_offline_messages_only": "Skicka och ladda ner meddelanden baserat på anslutningsintervall. Inga samtal eller internetdelning.",
"app_settings_toggle_on": "PÅ",
"app_settings_toggle_off": "AV",
"app_settings_security_phone_lock": "Lösenord för att låsa telefonen",
M module-apps/application-onboarding/style/OnBoardingStyle.hpp => module-apps/application-onboarding/style/OnBoardingStyle.hpp +5 -0
@@ 7,6 7,11 @@
namespace style::onboarding
{
+ namespace start_configuration
+ {
+ inline constexpr auto image_top_margin = 15U;
+ } // namespace start_configuration
+
namespace sim_select
{
inline constexpr auto description_y = 400;
M module-apps/application-onboarding/windows/StartConfigurationWindow.cpp => module-apps/application-onboarding/windows/StartConfigurationWindow.cpp +10 -7
@@ 5,6 5,7 @@
#include <application-onboarding/ApplicationOnBoarding.hpp>
#include <application-onboarding/data/OnBoardingSwitchData.hpp>
+#include <application-onboarding/style/OnBoardingStyle.hpp>
#include <apps-common/windows/DialogMetadata.hpp>
#include <apps-common/messages/DialogMetadataMessage.hpp>
@@ 32,13 33,15 @@ namespace app::onBoarding
navBar->setText(gui::nav_bar::Side::Right, utils::translate(::style::strings::common::back));
navBar->setText(gui::nav_bar::Side::Left, utils::translate(::style::strings::common::skip));
- new gui::Icon(this,
- 0,
- 0,
- style::window_width,
- style::window::default_body_height,
- "logo_no_text",
- utils::translate("app_onboarding_start_configuration"));
+ auto icon = new gui::Icon(this,
+ style::window::default_left_margin,
+ style::window::default_vertical_pos,
+ style::window::default_body_width,
+ style::window::default_body_height,
+ "logo_no_text",
+ utils::translate("app_onboarding_start_configuration"));
+ icon->image->setMargins({0, style::onboarding::start_configuration::image_top_margin, 0, 0});
+ icon->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
}
gui::status_bar::Configuration StartConfigurationWindow::configureStatusBar(
M module-audio/Audio/Profiles/ProfileRoutingLoudspeaker.hpp => module-audio/Audio/Profiles/ProfileRoutingLoudspeaker.hpp +8 -6
@@ 9,12 9,14 @@ namespace audio
class ProfileRoutingLoudspeaker : public Profile
{
+ static constexpr uint32_t sampleRate = 16000;
+
public:
ProfileRoutingLoudspeaker(Volume volume, Gain gain)
: Profile("Routing Speakerphone",
Type::RoutingLoudspeaker,
audio::codec::Configuration{
- .sampleRate_Hz = 16000,
+ .sampleRate_Hz = sampleRate,
.bitWidth = 16,
.flags = static_cast<uint32_t>(
audio::codec::Flags::InputLeft) | // microphone use left audio channel
@@ 25,15 27,15 @@ namespace audio
.outputPath = audio::codec::OutputPath::Loudspeaker,
.filterCoefficients =
{qfilter_CalculateCoeffs(
- audio::equalizer::FilterType::FilterHighPass, 997.f, 44100, 0.701f, 0),
+ audio::equalizer::FilterType::FilterHighPass, 307.3f, sampleRate, 0.701f, 0),
qfilter_CalculateCoeffs(
- audio::equalizer::FilterType::FilterLowPass, 4993.7f, 44100, 0.701f, 0),
+ audio::equalizer::FilterType::FilterLowPass, 5080.1f, sampleRate, 0.847f, 0),
qfilter_CalculateCoeffs(
- audio::equalizer::FilterType::FilterNone, 15975.7f, 44100, 0.701f, -10),
+ audio::equalizer::FilterType::FilterNone, 15975.7f, sampleRate, 0.701f, -10),
qfilter_CalculateCoeffs(
- audio::equalizer::FilterType::FilterNone, 200.4f, 44100, 0.701f, -10),
+ audio::equalizer::FilterType::FilterNone, 200.4f, sampleRate, 0.701f, -10),
qfilter_CalculateCoeffs(
- audio::equalizer::FilterType::FilterNone, 1496.7f, 44100, 0.701f, -4)}},
+ audio::equalizer::FilterType::FilterNone, 1496.7f, sampleRate, 0.701f, -4)}},
AudioDevice::Type::Audiocodec)
{}
};
M module-bsp/board/rt1051/bsp/audio/CodecMAX98090.cpp => module-bsp/board/rt1051/bsp/audio/CodecMAX98090.cpp +2 -2
@@ 175,8 175,8 @@ CodecRetCode CodecMAX98090::Start(const CodecParams ¶m)
i2cAddr.subAddress = MAX98090_REG_OUTPUT_ENABLE;
i2c->Write(i2cAddr, (uint8_t *)&outputenable, 1);
- constexpr uint8_t coarse = 1;
- constexpr uint8_t fine = 0;
+ constexpr uint8_t coarse = 0;
+ constexpr uint8_t fine = 5;
SetPlaybackPath(coarse, fine);
SetFilterMode(FilterMode::Voice);
} break;
M module-bsp/board/rt1051/bsp/eMMC/fsl_mmc.c => module-bsp/board/rt1051/bsp/eMMC/fsl_mmc.c +25 -2
@@ 1865,7 1865,11 @@ static status_t MMC_Write(
}
/* Wait for the card's buffer to be not full to write to improve the write performance. */
- while ((GET_SDMMCHOST_STATUS(card->host.base) & CARD_DATA0_STATUS_MASK) != CARD_DATA0_NOT_BUSY) {}
+ error = MMC_PollingCardStatusBusy(card);
+ if(kStatus_Success != error)
+ {
+ return error;
+ }
/* Wait for the card write process complete */
if (kStatus_Success != MMC_WaitWriteComplete(card)) {
@@ 2264,7 2268,11 @@ status_t MMC_EraseGroups(mmc_card_t *card, uint32_t startGroup, uint32_t endGrou
}
/* Wait for the card's buffer to be not full to write to improve the write performance. */
- while ((GET_SDMMCHOST_STATUS(card->host.base) & CARD_DATA0_STATUS_MASK) != CARD_DATA0_NOT_BUSY) {}
+ status_t error = MMC_PollingCardStatusBusy(card);
+ if(kStatus_Success != error)
+ {
+ return error;
+ }
if (kStatus_Success != MMC_WaitWriteComplete(card)) {
return kStatus_SDMMC_WaitWriteCompleteFailed;
@@ 2631,3 2639,18 @@ status_t MMC_StopBoot(mmc_card_t *card, uint32_t bootMode)
return kStatus_Success;
}
+
+status_t MMC_PollingCardStatusBusy(mmc_card_t *card)
+{
+ int retries = 0;
+ const int maxRetries = 10000;
+ do {
+ if ((GET_SDMMCHOST_STATUS(card->host.base) & CARD_DATA0_STATUS_MASK) == CARD_DATA0_NOT_BUSY) {
+ return kStatus_Success;
+ }
+ // yeld
+ SDMMCHOST_Delay(0);
+ } while (retries++ < maxRetries);
+
+ return kStatus_SDMMC_PollingCardIdleFailed;
+}
M module-bsp/board/rt1051/bsp/eMMC/fsl_mmc.h => module-bsp/board/rt1051/bsp/eMMC/fsl_mmc.h +12 -0
@@ 356,6 356,18 @@ extern "C"
*/
status_t MMC_SetMaxEraseUnitSize(mmc_card_t *card);
+ /*!
+ * @brief Polling card idle status.
+ *
+ * This function can be used to poll the status from busy to idle.
+ *
+ * @param card Card descriptor.
+ *
+ * @retval kStatus_SDMMC_TransferFailed Command tranfer failed.
+ * @retval kStatus_Success Operate successfully.
+ */
+ status_t MMC_PollingCardStatusBusy(mmc_card_t *card);
+
/* @} */
#if defined(__cplusplus)
}
M module-bsp/board/rt1051/bsp/eMMC/fsl_sdmmc_common.h => module-bsp/board/rt1051/bsp/eMMC/fsl_sdmmc_common.h +1 -0
@@ 124,6 124,7 @@ enum _sdmmc_status
kStatus_SDMMC_CardDetectFailed = MAKE_STATUS(kStatusGroup_SDMMC, 39U), /*!< card detect failed */
kStatus_SDMMC_PartitioningFailed = MAKE_STATUS(kStatusGroup_SDMMC, 40U), /*!< Partitioning failed */
kStatus_SDMMC_PartitioningNotSupported = MAKE_STATUS(kStatusGroup_SDMMC, 41U), /*!< Partitioning not supported */
+ kStatus_SDMMC_PollingCardIdleFailed = MAKE_STATUS(kStatusGroup_SDMMC, 42U), /*!< polling card idle status failed */
};
/*! @brief card operation voltage */
M module-os/board/rt1051/CMakeLists.txt => module-os/board/rt1051/CMakeLists.txt +0 -1
@@ 1,7 1,6 @@
target_sources(
module-os
PRIVATE
- _exit.c
fsl_tickless_gpt.c
fsl_tickless_systick.c
fsl_runtimestat_gpt.c
M module-os/board/rt1051/_exit.c => module-os/board/rt1051/_exit.c +8 -38
@@ 35,47 35,17 @@
#include <log/log.hpp>
#include <task.h>
#include <macros.h>
-// ----------------------------------------------------------------------------
-
-// Forward declaration
-
-void _exit(int code);
-
-// ----------------------------------------------------------------------------
-
-void __reset_hardware(void)
-{
- // Let watchdog reset system
- while (1)
- ;
-}
-
-// On Release, call the hardware reset procedure.
-// On Debug we just enter an infinite loop, to be used as landmark when halting
-// the debugger.
-//
-// It can be redefined in the application, if more functionality
-// is required.
-void __attribute__((weak)) _exit(int code)
+void __attribute__((noreturn, used)) _exit(int code)
{
- LOG_FATAL("_exit %d", code);
+ LOG_INFO("_exit %d", code);
haltIfDebugging();
vTaskEndScheduler();
-#ifdef DEBUG
- while (1) {};
+ NVIC_SystemReset();
+ // waiting for system reset
+ while (1) {
+#ifndef DEBUG
+ __asm volatile("wfi\n");
#endif
+ };
}
-
-// ----------------------------------------------------------------------------
-
-#if 0
-void
-__attribute__((weak))
-abort(void)
-{
-
-}
-#endif
-
-// ----------------------------------------------------------------------------
M module-platform/rt1051/src/disk_emmc.cpp => module-platform/rt1051/src/disk_emmc.cpp +3 -2
@@ 105,8 105,9 @@ namespace purefs::blkdev
return statusBlkDevFail;
}
// Wait for the card's buffer to become empty
- while ((GET_SDMMCHOST_STATUS(mmcCard->host.base) & CARD_DATA0_STATUS_MASK) != CARD_DATA0_NOT_BUSY) {
- taskYIELD();
+ auto error = MMC_PollingCardStatusBusy(mmcCard.get());
+ if (kStatus_Success != error) {
+ return error;
}
if (pmState == pm_state::suspend) {
driverUSDHC->Enable();
M module-services/service-desktop/BackupRestore.cpp => module-services/service-desktop/BackupRestore.cpp +16 -4
@@ 451,6 451,7 @@ std::string BackupRestore::ReadVersionFromJsonFile(const std::filesystem::path &
bool BackupRestore::CheckBackupVersion(const std::filesystem::path &extractedBackup)
{
+ auto versionOK = true;
const auto backupVersion = ReadVersionFromJsonFile(extractedBackup / bkp::backupInfo);
if (backupVersion.empty()) {
@@ 465,17 466,28 @@ bool BackupRestore::CheckBackupVersion(const std::filesystem::path &extractedBac
return false;
}
+ LOG_DEBUG("Current OS version %s, backup version %s", (currentVersion).c_str(), (backupVersion).c_str());
+
auto const currentVersionTokens = utils::split(currentVersion, ".");
auto const backupVersionTokens = utils::split(backupVersion, ".");
- if (currentVersionTokens[0] < backupVersionTokens[0] || // major version
- currentVersionTokens[1] < backupVersionTokens[1]) { // minor version
+ if (currentVersionTokens[0] < backupVersionTokens[0]) { // major version
+ versionOK = false;
+ }
+ else if (currentVersionTokens[0] == backupVersionTokens[0] && // major version
+ currentVersionTokens[1] < backupVersionTokens[1]) { // minor version
+ versionOK = false;
+ }
+
+ if (!versionOK) {
LOG_ERROR(
"Current OS version %s older than backup version %s", (currentVersion).c_str(), (backupVersion).c_str());
- return false;
+ }
+ else {
+ LOG_DEBUG("OK to restore backup version %s", (backupVersion).c_str());
}
- return true;
+ return versionOK;
}
bool BackupRestore::CanRestoreFromBackup(const std::filesystem::path &extractedBackup)
M module-vfs/drivers/src/thirdparty/lwext4/ext4_bdev.cpp => module-vfs/drivers/src/thirdparty/lwext4/ext4_bdev.cpp +1 -1
@@ 69,7 69,7 @@ namespace purefs::fs::drivers::ext4::internal
}
const auto err = diskmm->read(ctx->disk_h, buf, blk_id, blk_cnt);
if (err) {
- LOG_ERROR("Sector write error errno: %i", err);
+ LOG_ERROR("Sector read error errno: %i", err);
}
return -err;
}
M products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp => products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp +6 -5
@@ 5,16 5,17 @@
#include "presenter/BellBedtimeWindowPresenter.hpp"
#include "windows/BellBedtimeWindow.hpp"
#include "common/models/BedtimeModel.hpp"
+#include <common/windows/BellFinishedWindow.hpp>
#include "models/BedtimeListItemProvider.hpp"
-#include <common/windows/BellFinishedCallbackWindow.hpp>
namespace app
{
ApplicationBellBedtime::ApplicationBellBedtime(std::string name,
std::string parent,
StatusIndicators statusIndicators,
- StartInBackground startInBackground)
- : Application(name, parent, statusIndicators, startInBackground)
+ StartInBackground startInBackground,
+ uint32_t stackDepth)
+ : Application(name, parent, statusIndicators, startInBackground, stackDepth)
{}
sys::ReturnCodes ApplicationBellBedtime::InitHandler()
@@ 38,9 39,9 @@ namespace app
return std::make_unique<gui::BellBedtimeWindow>(app, std::move(presenter));
});
- windowsFactory.attach(gui::BellFinishedCallbackWindow::defaultName,
+ windowsFactory.attach(gui::window::bell_finished::defaultName,
[](ApplicationCommon *app, const std::string &name) {
- return std::make_unique<gui::BellFinishedCallbackWindow>(app);
+ return std::make_unique<gui::BellFinishedWindow>(app);
});
attachPopups({gui::popup::ID::AlarmActivated,
M products/BellHybrid/apps/application-bell-bedtime/include/application-bell-bedtime/ApplicationBellBedtime.hpp => products/BellHybrid/apps/application-bell-bedtime/include/application-bell-bedtime/ApplicationBellBedtime.hpp +2 -1
@@ 22,7 22,8 @@ namespace app
explicit ApplicationBellBedtime(std::string name = applicationBellBedtimeName,
std::string parent = "",
StatusIndicators statusIndicators = StatusIndicators{},
- StartInBackground startInBackground = {false});
+ StartInBackground startInBackground = {false},
+ uint32_t stackDepth = 4096 * 2);
auto InitHandler() -> sys::ReturnCodes override;
M products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp => products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp +3 -6
@@ 14,7 14,7 @@
#include <module-gui/gui/widgets/Image.hpp>
#include <widgets/SideListView.hpp>
-#include <common/windows/BellFinishedCallbackWindow.hpp>
+#include <common/windows/BellFinishedWindow.hpp>
#include "service-appmgr/Controller.hpp" // for Controller
namespace gui
@@ 70,11 70,8 @@ namespace gui
{
presenter->saveData();
if (showSuccessWindow) {
- application->switchWindow(BellFinishedCallbackWindow::defaultName,
- BellFinishedCallbackWindowSwitchData::Factory::create(
- "circle_success",
- utils::translate("app_bell_bedtime_set_finished"),
- [this]() { app::manager::Controller::switchBack(application); }));
+ application->switchWindow(gui::window::bell_finished::defaultName,
+ BellFinishedWindowData::Factory::create("circle_success_big", "", "", true));
}
else {
application->returnToPreviousWindow();
M products/BellHybrid/apps/application-bell-main/presenters/StateController.hpp => products/BellHybrid/apps/application-bell-main/presenters/StateController.hpp +1 -1
@@ 17,7 17,7 @@ namespace app
namespace app::home_screen
{
- inline constexpr auto defaultAlarmRingingTime = std::chrono::seconds(30);
+ inline constexpr auto defaultAlarmRingingTime = std::chrono::minutes(5);
class AbstractView;
class AbstractPresenter;
M products/BellHybrid/apps/application-bell-main/windows/BellBatteryStatusWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellBatteryStatusWindow.cpp +1 -4
@@ 93,7 93,6 @@ namespace gui
void BellBatteryStatusWindow::onBeforeShow(ShowMode mode, SwitchData *data)
{
if (data != nullptr) {
- WindowWithTimer::onBeforeShow(mode, data);
const auto &switchData = static_cast<Data &>(*data);
const auto entry = battery_utils::getScaledBatteryLevel(batteryEntries, switchData.chargeLevel);
if (entry) {
@@ 104,8 103,6 @@ namespace gui
body->resize();
}
}
- else {
- LOG_ERROR("BellBatteryStatusWindow must be invoked with a valid SwitchData");
- }
+ WindowWithTimer::onBeforeShow(mode, data);
}
} // namespace gui
M products/BellHybrid/apps/application-bell-main/windows/BellMainMenuWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellMainMenuWindow.cpp +0 -2
@@ 50,10 50,8 @@ namespace gui
addAppMenu(utils::translate("app_bellmain_alarm"), app::applicationBellAlarmName);
addAppMenu(utils::translate("app_bellmain_power_nap"), app::applicationBellPowerNapName);
addAppMenu(utils::translate("app_bellmain_background_sounds"), app::applicationBellBackgroundSoundsName);
- // for demo only - to be replaced by call o final window
addAppMenu(utils::translate("app_bellmain_meditation_timer"), app::applicationBellMeditationTimerName);
addAppMenu(utils::translate("app_bellmain_bedtime"), app::applicationBellBedtimeName);
-
addAppMenu(utils::translate("app_bellmain_settings"), app::applicationBellSettingsName);
return menuOptionList;
M products/BellHybrid/apps/application-bell-meditation-timer/ApplicationBellMeditationTimer.cpp => products/BellHybrid/apps/application-bell-meditation-timer/ApplicationBellMeditationTimer.cpp +3 -2
@@ 16,8 16,9 @@ namespace app
ApplicationBellMeditationTimer::ApplicationBellMeditationTimer(std::string name,
std::string parent,
StatusIndicators statusIndicators,
- StartInBackground startInBackground)
- : Application(std::move(name), std::move(parent), statusIndicators, startInBackground)
+ StartInBackground startInBackground,
+ uint32_t stackDepth)
+ : Application(std::move(name), std::move(parent), statusIndicators, startInBackground, stackDepth)
{}
ApplicationBellMeditationTimer::~ApplicationBellMeditationTimer() = default;
M products/BellHybrid/apps/application-bell-meditation-timer/include/application-bell-meditation-timer/ApplicationBellMeditationTimer.hpp => products/BellHybrid/apps/application-bell-meditation-timer/include/application-bell-meditation-timer/ApplicationBellMeditationTimer.hpp +2 -1
@@ 25,7 25,8 @@ namespace app
ApplicationBellMeditationTimer(std::string name = applicationBellMeditationTimerName,
std::string parent = "",
StatusIndicators statusIndicators = StatusIndicators{},
- StartInBackground startInBackground = {false});
+ StartInBackground startInBackground = {false},
+ uint32_t stackDepth = 4096 * 2);
~ApplicationBellMeditationTimer();
sys::ReturnCodes InitHandler() override;
M products/BellHybrid/apps/application-bell-powernap/ApplicationBellPowerNap.cpp => products/BellHybrid/apps/application-bell-powernap/ApplicationBellPowerNap.cpp +3 -2
@@ 17,8 17,9 @@ namespace app
ApplicationBellPowerNap::ApplicationBellPowerNap(std::string name,
std::string parent,
StatusIndicators statusIndicators,
- StartInBackground startInBackground)
- : Application(std::move(name), std::move(parent), statusIndicators, startInBackground)
+ StartInBackground startInBackground,
+ uint32_t stackDepth)
+ : Application(std::move(name), std::move(parent), statusIndicators, startInBackground, stackDepth)
{}
ApplicationBellPowerNap::~ApplicationBellPowerNap() = default;
M products/BellHybrid/apps/application-bell-powernap/include/application-bell-powernap/ApplicationBellPowerNap.hpp => products/BellHybrid/apps/application-bell-powernap/include/application-bell-powernap/ApplicationBellPowerNap.hpp +4 -3
@@ 7,9 7,9 @@
namespace gui::window::name
{
- inline constexpr auto powernapProgress = "PowerNapProgressWindow";
+ inline constexpr auto powernapProgress = "PowerNapProgressWindow";
inline constexpr auto powernapSessionEnded = "PowerNapSessionEndedWindow";
-}
+} // namespace gui::window::name
namespace app
{
namespace powernap
@@ 25,7 25,8 @@ namespace app
ApplicationBellPowerNap(std::string name = applicationBellPowerNapName,
std::string parent = "",
StatusIndicators statusIndicators = StatusIndicators{},
- StartInBackground startInBackground = {false});
+ StartInBackground startInBackground = {false},
+ uint32_t stackDepth = 4096 * 2);
~ApplicationBellPowerNap();
sys::ReturnCodes InitHandler() override;
M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +8 -13
@@ 35,7 35,6 @@
#include <common/BellPowerOffPresenter.hpp>
#include <common/models/BedtimeModel.hpp>
#include <common/windows/BellFinishedWindow.hpp>
-#include <common/windows/BellFinishedCallbackWindow.hpp>
#include <common/windows/BellTurnOffWindow.hpp>
#include <common/popups/BellTurnOffOptionWindow.hpp>
#include <common/models/AudioModel.hpp>
@@ 47,8 46,9 @@ namespace app
ApplicationBellSettings::ApplicationBellSettings(std::string name,
std::string parent,
StatusIndicators statusIndicators,
- StartInBackground startInBackground)
- : Application(std::move(name), std::move(parent), statusIndicators, startInBackground)
+ StartInBackground startInBackground,
+ uint32_t stackDepth)
+ : Application(std::move(name), std::move(parent), statusIndicators, startInBackground, stackDepth)
{}
sys::ReturnCodes ApplicationBellSettings::InitHandler()
@@ 115,11 115,6 @@ namespace app
return std::make_unique<gui::BellFinishedWindow>(app);
});
- windowsFactory.attach(gui::BellFinishedCallbackWindow::defaultName,
- [](ApplicationCommon *app, const std::string &name) {
- return std::make_unique<gui::BellFinishedCallbackWindow>(app);
- });
-
windowsFactory.attach(gui::window::name::bellSettingsHomeView,
[](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::BellSettingsHomeViewWindow>(app);
@@ 217,16 212,16 @@ namespace app
return std::make_unique<gui::AboutYourBellWindow>(app, std::move(aboutYourBellPresenter));
});
+ windowsFactory.attach(gui::window::name::bellSettingsFactoryReset,
+ [](ApplicationCommon *app, const std::string &name) {
+ return std::make_unique<gui::BellDialogYesNo>(app, name);
+ });
+
attachPopups({gui::popup::ID::AlarmActivated,
gui::popup::ID::AlarmDeactivated,
gui::popup::ID::PowerOff,
gui::popup::ID::Reboot,
gui::popup::ID::BedtimeNotification});
-
- windowsFactory.attach(gui::window::name::bellSettingsFactoryReset,
- [](ApplicationCommon *app, const std::string &name) {
- return std::make_unique<gui::BellDialogYesNo>(app, name);
- });
}
sys::MessagePointer ApplicationBellSettings::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp)
M products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp => products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp +11 -10
@@ 8,15 8,15 @@
namespace gui::window::name
{
- inline constexpr auto bellSettings = "BellSettings";
- inline constexpr auto bellSettingsAdvanced = "BellSettingsAdvanced";
- inline constexpr auto bellSettingsTimeUnits = "BellSettingsTimeUnits";
- inline constexpr auto bellSettingsDialog = "BellSettingsDialog";
- inline constexpr auto bellSettingsFinished = "BellSettingsFinished";
- inline constexpr auto bellSettingsFrontlight = "BellSettingsFrontlight";
- inline constexpr auto bellSettingsHomeView = "BellSettingsHomeView";
- inline constexpr auto bellSettingsLanguage = "BellSettingsLanguage";
- inline constexpr auto bellSettingsBedtimeTone = "BellSettingsBedtimeTone";
+ inline constexpr auto bellSettings = "BellSettings";
+ inline constexpr auto bellSettingsAdvanced = "BellSettingsAdvanced";
+ inline constexpr auto bellSettingsTimeUnits = "BellSettingsTimeUnits";
+ inline constexpr auto bellSettingsDialog = "BellSettingsDialog";
+ inline constexpr auto bellSettingsFinished = "BellSettingsFinished";
+ inline constexpr auto bellSettingsFrontlight = "BellSettingsFrontlight";
+ inline constexpr auto bellSettingsHomeView = "BellSettingsHomeView";
+ inline constexpr auto bellSettingsLanguage = "BellSettingsLanguage";
+ inline constexpr auto bellSettingsBedtimeTone = "BellSettingsBedtimeTone";
inline constexpr auto bellSettingsFactoryReset = "BellSettingsFactoryReset";
} // namespace gui::window::name
@@ 30,7 30,8 @@ namespace app
ApplicationBellSettings(std::string name = applicationBellSettingsName,
std::string parent = "",
StatusIndicators statusIndicators = StatusIndicators{},
- StartInBackground startInBackground = {false});
+ StartInBackground startInBackground = {false},
+ uint32_t stackDepth = 4096 * 2);
sys::ReturnCodes InitHandler() override;
M products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp +0 -1
@@ 15,7 15,6 @@
#include <service-appmgr/messages/SwitchRequest.hpp>
#include <windows/advanced/AboutYourBellWindow.hpp>
#include <common/windows/BellFactoryReset.hpp>
-#include <common/windows/BellFinishedCallbackWindow.hpp>
#include <common/windows/BellTurnOffWindow.hpp>
namespace gui
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +0 -3
@@ 18,7 18,6 @@ target_sources(application-bell-common
src/BellListItemProvider.cpp
src/windows/BellFactoryReset.cpp
src/windows/BellFinishedWindow.cpp
- src/windows/BellFinishedCallbackWindow.cpp
src/windows/BellTurnOffWindow.cpp
src/windows/BellWelcomeWindow.cpp
src/BellSideListItemWithCallbacks.cpp
@@ 45,11 44,9 @@ target_sources(application-bell-common
include/common/BellPowerOffPresenter.hpp
include/common/windows/BellFactoryReset.hpp
include/common/windows/BellFinishedWindow.hpp
- include/common/windows/BellFinishedCallbackWindow.hpp
include/common/windows/BellTurnOffWindow.hpp
include/common/windows/BellWelcomeWindow.hpp
include/common/TimeUtils.hpp
- include/common/data/BellFinishedCallbackWindowSwitchData.hpp
include/common/models/AbstractAlarmModel.hpp
include/common/models/AbstractBedtimeModel.hpp
include/common/models/AbstractSettingsModel.hpp
D products/BellHybrid/apps/common/include/common/data/BellFinishedCallbackWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedCallbackWindowSwitchData.hpp +0 -37
@@ 1,37 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-#include <functional> // for function
-#include <SwitchData.hpp>
-#include <utf8/UTF8.hpp>
-
-namespace gui
-{
- struct BellFinishedCallbackWindowSwitchData : public gui::SwitchData
- {
- public:
- struct Factory
- {
- static std::unique_ptr<BellFinishedCallbackWindowSwitchData> create(const UTF8 &icon,
- const UTF8 &text,
- std::function<void()> finishCallback)
- {
- return std::unique_ptr<BellFinishedCallbackWindowSwitchData>(
- new BellFinishedCallbackWindowSwitchData(icon, text, finishCallback));
- }
- };
-
- UTF8 icon{};
- UTF8 text{};
- std::function<void()> finishCallback;
-
- private:
- BellFinishedCallbackWindowSwitchData() = default;
-
- BellFinishedCallbackWindowSwitchData(const UTF8 &icon, const UTF8 &text, std::function<void()> finishCallback)
- : icon{icon}, text{text}, finishCallback{finishCallback}
- {}
- };
-} // namespace gui
M products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp +10 -4
@@ 15,21 15,27 @@ namespace gui
{
static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon,
const std::string &windowToReturn,
- const UTF8 &text = "")
+ const UTF8 &text = "",
+ bool closeApplication = false)
{
- return std::unique_ptr<BellFinishedWindowData>(new BellFinishedWindowData(icon, windowToReturn, text));
+ return std::unique_ptr<BellFinishedWindowData>(
+ new BellFinishedWindowData(icon, windowToReturn, text, closeApplication));
}
};
UTF8 icon{};
std::string windowToReturn;
UTF8 text{};
+ bool closeApplication;
private:
BellFinishedWindowData() = default;
- BellFinishedWindowData(const UTF8 &icon, const std::string &windowToReturn, const UTF8 &text = "")
- : icon{icon}, windowToReturn{windowToReturn}, text{text}
+ BellFinishedWindowData(const UTF8 &icon,
+ const std::string &windowToReturn,
+ const UTF8 &text = "",
+ bool closeApplication = false)
+ : icon{icon}, windowToReturn{windowToReturn}, text{text}, closeApplication{closeApplication}
{}
};
} // namespace gui
D products/BellHybrid/apps/common/include/common/windows/BellFinishedCallbackWindow.hpp => products/BellHybrid/apps/common/include/common/windows/BellFinishedCallbackWindow.hpp +0 -30
@@ 1,30 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-#include <common/data/BellFinishedCallbackWindowSwitchData.hpp>
-#include <apps-common/messages/DialogMetadataMessage.hpp>
-#include <apps-common/popups/WindowWithTimer.hpp>
-
-namespace gui
-{
- class Icon;
-
- class BellFinishedCallbackWindow : public WindowWithTimer
- {
- public:
- static constexpr auto defaultName = "BellFinishedCallbackWindow";
-
- explicit BellFinishedCallbackWindow(app::ApplicationCommon *app, const std::string &name = defaultName);
-
- protected:
- void buildInterface() override;
- bool onInput(const InputEvent &inputEvent) override;
- void onBeforeShow(ShowMode mode, SwitchData *data) override;
-
- Icon *icon{};
- std::function<void()> finishCallback = nullptr;
- };
-
-} // namespace gui
M products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp => products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp +3 -1
@@ 11,7 11,7 @@ namespace gui
{
namespace window::bell_finished
{
- constexpr inline auto defaultName = "BellFinishedWindow";
+ constexpr inline auto defaultName = "BellFinishedWindow";
} // namespace window::bell_finished
class Icon;
@@ 24,11 24,13 @@ namespace gui
protected:
void buildInterface() override;
+ void exit();
bool onInput(const InputEvent &inputEvent) override;
void onBeforeShow(ShowMode mode, SwitchData *data) override;
Icon *icon{};
std::string windowToReturn;
+ bool closeApplication; // is close application is true windowToReturn variable is ignored
};
} // namespace gui
M products/BellHybrid/apps/common/src/AlarmModel.cpp => products/BellHybrid/apps/common/src/AlarmModel.cpp +4 -4
@@ 126,7 126,7 @@ namespace app
}
void AlarmModel::turnOff()
{
- snoozeCount = 0;
+ snoozeCount = 0;
nextSnoozeTime = TIME_POINT_INVALID;
alarms::AlarmServiceAPI::requestTurnOffRingingAlarm(app, cachedRecord.parent->ID);
}
@@ 139,7 139,7 @@ namespace app
snoozeCount++;
nextSnoozeTime =
- std::chrono::floor<std::chrono::minutes>(TimePointNow()) + std::chrono::minutes(snoozeDuration);
+ std::chrono::floor<std::chrono::seconds>(TimePointNow()) + std::chrono::minutes(snoozeDuration);
alarms::AlarmServiceAPI::requestSnoozeRingingAlarm(app, cachedRecord.parent->ID, nextSnoozeTime);
alarmStatus = alarms::AlarmStatus::Snoozed;
}
@@ 178,11 178,11 @@ namespace app
void AlarmModel::updateCache(const SingleEventRecord &record, alarms::AlarmStatus status)
{
if (record.startDate != cachedRecord.startDate) {
- snoozeCount = 0;
+ snoozeCount = 0;
}
cachedRecord = record;
alarmStatus = status;
- state = State::Valid;
+ state = State::Valid;
}
void AlarmModel::setDefaultAlarmTime()
{
M => +1 -1
@@ 63,7 63,7 @@ namespace gui
app::manager::actions::AbortPopup,
std::make_unique<gui::PopupRequestParams>(gui::popup::ID::AlarmDeactivated));
if (application->getPrevWindow() == gui::window::name::bellAlarmSet) {
if (application->getPrevWindow() == popup::window::alarm_deactivated_window) {
app::manager::Controller::sendAction(
application,
app::manager::actions::Launch,
M => +1 -1
@@ 65,7 65,7 @@ namespace gui
app::manager::actions::AbortPopup,
std::make_unique<gui::PopupRequestParams>(gui::popup::ID::AlarmActivated));
if (application->getPrevWindow() == gui::window::name::bellAlarmSet) {
if (application->getPrevWindow() == popup::window::alarm_activated_window) {
app::manager::Controller::sendAction(
application,
app::manager::actions::Launch,
M => +1 -0
@@ 39,6 39,7 @@ namespace gui
icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
icon->image->setMargins(Margins(0, icon::image_top_margin, 0, icon::image_bottom_margin));
icon->text->setFont(style::window::font::verybiglight);
}
void BedtimeNotificationWindow::onBeforeShow(ShowMode mode, [[maybe_unused]] SwitchData *data)
{
D products/BellHybrid/apps/common/src/windows/BellFinishedCallbackWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedCallbackWindow.cpp +0 -59
@@ 1,59 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#include "common/windows/BellFinishedCallbackWindow.hpp"
-#include "common/data/BellFinishedCallbackWindowSwitchData.hpp"
-#include <apps-common/ApplicationCommon.hpp>
-#include <gui/input/InputEvent.hpp>
-#include <gui/widgets/Icon.hpp>
-
-namespace gui
-{
-
- BellFinishedCallbackWindow::BellFinishedCallbackWindow(app::ApplicationCommon *app, const std::string &name)
- : WindowWithTimer(app, name)
- {
- buildInterface();
-
- timerCallback = [this](Item &, sys::Timer &) {
- if (this->finishCallback) {
- this->finishCallback();
- }
- return true;
- };
- }
-
- void BellFinishedCallbackWindow::buildInterface()
- {
- WindowWithTimer::buildInterface();
-
- statusBar->setVisible(false);
- header->setTitleVisibility(false);
- navBar->setVisible(false);
-
- icon = new Icon(this, 0, 0, style::window_width, style::window_height, {}, {});
- icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
- }
-
- bool BellFinishedCallbackWindow::onInput(const InputEvent &inputEvent)
- {
- if (inputEvent.isShortRelease(KeyCode::KEY_ENTER) || inputEvent.isShortRelease(KeyCode::KEY_RF)) {
- if (this->finishCallback) {
- this->finishCallback();
- }
- return true;
- }
- return false;
- }
-
- void BellFinishedCallbackWindow::onBeforeShow(ShowMode mode, SwitchData *data)
- {
- WindowWithTimer::onBeforeShow(mode, data);
-
- if (auto metadata = dynamic_cast<BellFinishedCallbackWindowSwitchData *>(data)) {
- icon->image->set(metadata->icon);
- finishCallback = metadata->finishCallback;
- }
- }
-
-} // namespace gui
M products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp +15 -4
@@ 5,6 5,7 @@
#include <apps-common/ApplicationCommon.hpp>
#include <gui/input/InputEvent.hpp>
#include <gui/widgets/Icon.hpp>
+#include "service-appmgr/Controller.hpp"
namespace gui
{
@@ 13,13 14,22 @@ namespace gui
: WindowWithTimer(app, name)
{
buildInterface();
-
timerCallback = [this](Item &, sys::Timer &) {
- application->switchWindow(windowToReturn);
+ exit();
return true;
};
}
+ void BellFinishedWindow::exit()
+ {
+ if (closeApplication) {
+ app::manager::Controller::switchBack(application);
+ }
+ else {
+ application->switchWindow(windowToReturn);
+ }
+ }
+
void BellFinishedWindow::buildInterface()
{
WindowWithTimer::buildInterface();
@@ 37,7 47,7 @@ namespace gui
bool BellFinishedWindow::onInput(const InputEvent &inputEvent)
{
if (inputEvent.isShortRelease(KeyCode::KEY_ENTER) || inputEvent.isShortRelease(KeyCode::KEY_RF)) {
- application->switchWindow(windowToReturn);
+ exit();
return true;
}
return false;
@@ 51,7 61,8 @@ namespace gui
icon->image->set(metadata->icon);
icon->text->setRichText(metadata->text);
icon->resizeItems();
- windowToReturn = metadata->windowToReturn;
+ windowToReturn = metadata->windowToReturn;
+ closeApplication = metadata->closeApplication;
}
}
M products/PurePhone/CMakeLists.txt => products/PurePhone/CMakeLists.txt +1 -0
@@ 23,6 23,7 @@ target_compile_options(PurePhone
target_sources(PurePhone
PRIVATE
+ ${TARGET_SOURCES}
PurePhoneMain.cpp
PlatformFactory.cpp
EinkSentinelPure.cpp
M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
-Subproject commit fc72bdb0527e761a227dc1d0bcb73a17705ed22c
+Subproject commit 4b996eadb9ee27f0d0a26bb06e5c1587e8102a22