A art/phone/common/empty_list_add_W_G.png => art/phone/common/empty_list_add_W_G.png +0 -0
M image/assets/images/empty_list_add_W_G.vpi => image/assets/images/empty_list_add_W_G.vpi +0 -0
A image/assets/images/settings/empty_list_add_test_W_G_1.vpi => image/assets/images/settings/empty_list_add_test_W_G_1.vpi +0 -0
A image/assets/images/settings/empty_list_add_test_W_G_2.vpi => image/assets/images/settings/empty_list_add_test_W_G_2.vpi +0 -0
A image/assets/images/settings/empty_list_add_test_W_G_3.vpi => image/assets/images/settings/empty_list_add_test_W_G_3.vpi +0 -0
A image/assets/images/settings/empty_list_add_test_W_G_4.vpi => image/assets/images/settings/empty_list_add_test_W_G_4.vpi +0 -0
M image/assets/lang/Deutsch.json => image/assets/lang/Deutsch.json +12 -12
@@ 103,7 103,7 @@
"app_alarm_clock_repeat_everyday": "Täglich",
"app_alarm_clock_repeat_week_days": "Wochentags",
"app_alarm_clock_repeat_custom": "Benutzerdefiniert",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Noch kein Alarm.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='4'>Noch kein Alarm.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_alarm_clock_options_edit": "Ändern",
"app_alarm_clock_options_delete": "Löschen",
"app_alarm_clock_options_turn_off_all_alarms": "Alle Alarme ausschalten",
@@ 170,7 170,7 @@
"app_notes_edited": "Geändert",
"app_notes_delete_note": "Löschen",
"app_notes_note_delete_confirmation": "Diese Notiz wirklich löschen?",
- "app_notes_no_notes": "<text align='center' color='5'>Noch keine Notiz.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='4'>Noch keine Notiz.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_notes_search_no_results": "Keine Notizen gefunden.",
"app_calllog_title_main": "Anrufe",
"app_calllog_type": "Anruf",
@@ 192,7 192,6 @@
"app_music_player_music_library_window_name": "Musikbibliothek",
"app_music_player_empty_track_notification": "Bitte wählen Sie einen Song aus der Bibliothek",
"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Ü",
"app_desktop_emergency": "NOTRUF",
@@ 319,7 318,7 @@
"app_call_emergency_text": "Notruf",
"app_call_wrong_emergency": "Anruf nicht möglich.\n$NUMBER ist keine Notrufnummer.",
"app_messages_title_main": "Nachrichten",
- "app_messages_no_messages": "<text align='center' color='5'>Noch keine Nachrichten.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='4'>Noch keine Nachrichten.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_messages_thread_delete_confirmation": "Dieses Gespräch löschen?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Diese Nachricht wirklich <text weight='bold'>löschen</text></p>?</text>",
"app_messages_thread_no_result": "Keine Ergebnisse",
@@ 611,11 610,12 @@
"app_bellmain_home_screen_bottom_desc_dp": "Tief drücken, um zu aktivieren",
"app_bellmain_home_screen_bottom_desc": "Der nächste Alarm klingelt",
"app_bellmain_home_screen_bottom_desc_in": "in",
+ "app_bellmain_home_screen_bottom_desc_and": "&",
"app_bell_alarm_deactivated": "Alarm deaktiviert",
"app_bellmain_alarm": "Alarm",
"app_bellmain_power_nap": "Kraft-Schläfchen",
- "app_bellmain_meditation_timer": "Meditation-Timer",
- "app_bellmain_background_sounds": "Klangbibliothek",
+ "app_bellmain_meditation_timer": "Meditation",
+ "app_bellmain_background_sounds": "Entspannung",
"app_bellmain_bedtime": "Schlafenzeit",
"app_bellmain_settings": "Einstellungen",
"app_bell_bedtime_notification": "Schlafenszeit",
@@ 638,7 638,7 @@
"app_bell_settings_turn_off": "Ausschalten",
"app_bell_settings_time_units": "Zeit und Einheiten",
"app_bell_settings_advanced_language": "Sprache",
- "app_bell_settings_advanced_about": "Über",
+ "app_bell_settings_advanced_about": "Information",
"app_bell_settings_advanced_about_product": "Mudita Harmony",
"app_bell_settings_advanced_about_version": "<text>OS-Version: <token>$VERSION</token></text>",
"app_bell_settings_advanced_about_storage_title": "Speicher",
@@ 668,13 668,13 @@
"app_bell_settings_frontlight_mode_on_demand": "manuell",
"app_bell_settings_frontlight_top_message": "Lichtstärke des Frontlichts",
"app_bell_greeting_msg": "Guten Morgen! Stehen Sie auf",
- "app_bell_settings_advanced_factory_reset": "Fabrikeinstellungen",
- "app_bell_settings_display_factory_reset_confirmation": "<text>Auf Fabrikeinstellungen<br></br>zurücksetzen ?</text>",
- "app_bell_meditation_timer": "Meditation-Timer",
+ "app_bell_settings_advanced_factory_reset": "Zurücksetzen",
+ "app_bell_settings_display_factory_reset_confirmation": "Zurücksetzen?",
+ "app_bell_meditation_timer": "Meditation",
"app_bell_meditation_interval_chime": "Intervallschall",
- "app_bell_meditation_progress": "Meditation-Timer",
+ "app_bell_meditation_progress": "Meditation",
"app_bell_meditation_interval_none": "kein",
"app_bell_meditation_interval_every_x_minutes": "jede %0 Minuten",
"app_bell_meditation_put_down_and_wait": "<text>Legen Sie Mudita Harmony<br>ab und warten Sie auf den Gong</text>",
"app_bell_meditation_thank_you_for_session": "<text>Danke für<br>die Sitzung</text>"
-}
+}<
\ No newline at end of file
M image/assets/lang/English.json => image/assets/lang/English.json +6 -5
@@ 110,7 110,7 @@
"app_alarm_clock_repeat_everyday": "Everyday",
"app_alarm_clock_repeat_week_days": "Weekdays",
"app_alarm_clock_repeat_custom": "Custom",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>No alarms yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='4'>No alarms yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_alarm_clock_options_edit": "Edit",
"app_alarm_clock_options_delete": "Delete",
"app_alarm_clock_options_turn_off_all_alarms": "Turn off all alarms",
@@ 142,10 142,10 @@
"app_notes_edited": "Edited",
"app_notes_delete_note": "Delete",
"app_notes_note_delete_confirmation": "Do you really want to delete this note?",
- "app_notes_no_notes": "<text align='center' color='5'>No notes yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='4'>No notes yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_notes_search_no_results": "No notes found.",
"app_calllog_title_main": "Calls",
- "app_calllog_no_calls": "<text align='center' color='5'>No calls yet.</text>",
+ "app_calllog_no_calls": "<text align='center' color='4'>No calls yet.</text>",
"app_calllog_type": "Call",
"app_calllog_duration": "Duration",
"app_calllog_incoming_call": "Incoming call",
@@ 288,7 288,7 @@
"app_call_emergency_text": "Emergency call",
"app_call_wrong_emergency": "Can't make a call.\n$NUMBER is not an emergency number.",
"app_messages_title_main": "Messages",
- "app_messages_no_messages": "<text align='center' color='5'>No messages yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='4'>No messages yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_messages_thread_delete_confirmation": "Delete this conversation?",
"app_messages_message_delete_confirmation": "Delete this message?",
"app_messages_thread_no_result": "There are no results",
@@ 487,7 487,7 @@
"common_search_uc": "Search",
"common_search_results": "Search results",
"app_phonebook_search_no_results": "No contacts found.",
- "app_phonebook_no_contacts": "<text align='center' color='5'>No contacts yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_phonebook_no_contacts": "<text align='center' color='4'>No contacts yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_phonebook_contact_title": "Add contact",
"app_phonebook_contact_no_name": "no name",
"app_phonebook_contact_information": "Information",
@@ 642,6 642,7 @@
"app_bell_settings_alarm_settings_snooze_chime_volume": "Snooze chime volume",
"app_bellmain_home_screen_bottom_desc": "Next alarm will ring",
"app_bellmain_home_screen_bottom_desc_in": "in",
+ "app_bellmain_home_screen_bottom_desc_and": "&",
"app_bellmain_home_screen_bottom_desc_less_than": "less than",
"app_bellmain_home_screen_bottom_desc_dp": "Deep press to activate",
"app_bell_alarm_deactivated": "<text>Alarm deactivated</text>",
M image/assets/lang/Espanol.json => image/assets/lang/Espanol.json +14 -13
@@ 103,7 103,7 @@
"app_alarm_clock_repeat_everyday": "Todos los días",
"app_alarm_clock_repeat_week_days": "Días laborables",
"app_alarm_clock_repeat_custom": "Personalizado",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>No hay alarmas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='4'>No hay alarmas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
"app_alarm_clock_options_edit": "Editar",
"app_alarm_clock_options_delete": "Eliminar",
"app_alarm_clock_options_turn_off_all_alarms": "Apagar todas las alarmas",
@@ 170,7 170,7 @@
"app_notes_edited": "Editado",
"app_notes_delete_note": "Eliminar",
"app_notes_note_delete_confirmation": "¿Seguro que quieres eliminar esta nota?",
- "app_notes_no_notes": "<text align='center' color='5'>No hay notas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='4'>No hay notas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
"app_notes_search_no_results": "No se encontraron notas.",
"app_calllog_title_main": "Llamadas",
"app_calllog_type": "Llamada",
@@ 318,7 318,7 @@
"app_call_emergency_text": "Llamada de emergencia",
"app_call_wrong_emergency": "No es posible realizar la llamada.\n$NUMBER no es un número de emergencias.",
"app_messages_title_main": "Mensajes",
- "app_messages_no_messages": "<text align='center' color='5'>No hay mensajes.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='4'>No hay mensajes.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
"app_messages_thread_delete_confirmation": "¿Eliminar esta conversación?",
"app_messages_message_delete_confirmation": "<text align='center'><p>¿Seguro que quieres <text weight='bold'>eliminar</text></p> este mensaje?</text>",
"app_messages_thread_no_result": "No hay resultados",
@@ 603,6 603,7 @@
"tethering_menu_access_decline": "<text>El anclaje de red está activado.<br /><br />Para acceder al menú,<br />desactiva el tethering.</text>",
"app_bellmain_home_screen_bottom_desc": "La siguiente alarma sonará",
"app_bellmain_home_screen_bottom_desc_in": "en",
+ "app_bellmain_home_screen_bottom_desc_and": "&",
"app_bell_alarm_deactivated": "Alarma desactivada",
"app_bell_turn_off_question": "¿Apagar Mudita Harmony?",
"app_bell_goodbye": "Adiós",
@@ 612,15 613,15 @@
"app_bell_onboarding_finalize": "¡Bien hecho!",
"app_bell_onboarding_welcome_message": "Mudita Harmony",
"app_bell_onboarding_info_rotate": "<text font='gt_pressura' weight='regular' size='38'>Girar </text><text font='gt_pressura' weight='light' size='38'> para seleccionar</text>",
- "app_bell_onboarding_info_light_click": "<text font='gt_pressura' weight='regular' size='38'>Presiona ligeramente </text><text font='gt_pressura' weight='light' size='38'>para continuar</text>",
- "app_bell_onboarding_info_deep_click_warning": "<text font='gt_pressura' weight='light' size='38'>Has presionado </text><text font='gt_pressura' weight='regular' size='38'>a fondo</text>",
+ "app_bell_onboarding_info_light_click": "<text font='gt_pressura' weight='regular' size='38'>Click ligeramente </text><text font='gt_pressura' weight='light' size='38'>para continuar</text>",
+ "app_bell_onboarding_info_deep_click_warning": "<text font='gt_pressura' weight='light' size='38'>Has presionado </text><text font='gt_pressura' weight='regular' size='38'>muy profundo</text>",
"app_bell_onboarding_info_deep_click_correction": "<text font='gt_pressura' weight='light' size='38'>Sé más suave, <br></br>intenta </text><text font='gt_pressura' weight='regular' size='38'>presionar ligeramente </text><text font='gt_pressura' weight='light' size='38'>esta vez</text>",
"app_bell_onboarding_welcome": "Bienvenido",
"app_bellmain_home_screen_bottom_desc_dp": "Presionar a fondo para activar",
"app_bellmain_alarm": "Alarma",
"app_bellmain_power_nap": "Siesta",
"app_bellmain_meditation_timer": "Meditación",
- "app_bellmain_background_sounds": "Sonidos de fondo",
+ "app_bellmain_background_sounds": "Relajación",
"app_bellmain_bedtime": "Hora de dormir",
"app_bellmain_settings": "Ajustes",
"app_bell_bedtime_notification": "Es tu hora de dormir",
@@ 656,10 657,10 @@
"app_bell_settings_alarm_settings_tone": "Tono de alarma",
"app_bell_settings_alarm_settings_volume": "Volumen de alarma",
"app_bell_settings_alarm_settings_light": "Luz de alarma",
- "app_bell_settings_alarm_settings_snooze": "Posponer",
+ "app_bell_settings_alarm_settings_snooze": "Repetición",
"app_bell_settings_alarm_settings_snooze_length": "Duración de Repetición",
"app_bell_settings_alarm_settings_snooze_chime_interval": "Intervalo del tono",
- "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "durante la función de posponer",
+ "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "durante la función de repetición",
"app_bell_settings_alarm_settings_snooze_chime_tone": "Tono",
"app_bell_settings_alarm_settings_snooze_chime_volume": "Volumen",
"app_bell_settings_frontlight_mode_top_message": "Modo de luz frontal",
@@ 668,12 669,12 @@
"app_bell_settings_frontlight_top_message": "Intensidad de luz frontal",
"app_bell_greeting_msg": "¡Hola! Levántate y brilla",
"app_bell_settings_advanced_factory_reset": "Restablecer",
- "app_bell_settings_display_factory_reset_confirmation": "<text>¿Restablecer la configuración<br></br>de fábrica ?</text>",
+ "app_bell_settings_display_factory_reset_confirmation": "<text>¿Restablecer la configuración?</text>",
"app_bell_meditation_timer": "Meditación",
- "app_bell_meditation_interval_chime": "Timbre de intervalo",
- "app_bell_meditation_progress": "Temporizador de meditación",
+ "app_bell_meditation_interval_chime": "Intervalo",
+ "app_bell_meditation_progress": "Meditación",
"app_bell_meditation_interval_none": "Ninguno",
"app_bell_meditation_interval_every_x_minutes": "cada %0 minutos",
- "app_bell_meditation_put_down_and_wait": "<text>Apaga Mudita Harmony<br>y espera el gong</text>",
+ "app_bell_meditation_put_down_and_wait": "<text>Posicione Mudita Harmony<br>y espere el gong</text>",
"app_bell_meditation_thank_you_for_session": "<text>Gracias<br>por la sesión</text>"
-}
+}<
\ No newline at end of file
M image/assets/lang/Francais.json => image/assets/lang/Francais.json +12 -11
@@ 107,7 107,7 @@
"app_alarm_clock_repeat_everyday": "Tous les jours",
"app_alarm_clock_repeat_week_days": "Jours de la semaine",
"app_alarm_clock_repeat_custom": "Personnalisé",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Aucune alarme pour le moment.<p> Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='4'>Aucune alarme pour le moment.<p> Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
"app_alarm_clock_options_edit": "Modifier",
"app_alarm_clock_options_delete": "Supprimer",
"app_alarm_clock_options_turn_off_all_alarms": "Éteignez toutes les alarmes",
@@ 139,7 139,7 @@
"app_notes_edited": "Modifiée",
"app_notes_delete_note": "Supprimer",
"app_notes_note_delete_confirmation": "Voulez-vous vraiment supprimer cette note?",
- "app_notes_no_notes": "<text align = 'center' color = '5'> Pas encore de notes.<p>Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
+ "app_notes_no_notes": "<text align = 'center' color = '4'> Pas encore de notes.<p>Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
"app_notes_search_no_results": "Aucune note trouvée.",
"app_calllog_title_main": "Appels",
"app_calllog_type": "Appel",
@@ 287,7 287,7 @@
"app_call_emergency_text": "Appel d'urgence",
"app_call_wrong_emergency": "Impossible de faire un appel.\n$NUMBER n'est pas un numéro d'urgence.",
"app_messages_title_main": "Messages",
- "app_messages_no_messages": "<text align = 'center' color = '5'>Aucun message.<p>Appuyez sur la <b>flèche gauche</b> pour en composer un nouveau.</p></text>",
+ "app_messages_no_messages": "<text align = 'center' color = '4'>Aucun message.<p>Appuyez sur la <b>flèche gauche</b> pour en composer un nouveau.</p></text>",
"app_messages_thread_delete_confirmation": "Supprimer cette conversation ?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Do you really want to <text weight='bold'>delete</text></p>this message?</text>",
"app_messages_thread_no_result": "Aucun résultat",
@@ 570,20 570,21 @@
"tethering_menu_access_decline": "<text>Le partage de connexion est activé.<br /><br />Pour accéder au menu, veuillez<br />désactiver le partage de connextion.</text>",
"app_bellmain_next_alarm": "Prochaine alarme",
"app_bellmain_meditation_timer": "Méditation",
- "app_bellmain_media_library": "Media Library",
+ "app_bellmain_media_library": "Relaxation",
"app_bellmain_bedtime": "Heure du coucher",
"app_bell_bedtime_notification": "C'est l'heure du coucher",
"app_bellmain_settings": "Paramètres",
"app_bellmain_power_nap": "Sieste éclair",
"app_bellmain_home_screen_bottom_desc": "La prochaine alarme sonnera",
"app_bellmain_home_screen_bottom_desc_in": "dans",
+ "app_bellmain_home_screen_bottom_desc_and": "&",
"app_bell_alarm_deactivated": "Alarme désactivée",
"app_bell_turn_off_question": "Éteindre l'appareil ?",
"app_bell_goodbye": "Au revoir",
"app_bell_settings_time_units_time_fmt_top_message": "Format de l'heure",
"app_bell_settings_time_units_time_message": "Heure",
"app_bell_settings_advanced_temp_scale": "Échelle de température",
- "app_bell_onboarding_finalize": "Bien fait!",
+ "app_bell_onboarding_finalize": "Bien!",
"app_bell_onboarding_welcome_message": "Mudita Harmony",
"app_bell_onboarding_info_rotate": "<text font='gt_pressura' weight='regular' size='38'>Tourner </text><text font='gt_pressura' weight='light' size='38'>pour sélectionner</text>",
"app_bell_onboarding_info_light_click": "<text font='gt_pressura' weight='regular' size='38'>Cliquer doucement </text><text font='gt_pressura' weight='light' size='38'>pour continuer</text>",
@@ 594,7 595,7 @@
"app_bellmain_alarm": "Alarme",
"app_bellmain_background_sounds": "Bruits de fond",
"app_bell_alarm_set_not_active": "<text>Alarme réglée.<br />Appuyer fort pour activer.</text>",
- "app_bell_powernap_session_ended_message": "Salut! Levez-vous et brillez",
+ "app_bell_powernap_session_ended_message": "Re-bonjour!",
"app_bell_background_sounds_timer_title": "Minuterie",
"app_bell_background_sounds_timer_off": "OFF",
"app_bell_settings_home_view": "Écran d'accueil",
@@ 609,7 610,7 @@
"app_bell_settings_advanced_language": "Langue",
"app_bell_settings_advanced_about": "À propos",
"app_bell_settings_advanced_about_product": "Mudita Harmony",
- "app_bell_settings_advanced_about_version": "<text>Version du système d'exploitation: <token>$VERSION</token></text>",
+ "app_bell_settings_advanced_about_version": "<text>Version du système: <token>$VERSION</token></text>",
"app_bell_settings_advanced_about_storage_title": "Stockage",
"app_bell_settings_advanced_about_storage_text": "<text><token>$USED_MEMORY</token> Mo sur <token>$TOTAL_MEMORY</token> Mo utilisés</text>",
"app_bell_settings_advanced_about_info_title": "Manuel et certification",
@@ 622,7 623,7 @@
"app_bell_settings_alarm_settings_prewake_up_chime_volume": "Volume",
"app_bell_settings_alarm_settings_prewake_up_light_top_description": "Lumière de pré-réveil",
"app_bell_settings_alarm_settings_prewake_up_light_bottom_description": "avant l'alarme",
- "app_bell_settings_alarm_settings_alarm_tone_and_light": "Mélodie et lumière de l’alarme",
+ "app_bell_settings_alarm_settings_alarm_tone_and_light": "Alarme principale",
"app_bell_settings_alarm_settings_tone": "Mélodie de réveil",
"app_bell_settings_alarm_settings_volume": "Volume",
"app_bell_settings_alarm_settings_light": "Lumière de réveil",
@@ 636,14 637,14 @@
"app_bell_settings_frontlight_mode_auto": "automatique",
"app_bell_settings_frontlight_mode_on_demand": "manuel",
"app_bell_settings_frontlight_top_message": "Intensité",
- "app_bell_greeting_msg": "Salut ! Levez-vous et brillez",
+ "app_bell_greeting_msg": "Re-bonjour!",
"app_bell_settings_advanced_factory_reset": "Réinitialisation",
"app_bell_settings_display_factory_reset_confirmation": "<text>Rétablir<br></br>la configuration ?</text>",
"app_bell_meditation_timer": "Méditation",
"app_bell_meditation_interval_chime": "gong intervalle",
- "app_bell_meditation_progress": "Minuterie pour méditation",
+ "app_bell_meditation_progress": "Méditation",
"app_bell_meditation_interval_none": "Aucune",
"app_bell_meditation_interval_every_x_minutes": "toutes les %0 minutes",
"app_bell_meditation_put_down_and_wait": "<text>Posez Mudita Harmony<br>et attendez le gong</text>",
"app_bell_meditation_thank_you_for_session": "<text>Merci<br>pour cette session</text>"
-}
+}<
\ No newline at end of file
M image/assets/lang/Polski.json => image/assets/lang/Polski.json +24 -23
@@ 75,6 75,7 @@
"common_accept": "AKCEPTUJ",
"common_minute_lower": "minuta",
"common_minutes_lower": "minuty",
+ "common_minutes_lower_genitive": "minut",
"common_minute_short": "min",
"common_paused": "Pauza",
"common_text_copy": "Kopiuj tekst",
@@ 103,7 104,7 @@
"app_alarm_clock_repeat_everyday": "Codziennie",
"app_alarm_clock_repeat_week_days": "Dni powszednie",
"app_alarm_clock_repeat_custom": "Własne",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Nie ma jeszcze żadnego alarmu.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowy.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='4'>Nie ma jeszcze żadnego alarmu.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowy.</p></text>",
"app_alarm_clock_options_edit": "Edytuj",
"app_alarm_clock_options_delete": "Usuń",
"app_alarm_clock_options_turn_off_all_alarms": "Wyłącz wszystkie alarmy",
@@ 174,10 175,10 @@
"app_notes_edited": "Edytowano",
"app_notes_delete_note": "Usuń",
"app_notes_note_delete_confirmation": "Czy na pewno chcesz usunąć tę notatkę?",
- "app_notes_no_notes": "<text align='center' color='5'>Nie ma jeszcze żadnych notatek.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='4'>Nie ma jeszcze żadnych notatek.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
"app_notes_search_no_results": "Nie znaleziono notatek",
"app_calllog_title_main": "Połączenia",
- "app_calllog_no_calls": "<text align='center' color='5'>Brak połączeń.</text>",
+ "app_calllog_no_calls": "<text align='center' color='4'>Brak połączeń.</text>",
"app_calllog_type": "Połączenie",
"app_calllog_duration": "Czas trwania",
"app_calllog_incoming_call": "Odebrane",
@@ 187,8 188,6 @@
"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>",
"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>",
@@ 323,7 322,7 @@
"app_call_emergency_text": "Połączenie alarmowe",
"app_call_wrong_emergency": "Nie można wykonać połączenia.\n$NUMBER nie jest numerem alarmowym.",
"app_messages_title_main": "Wiadomości",
- "app_messages_no_messages": "<text align='center' color='5'>Nie ma jeszcze żadnych wiadomości.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='4'>Nie ma jeszcze żadnych wiadomości.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
"app_messages_thread_delete_confirmation": "Usunąć tę rozmowę?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Czy na pewno chcesz <text weight='bold'>usunąć</text></p>tę wiadomość?</text>",
"app_messages_thread_no_result": "Brak wyników",
@@ 523,7 522,7 @@
"common_search_uc": "Szukaj",
"common_search_results": "Wyniki wyszukiwania",
"app_phonebook_search_no_results": "Nie znaleziono kontaktów",
- "app_phonebook_no_contacts": "<text align='center' color='5'>Brak kontaktów.<p>Naciśnij <b>'w lewo'</b> by dodać kontakt.</p></text>",
+ "app_phonebook_no_contacts": "<text align='center' color='4'>Brak kontaktów.<p>Naciśnij <b>'w lewo'</b> by dodać kontakt.</p></text>",
"app_phonebook_contact_title": "Dodaj kontakt",
"app_phonebook_contact_no_name": "brak nazwy",
"app_phonebook_contact_information": "Informacje",
@@ 617,7 616,7 @@
"app_bell_bedtime_notification": "Pora na sen",
"app_bellmain_power_nap": "Drzemka",
"app_bellmain_meditation_timer": "Medytacja",
- "app_bellmain_background_sounds": "Biblioteka",
+ "app_bellmain_background_sounds": "Relaks",
"app_bellmain_settings": "Ustawienia",
"app_bellmain_main_window_title": "Mudita Harmony",
"app_bell_onboarding_finalize": "Dobra robota!",
@@ 634,37 633,39 @@
"app_bell_settings_alarm_settings_title": "Ustawienia alarmu",
"app_bell_settings_alarm_settings_alarm_tone_and_light": "Główny alarm",
"app_bell_settings_bedtime_tone": "Pora snu",
- "app_bell_settings_bedtime_settings_tone": "<text>Pora snu <br/>dźwięk<text>",
- "app_bell_settings_bedtime_settings_volume": "<text>Pora snu <br/>głośność<text>",
+ "app_bell_settings_bedtime_settings_tone": "Dźwięk",
+ "app_bell_settings_bedtime_settings_volume": "Głośność",
"app_bell_settings_home_view": "Widok główny",
"app_bell_settings_turn_off": "Wyłącz",
"app_bell_settings_alarm_settings_snooze": "Drzemka",
"app_bell_settings_alarm_settings_snooze_length": "Długość drzemki",
- "app_bell_settings_alarm_settings_snooze_chime_interval": "Interwał dźwięku wybudzania",
+ "app_bell_settings_alarm_settings_snooze_chime_interval": "Interwał dźwięku",
"app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "powtarzający się podczas drzemki",
- "app_bell_settings_alarm_settings_snooze_chime_tone": "Dźwięk wybudzania",
- "app_bell_settings_alarm_settings_snooze_chime_volume": "Głośność wybudzania",
- "app_bellmain_home_screen_bottom_desc": "Następny alarm zadzwoni",
+ "app_bell_settings_alarm_settings_snooze_chime_tone": "Dźwięk",
+ "app_bell_settings_alarm_settings_snooze_chime_volume": "Głośność",
+ "app_bellmain_home_screen_bottom_desc": "Alarm zadzwoni",
"app_bellmain_home_screen_bottom_desc_in": "za",
+ "app_bellmain_home_screen_bottom_desc_less_than": "mniej niż",
+ "app_bellmain_home_screen_bottom_desc_and": "i",
"app_bellmain_home_screen_bottom_desc_dp": "Naciśnij głęboko, aby aktywować",
"app_bell_alarm_deactivated": "Alarm wyłączony",
"app_bell_settings_advanced_frontlight": "Podświetlenie",
"app_bell_settings_frontlight_top_message": "Intensywność podświetlenia",
"app_bell_settings_frontlight_mode_top_message": "Tryb podświetlenia",
"app_bell_settings_frontlight_mode_auto": "automatyczny",
- "app_bell_settings_frontlight_mode_on_demand": "na żądanie",
+ "app_bell_settings_frontlight_mode_on_demand": "manualny",
"app_bell_powernap_session_ended_message": "Dzień dobry!",
"app_bell_greeting_msg": [
"<text>Dzień dobry!<br />Pobudka</text>"
],
- "app_bell_alarm_set_not_active": "<text>Ustawiono alarm.<br />Naciśnij głęboko, aby aktywować.</text>",
- "app_bell_background_sounds_timer_title": "Licznik czasu",
+ "app_bell_alarm_set_not_active": "Naciśnij głęboko, aby aktywować.",
+ "app_bell_background_sounds_timer_title": "Wyłącznik czasowy",
"app_bell_background_sounds_timer_off": "Wyłączony",
"app_bell_settings_alarm_settings_prewake_up": "Wstępne budzenie",
- "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Dźwięk wstępnego budzenia",
+ "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Wstępne budzenie",
"app_bell_settings_alarm_settings_prewake_up_chime_bottom_description": "przed alarmem",
"app_bell_settings_alarm_settings_prewake_up_chime_tone": "Dźwięk wstępnego budzenia",
- "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Głośność wstępnego budzenia",
+ "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Głośność",
"app_bell_settings_alarm_settings_prewake_up_light_top_description": "Światło wstępnego budzenia",
"app_bell_settings_alarm_settings_prewake_up_light_bottom_description": "przed alarmem",
"app_bell_settings_alarm_settings_tone": "Dźwięk alarmu",
@@ 673,8 674,8 @@
"app_bell_turn_off_question": "Wyłączyć Mudita Harmony?",
"app_bell_goodbye": "Do widzenia",
"app_bell_settings_advanced_language": "Język",
- "app_bell_settings_advanced_factory_reset": "Ustawienia fabryczne",
- "app_bell_settings_display_factory_reset_confirmation": "<text>Przywrócić ustawienia<br></br>fabryczne ?</text>",
+ "app_bell_settings_advanced_factory_reset": "Reset",
+ "app_bell_settings_display_factory_reset_confirmation": "<text>Ustawienia fabryczne?</text>",
"app_bell_settings_advanced_about": "O produkcie",
"app_bell_settings_advanced_about_product": "Mudita Harmony",
"app_bell_settings_advanced_about_version": "<text>Wersja OS: <token>$VERSION</token></text>",
@@ 684,9 685,9 @@
"app_bell_settings_advanced_about_info_text": "www.mudita.com",
"app_bell_meditation_timer": "Medytacja",
"app_bell_meditation_interval_chime": "Dzwonek interwału",
- "app_bell_meditation_progress": "Timer medytacyjny",
+ "app_bell_meditation_progress": "Medytacja",
"app_bell_meditation_interval_none": "Brak",
"app_bell_meditation_interval_every_x_minutes": "co %0 minuty",
"app_bell_meditation_put_down_and_wait": "<text>Odłóż Mudita Harmony<br>i czekaj na gong</text>",
"app_bell_meditation_thank_you_for_session": "<text>Dziękujemy<br>za sesję</text>"
-}
+}<
\ No newline at end of file
M image/assets/lang/Svenska.json => image/assets/lang/Svenska.json +3 -3
@@ 92,7 92,7 @@
"app_alarm_clock_repeat_everyday": "Varje dag",
"app_alarm_clock_repeat_week_days": "Vardagar",
"app_alarm_clock_repeat_custom": "Eget val",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Inga larmtider än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='4'>Inga larmtider än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
"app_alarm_clock_options_edit": "Redigera",
"app_alarm_clock_options_delete": "Radera",
"app_alarm_clock_options_turn_off_all_alarms": "Stäng av alla larm",
@@ 124,7 124,7 @@
"app_notes_edited": "Redigerad",
"app_notes_delete_note": "Radera",
"app_notes_note_delete_confirmation": "Vill du radera den här anteckningen?",
- "app_notes_no_notes": "<text align='center' color='5'>Inga anteckningar än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='4'>Inga anteckningar än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
"app_notes_search_no_results": "Inga anteckningar hittade.",
"app_calllog_title_main": "Samtal",
"app_calllog_type": "Samtal",
@@ 261,7 261,7 @@
"app_call_emergency_text": "Nödsamtal",
"app_call_wrong_emergency": "Kan inte ringa..\n$NUMBER är inte ett nödnummer.",
"app_messages_title_main": "Meddelanden",
- "app_messages_no_messages": "<text align='center' color='5'>Inga meddelanden än.<p>Tryck <b>vänsterpil</b> för att börja skriva ett.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='4'>Inga meddelanden än.<p>Tryck <b>vänsterpil</b> för att börja skriva ett.</p></text>",
"app_messages_thread_delete_confirmation": "Radera konversation?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Vill du <text weight='bold'>radera</text></p>konversationen?</text>",
"app_messages_thread_no_result": "Inga resultat",
M module-apps/application-settings/ApplicationSettings.cpp => module-apps/application-settings/ApplicationSettings.cpp +4 -1
@@ 6,6 6,7 @@
#include <application-settings/windows/SettingsMainWindow.hpp>
#include <application-settings/windows/advanced/AdvancedOptionsWindow.hpp>
#include <application-settings/windows/advanced/InformationWindow.hpp>
+#include <application-settings/windows/advanced/TextImageColorWindow.hpp>
#include <application-settings/windows/advanced/UITestWindow.hpp>
#include <application-settings/windows/advanced/ColorTestWindow.hpp>
#include <application-settings/windows/advanced/StatusBarImageTypeWindow.hpp>
@@ 375,7 376,9 @@ namespace app
[](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::StatusBarImageTypeWindow>(app);
});
-
+ windowsFactory.attach(gui::window::name::text_image_color, [](ApplicationCommon *app, const std::string &name) {
+ return std::make_unique<gui::TextImageColorWindow>(app);
+ });
// Bluetooth
windowsFactory.attach(gui::window::name::bluetooth, [](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::BluetoothWindow>(app);
M module-apps/application-settings/CMakeLists.txt => module-apps/application-settings/CMakeLists.txt +1 -0
@@ 48,6 48,7 @@ target_sources(application-settings
windows/advanced/AdvancedOptionsWindow.cpp
windows/advanced/ColorTestWindow.cpp
windows/advanced/InformationWindow.cpp
+ windows/advanced/TextImageColorWindow.cpp
windows/advanced/UITestWindow.cpp
windows/advanced/StatusBarImageTypeWindow.cpp
windows/apps/AlarmClockWindow.cpp
M module-apps/application-settings/windows/WindowNames.hpp => module-apps/application-settings/windows/WindowNames.hpp +5 -4
@@ 5,11 5,12 @@
namespace gui::window::name
{
- inline constexpr auto advanced = "Advanced";
- inline constexpr auto information = "Information";
- inline constexpr auto ui_test = "UI Test";
- inline constexpr auto color_test_window = "Color Test";
+ inline constexpr auto advanced = "Advanced";
+ inline constexpr auto information = "Information";
+ inline constexpr auto ui_test = "UI Test";
+ inline constexpr auto color_test_window = "Color Test";
inline constexpr auto status_bar_img_type = "StatusBarImgType";
+ inline constexpr auto text_image_color = "TextImageColor";
inline constexpr auto bluetooth = "Bluetooth";
inline constexpr auto all_devices = "AllDevices";
M module-apps/application-settings/windows/advanced/AdvancedOptionsWindow.cpp => module-apps/application-settings/windows/advanced/AdvancedOptionsWindow.cpp +1 -0
@@ 27,6 27,7 @@ std::list<gui::Option> advancedOptions(app::ApplicationCommon *app)
addMenu("UI Test", gui::window::name::ui_test);
addMenu("Color Test", gui::window::name::color_test_window);
addMenu("Statusbar Image Test", gui::window::name::status_bar_img_type);
+ addMenu("Text Image Color test", gui::window::name::text_image_color);
return l;
}
A module-apps/application-settings/windows/advanced/TextImageColorWindow.cpp => module-apps/application-settings/windows/advanced/TextImageColorWindow.cpp +72 -0
@@ 0,0 1,72 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "TextImageColorWindow.hpp"
+
+#include <application-settings/windows/WindowNames.hpp>
+#include <ApplicationCommon.hpp>
+
+namespace gui
+{
+ TextImageColorWindow::TextImageColorWindow(app::ApplicationCommon *app)
+ : AppWindow(app, window::name::status_bar_img_type)
+ {
+ AppWindow::buildInterface();
+
+ navBar->setText(nav_bar::Side::Right, utils::translate(style::strings::common::back));
+ setTitle("Image and Text Color test");
+
+ std::string text =
+ std::string("<text align='center' color='") + std::to_string(colour) +
+ std::string("'>Press <b>left/right arrow</b><br></br> to change colour: |") + std::to_string(colour) +
+ std::string("| <br></br><br></br>Press <b>top/bottom arrow </b> <br></br> to change image: |") +
+ std::to_string(image_nr) + std::string("|<br></br></text>");
+
+ testIcon = new Icon(this,
+ 0,
+ style::window::default_vertical_pos,
+ style::window_width,
+ style::window_height - style::window::default_vertical_pos - style::nav_bar::height,
+ "empty_list_add_test_W_G_1",
+ text);
+ }
+
+ bool TextImageColorWindow::onInput(const InputEvent &inputEvent)
+ {
+ if (!inputEvent.isShortRelease()) {
+ return false;
+ }
+
+ if (AppWindow::onInput(inputEvent)) {
+ return true;
+ }
+
+ if (inputEvent.isShortRelease(KeyCode::KEY_LEFT) && colour != 0) {
+ colour--;
+ }
+ else if (inputEvent.isShortRelease(KeyCode::KEY_RIGHT) && colour != 15) {
+ colour++;
+ }
+
+ if (inputEvent.isShortRelease(KeyCode::KEY_UP) && image_nr != 1) {
+ image_nr--;
+ }
+ else if (inputEvent.isShortRelease(KeyCode::KEY_DOWN) && image_nr != 4) {
+ image_nr++;
+ }
+
+ std::string text =
+ std::string("<text align='center' color='") + std::to_string(colour) +
+ std::string("'>Press <b>left/right arrow</b><br></br> to change colour: |") + std::to_string(colour) +
+ std::string("| <br></br><br></br>Press <b>top/bottom arrow </b> <br></br> to change image: |") +
+ std::to_string(image_nr) + std::string("|<br></br></text>");
+
+ std::string imageName = std::string("empty_list_add_test_W_G_") + std::to_string(image_nr);
+
+ testIcon->text->setRichText(text);
+ testIcon->image->set(imageName);
+
+ application->refreshWindow(RefreshModes::GUI_REFRESH_DEEP);
+ return true;
+ }
+} // namespace gui
A module-apps/application-settings/windows/advanced/TextImageColorWindow.hpp => module-apps/application-settings/windows/advanced/TextImageColorWindow.hpp +24 -0
@@ 0,0 1,24 @@
+// 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 <AppWindow.hpp>
+#include <Text.hpp>
+#include <Icon.hpp>
+
+namespace gui
+{
+ class TextImageColorWindow : public AppWindow
+ {
+ protected:
+ unsigned int colour = 0;
+ unsigned int image_nr = 1;
+ Icon *testIcon = nullptr;
+
+ public:
+ explicit TextImageColorWindow(app::ApplicationCommon *app);
+
+ bool onInput(const InputEvent &inputEvent) override;
+ };
+} // namespace gui
M => +5 -3
@@ 27,11 27,13 @@ namespace gui
void WindowWithTimer::resetTimer(const std::chrono::seconds newTimeout)
{
timeout = newTimeout;
if (newTimeout != noTimeoutChange) {
timeout = newTimeout;
}
if (!popupTimer.isValid()) {
popupTimer = app::GuiTimerFactory::createSingleShotTimer(application, this, popup::timerName, newTimeout);
popupTimer = app::GuiTimerFactory::createSingleShotTimer(application, this, popup::timerName, timeout);
}
popupTimer.restart(newTimeout);
popupTimer.restart(timeout);
}
void WindowWithTimer::detachTimerIfExists()
M => +3 -2
@@ 8,7 8,8 @@
namespace gui
{
inline constexpr auto defautTimeout = std::chrono::seconds{3};
inline constexpr auto defautTimeout = std::chrono::seconds{3};
inline constexpr auto noTimeoutChange = std::chrono::seconds::zero();
class WindowWithTimer : public gui::AppWindow
{
private:
@@ 27,6 28,6 @@ namespace gui
protected:
void detachTimerIfExists();
void resetTimer(const std::chrono::seconds newTimeout = defautTimeout);
void resetTimer(const std::chrono::seconds newTimeout = noTimeoutChange);
};
} // namespace gui
M module-bsp/board/rt1051/bellpx/bsp/fuel_gauge/CW2015CHBD.hpp => module-bsp/board/rt1051/bellpx/bsp/fuel_gauge/CW2015CHBD.hpp +5 -4
@@ 59,9 59,10 @@ namespace bsp::fuel_gauge
/* got from ODM init code */
constexpr uint8_t battery_info_config_info[BATTERY_INFO_SIZE] = {
- 0x15, 0x7E, 0x80, 0x6E, 0x68, 0x64, 0x61, 0x62, 0x61, 0x5F, 0x5A, 0x56, 0x53, 0x51, 0x4F, 0x3B,
- 0x2E, 0x27, 0x24, 0x24, 0x29, 0x36, 0x4C, 0x5E, 0x5E, 0x49, 0x0A, 0x3E, 0x19, 0x32, 0x44, 0x4D,
- 0x4F, 0x4F, 0x52, 0x52, 0x39, 0x0E, 0x92, 0x15, 0x07, 0x15, 0x52, 0x7E, 0x8D, 0x8E, 0x8E, 0x42,
- 0x60, 0x84, 0x95, 0xA5, 0x80, 0x76, 0xBD, 0xCB, 0x2F, 0x00, 0x64, 0xA5, 0xB5, 0x11, 0xB0, 0x29};
+ // profile_DEM50X_2nd_20211012
+ 0x15, 0x15, 0x6E, 0x67, 0x65, 0x62, 0x60, 0x60, 0x5F, 0x5E, 0x5B, 0x59, 0x55, 0x50, 0x41, 0x33,
+ 0x2A, 0x26, 0x24, 0x27, 0x31, 0x46, 0x55, 0x5B, 0x47, 0x4A, 0x0A, 0x3E, 0x38, 0x58, 0x59, 0x63,
+ 0x67, 0x63, 0x62, 0x64, 0x3D, 0x1B, 0x6F, 0x15, 0x07, 0x21, 0x54, 0x85, 0x8F, 0x90, 0x90, 0x44,
+ 0x63, 0x86, 0x94, 0x99, 0x80, 0x89, 0xBC, 0xCB, 0x2F, 0x00, 0x64, 0xA5, 0xB5, 0xC1, 0x46, 0xAE};
} // namespace bsp::fuel_gauge
M products/BellHybrid/BinaryAssetsVersions.cmake => products/BellHybrid/BinaryAssetsVersions.cmake +1 -1
@@ 1,7 1,7 @@
# This file sets versions of downloaded binaries for release packaging purposes
if( NOT DEFINED ECOBOOT_BIN_VERSION)
- set(ECOBOOT_BIN_VERSION 1.0.18 CACHE STRING "bootloader binary version to download from bootloader release page")
+ set(ECOBOOT_BIN_VERSION 1.0.19 CACHE STRING "bootloader binary version to download from bootloader release page")
endif()
if (NOT DEFINED UPDATER_BIN_VERSION)
M products/BellHybrid/CMakeLists.txt => products/BellHybrid/CMakeLists.txt +1 -0
@@ 104,4 104,5 @@ add_subdirectory(services)
add_subdirectory(sys)
option(CONFIG_ENABLE_TEMP "Enable displaying temperature" OFF)
+option(CONFIG_SHOW_MEMORY_INFO "Enable displaying memory info" OFF)
configure_file(config/ProductConfig.in.hpp ${CMAKE_BINARY_DIR}/ProductConfig.hpp @ONLY)
M products/BellHybrid/apps/application-bell-background-sounds/windows/BGSoundsProgressWindow.cpp => products/BellHybrid/apps/application-bell-background-sounds/windows/BGSoundsProgressWindow.cpp +1 -1
@@ 76,6 76,7 @@ namespace gui
void BGSoundsProgressWindow::onBeforeShow(ShowMode mode, SwitchData *data)
{
presenter->onBeforeShow();
+ updateTime();
if (mode == ShowMode::GUI_SHOW_RETURN && presenter->isPaused()) {
presenter->resume();
@@ 107,7 108,6 @@ namespace gui
progressBar = createProgress(vBox);
timerText = createTimer(body->lastBox);
time = createClock(body->firstBox);
- updateTime();
body->firstBox->resizeItems();
vBox->resizeItems();
M products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp => products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp +3 -3
@@ 171,12 171,12 @@ namespace app::home_screen
};
auto processRotateLeft = [](AbstractView &view, AbstractPresenter &presenter) {
- presenter.spawnTimer();
+ presenter.spawnTimer(defaultAlarmSetTime);
view.decAlarmMinute();
};
auto processRotateRight = [](AbstractView &view, AbstractPresenter &presenter) {
- presenter.spawnTimer();
+ presenter.spawnTimer(defaultAlarmSetTime);
view.incAlarmMinute();
};
} // namespace AlarmEdit
@@ 381,7 381,7 @@ namespace app::home_screen
"AlarmRingingDeactivatedWait"_s + sml::on_exit<_> / AlarmRingingDeactivatedWait::exit,
"AlarmRingingDeactivatedWait"_s + event<Events::Reset> = "Init"_s,
"AlarmRingingDeactivatedWait"_s + event<Events::Timer> = "Deactivated"_s,
- "AlarmRingingDeactivatedWait"_s + event<Events::DeepDownPress> = "DeactivatedWait"_s,
+ "AlarmRingingDeactivatedWait"_s + event<Events::DeepUpPress> = "ActivatedWait"_s,
"AlarmRingingDeactivatedWait"_s + event<Events::BackPress> = "Deactivated"_s,
"AlarmRingingDeactivatedWait"_s + event<Events::LightPress>/ Helpers::switchToMenu = "Deactivated"_s,
"AlarmRingingDeactivatedWait"_s + event<Events::RotateLeftPress> = "DeactivatedEdit"_s,
M products/BellHybrid/apps/application-bell-main/presenters/StateController.hpp => products/BellHybrid/apps/application-bell-main/presenters/StateController.hpp +1 -0
@@ 18,6 18,7 @@ namespace app::home_screen
{
inline constexpr auto defaultAlarmRingingTime = std::chrono::minutes(5);
+ inline constexpr auto defaultAlarmSetTime = std::chrono::seconds{10};
class AbstractView;
class AbstractPresenter;
M products/BellHybrid/apps/application-bell-main/widgets/BellBattery.hpp => products/BellHybrid/apps/application-bell-main/widgets/BellBattery.hpp +1 -1
@@ 16,7 16,7 @@ namespace gui
constexpr auto battery_low = "bell_battery_lvl1";
constexpr auto battery_critical = "bell_battery_empty";
constexpr auto battery_charging = "bell_battery_charging";
- constexpr auto font_small = style::window::font::verybiglight;
+ constexpr auto font_small = style::window::font::largelight;
constexpr auto image_h = 64;
constexpr auto image_w = 64U;
constexpr auto image_right_margin = 10U;
M products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.cpp +1 -1
@@ 122,7 122,7 @@ namespace gui
battery = new BellBattery(bottomBox, 0, 0, 0, 0);
battery->setMinimumSize(battery::battery_widget_w, battery::battery_widget_h);
battery->setEdges(RectangleEdge::None);
- battery->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
+ battery->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
battery->setVisible(false);
bottomText = new TextFixedSize(bottomBox, 0, 0, 0, 0);
M products/BellHybrid/apps/application-bell-meditation-timer/data/MeditationStyle.hpp => products/BellHybrid/apps/application-bell-meditation-timer/data/MeditationStyle.hpp +1 -6
@@ 35,12 35,7 @@ namespace app::meditationStyle
constexpr inline auto font = style::window::font::largelight;
} // namespace minute
- namespace list
- {
- constexpr inline auto timeUnitSingular = "common_minute_lower";
- constexpr inline auto timeUnitPlural = "common_minutes_lower";
- } // namespace list
- } // namespace icStyle
+ } // namespace icStyle
namespace mrStyle
{
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp +5 -0
@@ 92,4 92,9 @@ namespace app::meditation
getView()->intervalReached();
}
}
+
+ void MeditationProgressPresenter::onBeforeShow()
+ {
+ getView()->setTimeFormat(timeModel->getTimeFormat());
+ }
} // namespace app::meditation
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.hpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.hpp +2 -0
@@ 51,6 51,7 @@ namespace app::meditation
virtual void resume() = 0;
virtual void abandon() = 0;
virtual void finish() = 0;
+ virtual void onBeforeShow() = 0;
};
};
@@ 82,5 83,6 @@ namespace app::meditation
void resume() override;
void abandon() override;
void finish() override;
+ void onBeforeShow() override;
};
} // namespace app::meditation
M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp +2 -1
@@ 96,7 96,6 @@ namespace gui
time = new BellStatusClock(body->firstBox);
time->setMaximumSize(body->firstBox->getWidth(), body->firstBox->getHeight());
time->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
- updateTime();
body->firstBox->resizeItems();
dimensionChangedCallback = [&](Item &, const BoundingBox &newDim) -> bool {
@@ 108,6 107,8 @@ namespace gui
void MeditationRunningWindow::onBeforeShow(ShowMode mode, SwitchData *data)
{
AppWindow::onBeforeShow(mode, data);
+ presenter->onBeforeShow();
+ updateTime();
if (mode == ShowMode::GUI_SHOW_INIT) {
playGong();
M products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp => products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp +2 -5
@@ 192,11 192,8 @@ namespace app
informationState = OnBoarding::InformationStates::DeepClickCorrectionInfo;
displayInformation(msg->getWindowName());
}
- if (selectedWindowCondition && informationState == OnBoarding::InformationStates::DeepClickCorrectionInfo) {
- informationState = OnBoarding::InformationStates::RotateInfo;
- }
-
- if (msg->getSenderWindowName() != gui::window::name::informationOnBoardingWindow) {
+ else if (selectedWindowCondition &&
+ informationState == OnBoarding::InformationStates::DeepClickCorrectionInfo) {
informationState = OnBoarding::InformationStates::RotateInfo;
}
}
M products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.cpp => products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.cpp +1 -3
@@ 11,9 11,7 @@ namespace app::OnBoarding
std::vector<std::string> OnBoardingLanguageWindowPresenter::getLanguages()
{
- auto languages = loader.getAvailableDisplayLanguages();
- std::sort(languages.begin(), languages.end());
- return languages;
+ return languages.getSupportedLanguages();
}
unsigned OnBoardingLanguageWindowPresenter::getSelectedLanguageIndex()
M products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.hpp => products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.hpp +2 -2
@@ 5,7 5,7 @@
#include <apps-common/BasePresenter.hpp>
#include <apps-common/ApplicationCommon.hpp>
-#include <i18n/i18n.hpp>
+#include <common/Languages.hpp>
#include <vector>
#include <string>
@@ 33,7 33,7 @@ namespace app::OnBoarding
class OnBoardingLanguageWindowPresenter : public OnBoardingLanguageWindowContract::Presenter
{
private:
- utils::LangLoader loader;
+ common::Languages languages;
app::ApplicationCommon *app;
public:
M products/BellHybrid/apps/application-bell-powernap/data/PowerNapListItem.cpp => products/BellHybrid/apps/application-bell-powernap/data/PowerNapListItem.cpp +3 -10
@@ 5,19 5,12 @@
#include <i18n/i18n.hpp>
#include "data/PowerNapStyle.hpp"
+#include <common/LanguageUtils.hpp>
namespace
{
inline constexpr auto spinnerMax = 180U;
inline constexpr auto spinnerMin = 1U;
inline constexpr auto spinnerStep = 1U;
-
- std::string getTimeUnitName(int currentSpinnerValue)
- {
- using namespace gui::powerNapStyle::listItem;
- const auto isSingular = currentSpinnerValue == 1;
- return utils::translate(isSingular ? timeUnitSingular : timeUnitPlural);
- }
-
} // namespace
namespace gui
{
@@ 72,7 65,7 @@ namespace gui
inputCallback = [&](Item &, const InputEvent &inputEvent) -> bool {
if (body->onInput(inputEvent)) {
- setBottomDescribtionText(getTimeUnitName(spinner->getCurrentValue()));
+ setBottomDescribtionText(utils::language::getCorrectMinutesNumeralForm(spinner->getCurrentValue()));
return true;
}
return false;
@@ 87,7 80,7 @@ namespace gui
void PowerNapListItem::setSpinnerValue(int value)
{
spinner->setCurrentValue(value);
- setBottomDescribtionText(getTimeUnitName(spinner->getCurrentValue()));
+ setBottomDescribtionText(utils::language::getCorrectMinutesNumeralForm(spinner->getCurrentValue()));
onValueChanged(value);
}
M products/BellHybrid/apps/application-bell-powernap/data/PowerNapStyle.hpp => products/BellHybrid/apps/application-bell-powernap/data/PowerNapStyle.hpp +0 -5
@@ 11,11 11,6 @@ namespace gui::powerNapStyle
inline constexpr auto napTimerFont = style::window::font::verybig;
inline constexpr auto napPeriodFont = style::window::font::supersizeme;
inline constexpr auto clockFont = style::window::font::verybiglight;
- namespace listItem
- {
- inline constexpr auto timeUnitSingular = "common_minute_lower";
- inline constexpr auto timeUnitPlural = "common_minutes_lower";
- } // namespace listItem
namespace progress
{
M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.cpp +5 -0
@@ 78,4 78,9 @@ namespace app::powernap
return napFinished;
}
+ void PowerNapProgressPresenter::onBeforeShow()
+ {
+ getView()->setTimeFormat(timeModel->getTimeFormat());
+ }
+
} // namespace app::powernap
M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.hpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.hpp +2 -0
@@ 46,6 46,7 @@ namespace app::powernap
virtual void setTimer(std::unique_ptr<app::TimerWithCallbacks> &&timer) = 0;
virtual void handleUpdateTimeEvent() = 0;
virtual bool isNapFinished() = 0;
+ virtual void onBeforeShow() = 0;
};
};
@@ 68,6 69,7 @@ namespace app::powernap
void onNapFinished();
void onNapAlarmFinished();
+ void onBeforeShow() override;
public:
PowerNapProgressPresenter(app::ApplicationCommon *app,
M products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp => products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp +6 -1
@@ 84,7 84,6 @@ namespace gui
time = new BellStatusClock(body->firstBox);
time->setMaximumSize(body->firstBox->getWidth(), body->firstBox->getHeight());
time->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
- updateTime();
body->firstBox->resizeItems();
dimensionChangedCallback = [&](Item &, const BoundingBox &newDim) -> bool {
@@ 141,4 140,10 @@ namespace gui
}
return true;
}
+
+ void PowerNapProgressWindow::onBeforeShow(ShowMode mode, SwitchData *data)
+ {
+ presenter->onBeforeShow();
+ updateTime();
+ }
} // namespace gui
M products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.hpp => products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.hpp +2 -0
@@ 30,6 30,8 @@ namespace gui
void napEnded() override;
+ void onBeforeShow(ShowMode mode, SwitchData *data) override;
+
public:
PowerNapProgressWindow(app::ApplicationCommon *app,
std::shared_ptr<app::powernap::PowerNapProgressContract::Presenter> presenter);
M products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.cpp => products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.cpp +3 -0
@@ 5,6 5,7 @@
#include <BellSettingsStyle.hpp>
#include <widgets/advanced/AboutYourBellListItem.hpp>
+#include <ProductConfig.hpp>
#include <ListView.hpp>
#include <product/version.hpp>
@@ 46,6 47,7 @@ namespace app::bell_settings
utils::translate("app_bell_settings_advanced_about_version"),
gui::AboutYourBellListItem::TokenMap({{"$VERSION", std::string(VERSION)}})));
+#if CONFIG_SHOW_MEMORY_INFO == 1
struct statvfs stat;
const auto result = statvfs(purefs::dir::getRootDiskPath().c_str(), &stat);
if (result < 0) {
@@ 60,6 62,7 @@ namespace app::bell_settings
utils::translate("app_bell_settings_advanced_about_storage_text"),
gui::AboutYourBellListItem::TokenMap(
{{"$USED_MEMORY", std::to_string(usedMB)}, {"$TOTAL_MEMORY", std::to_string(totalMB)}})));
+#endif
internalData.push_back(
new gui::AboutYourBellListItem(utils::translate("app_bell_settings_advanced_about_info_title"),
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp +60 -35
@@ 3,6 3,7 @@
#include "SnoozeListItemProvider.hpp"
#include <common/widgets/ListItems.hpp>
+#include <common/LanguageUtils.hpp>
#include <apps-common/ApplicationCommon.hpp>
#include <utility>
@@ 11,15 12,46 @@ namespace app::bell_settings
{
using namespace gui;
- enum Intervals
+ NumWithStringListItem::NumWithStringSpinner::Range getDefaultChimeIntervalRange()
{
- Interval_1 = 1,
- Interval_2 = 2,
- Interval_5 = 5,
- Interval_10 = 10,
- Interval_15 = 15,
- Interval_30 = 30
- };
+ const UTF8 minStr = utils::translate("common_minute_short");
+ return {
+ NumWithStringListItem::Value{utils::translate("app_settings_toggle_off")},
+ NumWithStringListItem::Value{1, minStr},
+ NumWithStringListItem::Value{2, minStr},
+ NumWithStringListItem::Value{3, minStr},
+ NumWithStringListItem::Value{5, minStr},
+ };
+ }
+
+ NumWithStringListItem::NumWithStringSpinner::Range transformChimeIntervalsRange(const std::uint32_t chimeLength)
+ {
+ auto chimeIntervals = getDefaultChimeIntervalRange();
+
+ chimeIntervals.erase(
+ std::remove_if(chimeIntervals.begin() + 1,
+ chimeIntervals.end(),
+ [chimeLength](const auto &e) { return e.getValue().value() >= chimeLength; }),
+ chimeIntervals.end());
+
+ return chimeIntervals;
+ }
+
+ std::optional<NumWithStringListItem::Value> calculateCurrentChimeIntervalValue(
+ const NumWithStringListItem::NumWithStringSpinner::Range &range,
+ const NumWithStringListItem::Value &chimeInterval)
+ {
+ if (range.size() == 1) {
+ return {};
+ }
+
+ if (chimeInterval.getValue() && (chimeInterval.getValue().value() >= range.back().getValue().value())) {
+ return range.back();
+ }
+ else {
+ return chimeInterval;
+ }
+ }
SnoozeListItemProvider::SnoozeListItemProvider(AbstractSnoozeSettingsModel &model,
std::vector<UTF8> chimeTonesRange)
@@ 41,21 73,16 @@ namespace app::bell_settings
constexpr auto snoozeLengthMin = 1U;
constexpr auto snoozeLengthMax = 30U;
- auto chimeLengthBottomDescription = model.getSnoozeLength().getValue() > 1
- ? utils::translate("common_minutes_lower")
- : utils::translate("common_minute_lower");
- auto chimeLength = new NumListItem(model.getSnoozeLength(),
+ auto chimeLengthBottomDescription =
+ utils::language::getCorrectMinutesNumeralForm(model.getSnoozeLength().getValue());
+ ;
+ auto chimeLength = new NumListItem(model.getSnoozeLength(),
UIntegerSpinner::Range{snoozeLengthMin, snoozeLengthMax, snoozeLengthStep},
utils::translate("app_bell_settings_alarm_settings_snooze_length"),
chimeLengthBottomDescription);
chimeLength->setOnValueChanged([chimeLength](const std::uint32_t &val) {
- if (val == 1) {
- chimeLength->setBottomDescribtionText(utils::translate("common_minute_lower"));
- }
- else {
- chimeLength->setBottomDescribtionText(utils::translate("common_minutes_lower"));
- }
+ chimeLength->setBottomDescribtionText(utils::language::getCorrectMinutesNumeralForm(val));
});
chimeLength->onEnter = [onOff, this]() {
@@ 66,33 93,31 @@ namespace app::bell_settings
internalData.emplace_back(chimeLength);
- const UTF8 minStr = utils::translate("common_minute_short");
- const auto range = NumWithStringListItem::NumWithStringSpinner::Range{NumWithStringListItem::Value{0, minStr}};
-
auto chimeInterval = new NumWithStringListItem(
model.getSnoozeChimeInterval(),
- range,
+ getDefaultChimeIntervalRange(),
utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval"),
utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc"));
+ chimeLength->setValue();
internalData.emplace_back(chimeInterval);
chimeLength->onProceed = [chimeInterval, chimeLength, this]() {
if (chimeInterval != nullptr) {
- auto val = chimeLength->getCurrentValue();
- NumWithStringListItem::NumWithStringSpinner::Range chimeRange;
- const UTF8 minStr = utils::translate("common_minute_short");
- chimeRange.push_back(NumWithStringListItem::Value{utils::translate("app_alarm_clock_no_snooze")});
- for (unsigned int i = 1; i <= val; i++) {
- if ((i != Intervals::Interval_1) && (i != Intervals::Interval_2) && (i != Intervals::Interval_5) &&
- (i != Intervals::Interval_10) && (i != Intervals::Interval_15) &&
- (i != Intervals::Interval_30)) {
- continue;
- }
- chimeRange.push_back(NumWithStringListItem::Value{i, minStr});
+ const auto currentChimeLength = chimeLength->getCurrentValue();
+ const auto currentChimeInterval = chimeInterval->getCurrentValue();
+ const auto calculatedRange = transformChimeIntervalsRange(currentChimeLength);
+ const auto calculatedChimeInterval =
+ calculateCurrentChimeIntervalValue(calculatedRange, currentChimeInterval);
+
+ if (calculatedChimeInterval) {
+ chimeInterval->getSpinner()->setRange(calculatedRange);
+ chimeInterval->getSpinner()->setCurrentValue(calculatedChimeInterval.value());
+ chimeInterval->setArrowsVisibility();
+ }
+ else {
+ this->onExit();
}
- chimeInterval->getSpinner()->setRange(chimeRange);
- chimeInterval->setArrowsVisibility(chimeRange);
}
return false;
};
M products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.cpp +1 -3
@@ 11,9 11,7 @@ namespace app::bell_settings
std::vector<std::string> LanguageWindowPresenter::getLanguages() const
{
- auto languages = loader.getAvailableDisplayLanguages();
- std::sort(languages.begin(), languages.end());
- return languages;
+ return languages.getSupportedLanguages();
}
std::string LanguageWindowPresenter::getSelectedLanguage() const
M products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.hpp +2 -2
@@ 5,7 5,7 @@
#include <apps-common/BasePresenter.hpp>
#include <apps-common/ApplicationCommon.hpp>
-#include <i18n/i18n.hpp>
+#include <common/Languages.hpp>
#include <vector>
#include <string>
@@ 33,7 33,7 @@ namespace app::bell_settings
class LanguageWindowPresenter : public LanguageWindowContract::Presenter
{
private:
- utils::LangLoader loader;
+ common::Languages languages;
app::ApplicationCommon *app{};
public:
M products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.cpp => products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.cpp +1 -1
@@ 14,7 14,7 @@ namespace gui
{
setMinimumSize(bell_settings_style::about_your_bell_window::list_item::width,
bell_settings_style::about_your_bell_window::list_item::height);
- setMargins(Margins(0, style::margins::big, 0, style::margins::big));
+ setMargins(Margins(0, style::margins::big, 0, style::margins::huge));
activeItem = false;
body = new VBox(this, 0, 0, 0, 0);
M products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.cpp +4 -3
@@ 28,11 28,12 @@ namespace gui
list = new ListView(this,
style::window::default_left_margin,
- style::window::default_vertical_pos,
- style::listview::body_width_with_scroll,
- style::window::default_body_height,
+ top_margin,
+ width,
+ height,
presenter->getPagesProvider(),
listview::ScrollBarType::Fixed);
+ list->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
setFocusItem(list);
list->rebuildList();
M products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.hpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.hpp +4 -0
@@ 18,6 18,10 @@ namespace gui
std::shared_ptr<app::bell_settings::AboutYourBellWindowContract::Presenter> presenter);
private:
+ static constexpr auto height = 400;
+ static constexpr auto width = 380;
+ static constexpr auto top_margin = 41;
+
void buildInterface() override;
ListView *list{};
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +3 -0
@@ 13,6 13,7 @@ target_sources(application-bell-common
src/BellPowerOffPresenter.cpp
src/AlarmModel.cpp
src/AudioModel.cpp
+ src/LanguageUtils.cpp
src/TimeModel.cpp
src/SoundsRepository.cpp
src/BellListItemProvider.cpp
@@ 40,7 41,9 @@ target_sources(application-bell-common
src/options/OptionBellMenu.cpp
src/options/BellOptionsNavigation.cpp
PUBLIC
+ include/common/Languages.hpp
include/common/BellListItemProvider.hpp
+ include/common/LanguageUtils.hpp
include/common/SoundsRepository.hpp
include/common/BellPowerOffPresenter.hpp
include/common/windows/BellFactoryReset.hpp
A products/BellHybrid/apps/common/include/common/LanguageUtils.hpp => products/BellHybrid/apps/common/include/common/LanguageUtils.hpp +11 -0
@@ 0,0 1,11 @@
+// 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 <string>
+
+namespace utils::language
+{
+ auto getCorrectMinutesNumeralForm(int val) -> std::string;
+} // namespace utils::language
A products/BellHybrid/apps/common/include/common/Languages.hpp => products/BellHybrid/apps/common/include/common/Languages.hpp +39 -0
@@ 0,0 1,39 @@
+// 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 <i18n/i18n.hpp>
+
+#include <algorithm>
+#include <vector>
+#include <array>
+#include <string_view>
+
+namespace common
+{
+ class Languages
+ {
+ public:
+ std::vector<Language> getSupportedLanguages() const
+ {
+ auto languages = loader.getAvailableDisplayLanguages();
+ languages.erase(
+ std::remove_if(languages.begin(), languages.end(), [this](const auto &lang) { return matcher(lang); }),
+ languages.end());
+ std::sort(languages.begin(), languages.end());
+ return languages;
+ }
+
+ private:
+ bool matcher(const std::string_view language) const
+ {
+ const auto result = std::find(excludedLanguages.begin(), excludedLanguages.end(), language);
+ return result != excludedLanguages.end();
+ }
+
+ static constexpr std::array<std::string_view, 1> excludedLanguages = {{"Svenska"}};
+ utils::LangLoader loader;
+ };
+
+} // namespace common
M products/BellHybrid/apps/common/include/common/widgets/ListItems.hpp => products/BellHybrid/apps/common/include/common/widgets/ListItems.hpp +2 -1
@@ 63,7 63,8 @@ namespace gui
{
return spinner;
}
- void setArrowsVisibility(const NumWithStringSpinner::Range &range);
+ NumWithStringSpinner::Type getCurrentValue();
+ void setArrowsVisibility();
private:
NumWithStringSpinner *spinner{};
A products/BellHybrid/apps/common/src/LanguageUtils.cpp => products/BellHybrid/apps/common/src/LanguageUtils.cpp +23 -0
@@ 0,0 1,23 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include <i18n/i18n.hpp>
+
+namespace utils::language
+{
+ auto getCorrectMinutesNumeralForm(int val) -> std::string
+ {
+ if (val == 1) {
+ return utils::translate("common_minute_lower");
+ }
+ if (utils::getDisplayLanguage() == "Polski") {
+ if (val < 10 || val > 20) {
+ if ((val % 10) == 2 || (val % 10) == 3 || (val % 10) == 4) {
+ return utils::translate("common_minutes_lower");
+ }
+ }
+ return utils::translate("common_minutes_lower_genitive");
+ }
+ return utils::translate("common_minutes_lower");
+ }
+} // namespace utils::language
M products/BellHybrid/apps/common/src/TimeUtils.cpp => products/BellHybrid/apps/common/src/TimeUtils.cpp +2 -1
@@ 44,7 44,8 @@ namespace utils::time
return std::to_string(hours) + " h";
}
else {
- return std::to_string(hours) + " h & " + std::to_string(minutes) + " min";
+ return std::to_string(hours) + " h " + translate("app_bellmain_home_screen_bottom_desc_and") + " " +
+ std::to_string(minutes) + " min";
}
}(duration.getHours(), duration.getMinutes());
return UTF8("<text>" + prefix + "<br />" + translate("app_bellmain_home_screen_bottom_desc_in") + " " +
M products/BellHybrid/apps/common/src/widgets/ListItems.cpp => products/BellHybrid/apps/common/src/widgets/ListItems.cpp +9 -6
@@ 103,7 103,7 @@ namespace gui
inputCallback = [&, range](Item &item, const InputEvent &event) {
const auto result = OnInputCallback(event);
bottomText->setVisible(spinner->getCurrentValue().getValue().has_value());
- setArrowsVisibility(range);
+ setArrowsVisibility();
return result;
};
@@ 117,7 117,7 @@ namespace gui
const auto val = spinner->getCurrentValue().getValue();
model.setValue(not val ? 0 : *val);
};
- setValue = [&model, this, range]() {
+ setValue = [&model, this]() {
const auto modelValue = model.getValue();
if (modelValue > 0) {
spinner->setCurrentValue(Value{modelValue, minStr});
@@ 125,7 125,7 @@ namespace gui
else {
spinner->setCurrentValue(Value{minStr});
}
- setArrowsVisibility(range);
+ setArrowsVisibility();
};
}
@@ 134,10 134,13 @@ namespace gui
return not spinner->getCurrentValue().getValue().has_value();
}
- void NumWithStringListItem::setArrowsVisibility(const NumWithStringSpinner::Range &range)
+ void NumWithStringListItem::setArrowsVisibility()
{
- const auto selectedVal = spinner->getCurrentValue();
- body->setMinMaxArrowsVisibility(selectedVal == range.front(), selectedVal == range.back());
+ body->setMinMaxArrowsVisibility(spinner->isAtMin(), spinner->isAtMax());
+ }
+ NumWithString<uint32_t, UTF8> NumWithStringListItem::getCurrentValue()
+ {
+ return spinner->getCurrentValue();
}
UTF8ListItem::UTF8ListItem(AbstractSettingsModel<UTF8> &model,
M products/BellHybrid/apps/common/src/windows/BellWelcomeWindow.cpp => products/BellHybrid/apps/common/src/windows/BellWelcomeWindow.cpp +1 -1
@@ 57,7 57,7 @@ namespace gui
bool BellWelcomeWindow::onInput(const InputEvent &inputEvent)
{
- if (inputEvent.isKeyRelease(KeyCode::KEY_LF)) {
+ if (inputEvent.isKeyRelease(KeyCode::KEY_ENTER)) {
if (onAction) {
onAction();
}
M products/BellHybrid/config/ProductConfig.in.hpp => products/BellHybrid/config/ProductConfig.in.hpp +1 -0
@@ 4,3 4,4 @@
#pragma once
#cmakedefine01 CONFIG_ENABLE_TEMP
+#cmakedefine01 CONFIG_SHOW_MEMORY_INFO
M products/BellHybrid/services/appmgr/include/appmgr/IdleHandler.hpp => products/BellHybrid/services/appmgr/include/appmgr/IdleHandler.hpp +1 -1
@@ 11,7 11,7 @@
namespace app::manager
{
- constexpr auto idleReturnTimeout = std::chrono::seconds{10};
+ constexpr auto idleReturnTimeout = std::chrono::seconds{180};
using connectFunction = std::function<bool(const std::type_info &, sys::MessageHandler)>;
class IdleHandler
M products/BellHybrid/services/time/AlarmOperations.cpp => products/BellHybrid/services/time/AlarmOperations.cpp +4 -3
@@ 226,17 226,18 @@ namespace alarms
bool AlarmOperations::handlePreWakeUp(const SingleEventRecord &event, PreWakeUp::Decision decision)
{
+ auto ret = false;
if (auto alarmEventPtr = std::dynamic_pointer_cast<AlarmEventRecord>(event.parent); alarmEventPtr) {
if (decision.timeForChime) {
handleAlarmEvent(alarmEventPtr, alarms::AlarmType::PreWakeUpChime, true);
- return true;
+ ret = true;
}
if (decision.timeForFrontlight) {
handleAlarmEvent(alarmEventPtr, alarms::AlarmType::PreWakeUpFrontlight, true);
- return true;
+ ret = true;
}
}
- return false;
+ return ret;
}
bool AlarmOperations::processSnoozeChime(TimePoint now)
M products/PurePhone/config.cmake => products/PurePhone/config.cmake +1 -1
@@ 2,4 2,4 @@ set(CONFIG_SIMULATOR_DISPLAY_RES_X 480)
set(CONFIG_SIMULATOR_DISPLAY_RES_Y 600)
# Enable/disable USB MTP
-option(ENABLE_USB_TASK "Enables usage of USB Task" ON)
+option(ENABLE_USB_TASK "Enables usage of USB Task" OFF)
M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
-Subproject commit 89a6f884ce5b8a837bed2819c5c24ec8bae47a2f
+Subproject commit 9a21b9957c8fa5ac56b9c89e1c156560d7a0c69c
M tools/generate_update_image.sh => tools/generate_update_image.sh +8 -1
@@ 65,7 65,14 @@ function cleanStagingDir(){
function linkInStageing(){
pushd ${STAGEING_DIR} 1> /dev/null
- ln -s ../sysroot/sys/current/assets
+
+ mkdir assets
+ pushd assets 1> /dev/null
+ ln -s ../../sysroot/sys/current/assets/fonts
+ ln -s ../../sysroot/sys/current/assets/images
+ ln -s ../../sysroot/sys/current/assets/lang
+ popd 1> /dev/null
+
ln -s ../sysroot/sys/user
ln -s ../sysroot/sys/current/${SOURCE_TARGET}-boot.bin boot.bin
ln -s ../sysroot/sys/current/country-codes.db