M README.md => README.md +5 -5
@@ 28,7 28,7 @@ MuditaOS is a mobile operating system optimized for E Ink displays. Built on Fre
- system manager that restores the system after switching on the device or performs the initial start-up
- application manager for managing application lifecycle
- SQLite database for storing contacts and notes
-- VFS (Virtual File System) + file storage based on `littlefs` (little fail-safe file system)
+- VFS (Virtual File System) + file storage based on `lwext4`
- MTP (Media Transfer Protocol) support
## Table of contents
@@ 85,18 85,18 @@ A fully detailed documentation can be build locally using [Doxygen](https://www.
### How to generate documentation using Doxygen
-You can build code documentation with the following command:
+You can build code documentation with the following command, regarding the product:
```bash
-./configure linux Debug
-cd build-linux-Debug
+./configure (PurePhone|BellHybrid) linux Debug
+cd build-(PurePhone|BellHybrid)-linux-Debug
make doc
```
If you prefer to build documentation always with `all` target instead, configure `cmake`
with `BUILD_DOC_WITH_ALL` option set to `ON`, e.g.:
```bash
-./configure <target> <build_type> -DBUILD_DOC_WITH_ALL=ON
+./configure <product> <target> <build_type> -DBUILD_DOC_WITH_ALL=ON
```
Documentation is generated in the `doc/html` subdirectory of the build directory. To view it open `index.html` using a web browser, e.g.:
M doc/quickstart.md => doc/quickstart.md +21 -21
@@ 37,11 37,11 @@ git submodule update --init --recursive
```bash
git pull --recurse-submodules
```
-3. Build the project
+3. Build the project for proper product:
```bash
-./configure.sh [rt1051|linux] [release|debug|relwithdebinfo]
-cd build-[rt1051|linux]-[release|debug|relwithdebinfo]
+./configure.sh [PurePhone|BellHybrid] [rt1051|linux] [release|debug|relwithdebinfo]
+cd build-[PurePhone|BellHybrid]-[rt1051|linux]-[release|debug|relwithdebinfo]
make
```
### CMake options
@@ 70,12 70,12 @@ By using `ENABLE_APP_X` (where `X` is the name of the application) you can enabl
Here's the bare minimum that will enable you to bootstrap the environment on Linux.
```bash
-git submodule update --init --recursive # initialize submodules
-cd ./config/ && ./bootstrap.sh 0- && cd ../ # bootstrap requirements
-./configure.sh rt1051|linux Debug|Release|RelWithDebInfo # configure build
-cd <build-dir> # build dir depends on configuration
-make Pure # build
-./PurePhone.elf # run PurePhone - simulator screen will pop up (on the Linux filesystem)
+git submodule update --init --recursive # initialize submodules
+cd ./config/ && ./bootstrap.sh 0- && cd ../ # bootstrap requirements
+./configure.sh PurePhone|BellHybrid rt1051|linux Debug|Release|RelWithDebInfo # configure build
+cd <build-dir> # build dir depends on configuration
+make Pure # build
+./PurePhone.elf # run PurePhone - simulator screen will pop up (on the Linux filesystem)
```
If you want to run the simulator with image and our VFS implementation
@@ 89,7 89,7 @@ you need to run the image through the script:
After going through the Super dirty quickstart on Linux, run the following commands to build and run all unit tests:
```bash
-./configure.sh linux debug
+./configure.sh PurePhone|BellHybrid linux debug
cd <build-dir>
make check
```
@@ 103,8 103,8 @@ make check
cp ./env.cmake.sample ./env.cmake && sed -i "s:<HOME>:$HOME:" env.cmake
git submodule update --init --recursive
cd ./config/ && ./bootstrap.sh 0- && cd ../
-./configure.sh rt1051 RelWithDebInfo
-cd build-arm-RelWithDebInfo
+./configure.sh PurePhone|BellHybrid rt1051 RelWithDebInfo
+cd build-PurePhone|BellHybrid-rt1051-RelWithDebInfo
make Pure
```
@@ 112,7 112,7 @@ make Pure
3. Please take the following steps in three parallel consoles/sessions:
- Start J-Link server: `./StartJLinkServer.sh`
- - Load app with GDB via J-Link connected to Mudita Pure: `./run.sh <build folder>`
+ - Load app with GDB via J-Link connected to Mudita Pure: `./run.sh <build folder> --product PurePhone`
- Catch logs from Mudita Pure from J-Link RTT and write them to `/tmp/log.txt`: `JLinkRTTClient | tee /tmp/log.txt`
#### Catching logs using UART
@@ 221,32 221,32 @@ you will see the list of groups your user is assigned to.
2. Configure for Linux Debug:
```bash
-./in_docker.sh config linux Debug
+./in_docker.sh config PurePhone|BellHybrid linux Debug
```
3. Build linux Debug:
```bash
-./in_docker.sh make build-linux-Debug
+./in_docker.sh make build-PurePhone|BellHybrid-linux-Debug
```
4. Build RT1051 Release
```bash
-./in_docker.sh config rt1051 Release
-./in_docker.sh make build-rt1051-Release
+./in_docker.sh config PurePhone|BellHybrid rt1051 Release
+./in_docker.sh make build-PurePhone|BellHybrid-rt1051-Release
```
5. Build and run tests (Linux only)
```bash
-./in_docker.sh make build-linux-Debug
-./in_docker.sh make build-linux-Debug check
+./in_docker.sh make build-PurePhone|BellHybrid-linux-Debug
+./in_docker.sh make build-PurePhone|BellHybrid-linux-Debug check
```
To build selected test manually in the working directory of attached Docker image run:
```bash
-cd ./build-linux-Debug ; make <test_name>; ./<test_name>
+cd ./build-PurePhone|BellHybrid-linux-Debug ; make <test_name>; ./<test_name>
```
i.e.:
```bash
-cd ./build-linux-Debug ; make unittest_gui && ./unittest_gui
+cd ./build-PurePhone|BellHybrid-linux-Debug ; make unittest_gui && ./unittest_gui
```
Running tests checks memory leaks too - this might be helpful in creation of new widgets.
M image/assets/lang/Deutsch.json => image/assets/lang/Deutsch.json +33 -25
@@ 613,19 613,26 @@
"app_bellmain_alarm": "Alarm",
"app_bellmain_power_nap": "Kraft-Schläfchen",
"app_bellmain_meditation_timer": "Meditation-Timer",
- "app_bellmain_background_sounds": "Hintergrundklänge",
+ "app_bellmain_background_sounds": "Klangbibliothek",
"app_bellmain_bedtime": "Schlafenzeit",
"app_bellmain_settings": "Einstellungen",
+ "app_bell_bedtime_notification": "Schlafenszeit",
"app_bell_alarm_set_not_active": "<text>Alarm eingestellt.<br />Tief drücken, um zu aktivieren.</text>",
- "app_bell_powernap_session_ended_message": "<text>Guten Morgen!<br />Stehen Sie auf</text>",
+ "app_bell_powernap_session_ended_message": "<text>Guten morgen!<br>Zeit zum aufstehen</text>",
"app_bell_background_sounds_timer_title": "Timer",
"app_bell_background_sounds_timer_off": "AUS",
- "app_bell_settings_home_view": "Home-Ansicht",
+ "app_bell_onboarding_welcome_message": "Mudita Harmony",
+ "app_bell_onboarding_info_rotate": "<text font='gt_pressura' weight='regular' size='38'>Drehen </text><text font='gt_pressura' weight='light' size='38'> um auszuwählen</text>",
+ "app_bell_onboarding_info_light_click": "<text font='gt_pressura' weight='regular' size='38'>Leichter Klick </text><text font='gt_pressura' weight='light' size='38'>um fortzufahren</text>",
+ "app_bell_onboarding_info_deep_click_warning": "<text font='gt_pressura' weight='light' size='38'>Sie haben </text><text font='gt_pressura' weight='regular' size='38'>tief gedrückt</text>",
+ "app_bell_onboarding_info_deep_click_correction": "<text font='gt_pressura' weight='light' size='38'>Seien Sie sanfter,<br></br>versuchen </text><text font='gt_pressura' weight='regular' size='38'>Sie diesmal </text><text font='gt_pressura' weight='light' size='38'>leicht klicken</text>",
+ "app_bell_settings_home_view": "Startansicht",
"app_bell_settings_alarm_settings": "Alarmeinstellungen",
- "app_bell_settings_bedtime_tone": "Schlafenszeit-Klang",
- "app_bell_settings_bedtime_settings_tone": "Schlafenszeit-Klang",
- "app_bell_settings_bedtime_settings_volume": "<text>Schlafenzeit-Lautstärke</text>",
- "app_bell_settings_advanced": "erweitert",
+ "app_bell_settings_alarm_settings_title": "Alarmeinstellungen",
+ "app_bell_settings_bedtime_tone": "Schlafens-Klang",
+ "app_bell_settings_bedtime_settings_tone": "Klang",
+ "app_bell_settings_bedtime_settings_volume": "<text>Lautstärke</text>",
+ "app_bell_settings_advanced": "Erweitert",
"app_bell_settings_turn_off": "Ausschalten",
"app_bell_settings_advanced_time_units": "Zeit und Einheiten",
"app_bell_settings_advanced_language": "Sprache",
@@ 633,38 640,39 @@
"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",
- "app_bell_settings_advanced_about_storage_text": "<text><token>$USED_MEMORY</token>MB von <token>$TOTAL_MEMORY</token>MB belegt</text>",
+ "app_bell_settings_advanced_about_storage_text": "<text>Verbraucht <token>$USED_MEMORY</token>MB von <token>$TOTAL_MEMORY</token>MB</text>",
"app_bell_settings_advanced_about_info_title": "Handbuch & Zertifikat-Info",
"app_bell_settings_advanced_about_info_text": "www.mudita.com",
"app_bell_settings_alarm_settings_prewake_up": "Sanftes Wecken",
- "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Gong vor dem Aufwachen",
+ "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Klang vor dem Aufwachen",
"app_bell_settings_alarm_settings_prewake_up_chime_bottom_description": "vor dem Alarm",
- "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Bevor Aufwachen-Klanggong",
- "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Bevor Aufwachen-Klanggonglautstärke",
- "app_bell_settings_alarm_settings_prewake_up_light_top_description": "Bevor Aufwachen-Licht",
+ "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Klang",
+ "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Lautstärke",
+ "app_bell_settings_alarm_settings_prewake_up_light_top_description": "Licht",
"app_bell_settings_alarm_settings_prewake_up_light_bottom_description": "vor dem Alarm",
- "app_bell_settings_alarm_settings_prewake_up_finished": "Bevor Aufwachen-Funktion ist eingestellt",
- "app_bell_settings_alarm_settings_alarm_tone_and_light": "Alarmton & Leuchte",
+ "app_bell_settings_alarm_settings_alarm_tone_and_light": "Hauptalarm",
"app_bell_settings_alarm_settings_tone": "Alarmton",
"app_bell_settings_alarm_settings_volume": "Alarmlautstärke",
"app_bell_settings_alarm_settings_light": "Alarmleuchte",
- "app_bell_settings_alarm_settings_alarm_tone_and_light_finished": "Alarmton & Leuchte ist eingestellt",
"app_bell_settings_alarm_settings_snooze": "Schlummer",
"app_bell_settings_alarm_settings_snooze_length": "Schlummerlänge",
"app_bell_settings_alarm_settings_snooze_chime_interval": "Schlummer Klangintervall",
- "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "wiederkehrende während des Schlummers",
- "app_bell_settings_alarm_settings_snooze_chime_tone": "Schlummer-Klanggong",
- "app_bell_settings_alarm_settings_snooze_chime_volume": "Schlummerklang-Lautstärke",
- "app_bell_settings_alarm_settings_snooze_finished": "Schlummer ist eingestellt",
+ "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "während des Schlummern",
+ "app_bell_settings_alarm_settings_snooze_chime_tone": "Schlummer-Klang",
+ "app_bell_settings_alarm_settings_snooze_chime_volume": "Lautstärke",
"app_bell_settings_advanced_frontlight": "Frontlicht",
"app_bell_settings_frontlight_mode_top_message": "Frontlichtmodus",
"app_bell_settings_frontlight_mode_auto": "automatisch",
- "app_bell_settings_frontlight_mode_on_demand": "auf Anfrage",
+ "app_bell_settings_frontlight_mode_on_demand": "manuell",
"app_bell_settings_frontlight_top_message": "Lichtstärke des Frontlichts",
- "app_bell_settings_frontlight_finished_message": "Frontlicht ist eingestellt",
- "app_bell_settings_advanced_language_set": "Sprache ist eingestellt",
- "app_bell_settings_time_units_finished_message": "Zeit & Einheiten werden eingestellt",
"app_bell_greeting_msg": "Guten Morgen! Stehen Sie auf",
- "app_bell_settings_advanced_factory_reset": "Fabrikrückstellung",
- "app_bell_settings_display_factory_reset_confirmation": "<text>Auf Fabrikeinstellungen<br></br>zurücksetzen ?</text>"
+ "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_meditation_interval_chime": "Intervallschall",
+ "app_bell_meditation_progress": "Meditation-Timer",
+ "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>"
}
M image/assets/lang/English.json => image/assets/lang/English.json +7 -18
@@ 585,26 585,21 @@
"tethering_menu_access_decline": "<text>Tethering is on.<br /><br />To access menu,<br />turn tethering off.</text>",
"app_bell_settings_time_units_time_fmt_top_message": "Time format",
"app_bell_settings_time_units_time_message": "Time",
- "app_bell_settings_time_units_finished_message": "Time and units are set.",
"app_bellmain_alarm": "Alarm",
"app_bellmain_bedtime": "Bedtime",
- "app_bell_bedtime_set_finished": "<text>Bedtime reminder<br />is set<text>",
"app_bell_bedtime_notification": "It is Your bedtime",
"app_bellmain_power_nap": "Power nap",
"app_bellmain_meditation_timer": "Meditation",
- "app_bellmain_background_sounds": "Library",
+ "app_bellmain_background_sounds": "Relaxation",
"app_bellmain_settings": "Settings",
- "app_bellmain_main_window_title": "Bell Hybrid+",
+ "app_bellmain_main_window_title": "Mudita Harmony",
"app_bell_meditation_timer": "Meditation",
"app_bell_meditation_interval_chime": "Interval chime",
"app_bell_meditation_progress": "Meditation timer",
"app_bell_meditation_interval_none": "None",
"app_bell_meditation_interval_every_x_minutes": "every %0",
- "app_bell_meditation_put_down_and_wait": "<text>Put down Bell Harmony<br>and wait for the gong</text>",
+ "app_bell_meditation_put_down_and_wait": "<text>Put down Mudita Harmony<br>and wait for the gong</text>",
"app_bell_meditation_thank_you_for_session": "<text>Thank you for<br>the session</text>",
- "app_bell_meditation_minute": "minute",
- "app_bell_meditation_minutes": "minutes",
- "app_bell_meditation_paused": "<text>Paused</text>",
"app_bell_onboarding_welcome_message": "Mudita Harmony",
"app_bell_onboarding_info_rotate": "<text font='gt_pressura' weight='regular' size='38'>Rotate </text><text font='gt_pressura' weight='light' size='38'>to select</text>",
"app_bell_onboarding_info_light_click": "<text font='gt_pressura' weight='regular' size='38'>Light click </text><text font='gt_pressura' weight='light' size='38'>to continue</text>",
@@ 615,7 610,6 @@
"app_bell_settings_advanced_time_units": "Time & units",
"app_bell_settings_advanced_temp_scale": "Temperature scale",
"app_bell_settings_advanced_language": "Language",
- "app_bell_settings_advanced_language_set": "Language is set",
"app_bell_settings_advanced_about": "About",
"app_bell_settings_advanced_about_product": "Mudita Harmony",
"app_bell_settings_advanced_about_version": "<text>OS version: <token>$VERSION</token></text>",
@@ 623,7 617,8 @@
"app_bell_settings_advanced_about_storage_text": "<text><token>$USED_MEMORY</token>MB of <token>$TOTAL_MEMORY</token>MB used</text>",
"app_bell_settings_advanced_about_info_title": "Manual & certification info",
"app_bell_settings_advanced_about_info_text": "www.mudita.com",
- "app_bell_settings_alarm_settings": "Alarms settings",
+ "app_bell_settings_alarm_settings": "Alarm",
+ "app_bell_settings_alarm_settings_title": "Alarm settings",
"app_bell_settings_alarm_settings_tone": "Alarm tone",
"app_bell_settings_alarm_settings_volume": "Alarm volume",
"app_bell_settings_alarm_settings_light": "Alarm light",
@@ 634,17 629,13 @@
"app_bell_settings_alarm_settings_prewake_up_chime_volume": "Pre-wake up chime volume",
"app_bell_settings_alarm_settings_prewake_up_light_top_description": "Pre-wake up light",
"app_bell_settings_alarm_settings_prewake_up_light_bottom_description": "before the alarm",
- "app_bell_settings_alarm_settings_prewake_up_finished": "Pre-wake up is set",
"app_bell_settings_alarm_settings_alarm_tone_and_light": "Main alarm",
- "app_bell_settings_alarm_settings_alarm_tone_and_light_finished": "Alarm tone & light is set",
"app_bell_settings_bedtime_tone": "Bedtime tone",
"app_bell_settings_bedtime_settings_tone": "Bedtime tone",
"app_bell_settings_bedtime_settings_volume": "<text>Bedtime tone<br />volume</text>",
- "app_bell_settings_bedtime_tone_finished": "Bedtime tone is set",
"app_bell_settings_home_view": "Home view",
"app_bell_settings_turn_off": "Turn off",
"app_bell_settings_alarm_settings_snooze": "Snooze",
- "app_bell_settings_alarm_settings_snooze_finished": "Snooze is set",
"app_bell_settings_alarm_settings_snooze_length": "Snooze length",
"app_bell_settings_alarm_settings_snooze_chime_interval": "Snooze chime interval",
"app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "<text>recurring during<br />snooze</text>",
@@ 659,12 650,11 @@
"app_bell_settings_advanced_frontlight": "Frontlight",
"app_bell_settings_frontlight_top_message": "Frontlight intensity",
"app_bell_settings_frontlight_mode_top_message": "Frontlight mode",
- "app_bell_settings_frontlight_finished_message": "Frontlight is set",
"app_bell_settings_frontlight_mode_auto": "auto",
"app_bell_settings_frontlight_mode_on_demand": "on demand",
"app_bell_powernap_session_ended_message": "<text>Hello!<br />Rise & shine</text>",
"app_bell_background_sounds_timer_title": "Auto turn off",
- "app_bell_turn_off_question": "Turn off the device?",
+ "app_bell_turn_off_question": "Turn off Mudita Hamrony?",
"app_bell_goodbye": "Goodbye",
"app_bell_reset_message": "<text>Resetting Mudita<br />Harmony</text>",
"app_bell_greeting_msg": [
@@ 720,6 710,5 @@
"<text>It's a new Day!<br />Spread kindness everywhere you go</text>"
],
"app_bell_settings_advanced_factory_reset": "Factory reset",
- "app_bell_settings_display_factory_reset_confirmation": "<text>Reset to factory<br></br>settings ?</text>",
- "app_bell_settings_factory_reset_finished": "Factory settings\nrestored"
+ "app_bell_settings_display_factory_reset_confirmation": "<text>Reset to factory<br></br>settings ?</text>"
}
M image/assets/lang/Espanol.json => image/assets/lang/Espanol.json +34 -26
@@ 603,67 603,75 @@
"app_bellmain_home_screen_bottom_desc": "La siguiente alarma sonará",
"app_bellmain_home_screen_bottom_desc_in": "en",
"app_bell_alarm_deactivated": "Alarma desactivada",
- "app_bell_turn_off_question": "¿Apagar el aparato?",
+ "app_bell_turn_off_question": "¿Apagar Mudita Harmony?",
"app_bell_goodbye": "Adiós",
"app_bell_settings_time_units_time_fmt_top_message": "Formato de hora",
"app_bell_settings_time_units_time_message": "Hora",
"app_bell_settings_advanced_temp_scale": "Escala de temperatura",
"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_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_bellmain_home_screen_bottom_desc_dp": "Presionar a fondo para activar",
"app_bellmain_alarm": "Alarma",
"app_bellmain_power_nap": "Siesta",
- "app_bellmain_meditation_timer": "Temporizador de meditación",
+ "app_bellmain_meditation_timer": "Meditación",
"app_bellmain_background_sounds": "Sonidos de fondo",
"app_bellmain_bedtime": "Hora de dormir",
"app_bellmain_settings": "Ajustes",
+ "app_bell_bedtime_notification": "Es tu hora de dormir",
"app_bell_powernap_session_ended_message": "¡Hola! Levántate y brilla",
"app_bell_background_sounds_timer_title": "Temporizador",
"app_bell_background_sounds_timer_off": "OFF",
"app_bell_settings_home_view": "Vista de inicio",
"app_bell_settings_alarm_settings": "Ajustes de alarma",
- "app_bell_settings_bedtime_tone": "Tono de Hora de dormir",
- "app_bell_settings_bedtime_settings_tone": "Tono de Hora de dormir",
- "app_bell_settings_bedtime_settings_volume": "<text>Volumen de Hora<br />de dormir</text>",
+ "app_bell_settings_alarm_settings_title": "Ajustes de alarma",
+ "app_bell_settings_bedtime_tone": "Hora de dormir",
+ "app_bell_settings_bedtime_settings_tone": "Hora de dormir",
+ "app_bell_settings_bedtime_settings_volume": "Volumen",
"app_bell_settings_advanced": "Avanzados",
"app_bell_settings_turn_off": "Apagar",
"app_bell_settings_advanced_time_units": "Hora y unidades",
"app_bell_settings_advanced_language": "Idioma",
- "app_bell_settings_advanced_about": "Sobre el dispositivo",
+ "app_bell_settings_advanced_about": "Información",
"app_bell_settings_advanced_about_product": "Mudita Harmony",
"app_bell_settings_advanced_about_version": "<text>Versión del SO: <token>$VERSION</token></text>",
"app_bell_settings_advanced_about_storage_title": "Almacenamiento",
"app_bell_settings_advanced_about_storage_text": "<text>Usados <token>$USED_MEMORY</token>MB de <token>$TOTAL_MEMORY</token>MB</text>",
- "app_bell_settings_advanced_about_info_title": "Manual e información de la certificación",
+ "app_bell_settings_advanced_about_info_title": "Manual y certificación",
"app_bell_settings_advanced_about_info_text": "www.mudita.com",
"app_bell_settings_advanced_frontlight": "Luz frontal",
"app_bell_settings_alarm_settings_prewake_up": "Despertar gradual",
- "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Timbre de Antes de despertar",
+ "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Despertar gradualmente",
"app_bell_settings_alarm_settings_prewake_up_chime_bottom_description": "antes de la alarma",
- "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Tono del timbre de Antes de despertar",
- "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Volumen del timbre de Antes de despertar",
- "app_bell_settings_alarm_settings_prewake_up_light_top_description": "Luz de Antes de despertar",
+ "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Tono",
+ "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Volumen",
+ "app_bell_settings_alarm_settings_prewake_up_light_top_description": "Luz",
"app_bell_settings_alarm_settings_prewake_up_light_bottom_description": "antes de la alarma",
- "app_bell_settings_alarm_settings_prewake_up_finished": "El Antes de despertar está programado",
- "app_bell_settings_alarm_settings_alarm_tone_and_light": "Tono y luz de alarma",
+ "app_bell_settings_alarm_settings_alarm_tone_and_light": "Alarma principal",
"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_alarm_tone_and_light_finished": "El tono y la luz de alarma están programados",
- "app_bell_settings_alarm_settings_snooze": "Repetición",
+ "app_bell_settings_alarm_settings_snooze": "Posponer",
"app_bell_settings_alarm_settings_snooze_length": "Duración de Repetición",
- "app_bell_settings_alarm_settings_snooze_chime_interval": "Intervalo del timbre de Repetición",
- "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "recurrente durante Repetición",
- "app_bell_settings_alarm_settings_snooze_chime_tone": "Tono del timbre de Repetición",
- "app_bell_settings_alarm_settings_snooze_chime_volume": "Volumen del timbre de Repetición",
- "app_bell_settings_alarm_settings_snooze_finished": "La Repetición está programada",
+ "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_tone": "Tono",
+ "app_bell_settings_alarm_settings_snooze_chime_volume": "Volumen",
"app_bell_settings_frontlight_mode_top_message": "Modo de luz frontal",
"app_bell_settings_frontlight_mode_auto": "automático",
- "app_bell_settings_frontlight_mode_on_demand": "a pedido",
+ "app_bell_settings_frontlight_mode_on_demand": "manual",
"app_bell_settings_frontlight_top_message": "Intensidad de luz frontal",
- "app_bell_settings_frontlight_finished_message": "La luz frontal está programada",
- "app_bell_settings_advanced_language_set": "El idioma está programado",
- "app_bell_settings_time_units_finished_message": "La hora y las unidades están programadas",
"app_bell_greeting_msg": "¡Hola! Levántate y brilla",
- "app_bell_settings_advanced_factory_reset": "Restablecimiento de fábrica",
- "app_bell_settings_display_factory_reset_confirmation": "<text>¿Restablecer la configuración<br></br>de fábrica ?</text>"
+ "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_meditation_timer": "Meditación",
+ "app_bell_meditation_interval_chime": "Timbre de intervalo",
+ "app_bell_meditation_progress": "Temporizador de 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_thank_you_for_session": "<text>Gracias<br>por la sesión</text>"
}
M image/assets/lang/Francais.json => image/assets/lang/Francais.json +43 -35
@@ 568,8 568,10 @@
"tethering_phone_mode_change_prohibited": "<text>Le partage de connexion est activé.<br /><br />Ce mode-ci remplace et désactive les autres modes<br />(Connecté, NPD, Hors ligne)</text>",
"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": "Minuterie pour méditation",
+ "app_bellmain_meditation_timer": "Méditation",
"app_bellmain_media_library": "Media Library",
+ "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",
@@ 577,23 579,28 @@
"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 du temps",
- "app_bell_settings_time_units_time_message": "Temps",
+ "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_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>",
+ "app_bell_onboarding_info_deep_click_warning": "<text font='gt_pressura' weight='light' size='38'>Vous avez </text><text font='gt_pressura' weight='regular' size='38'>appuyé fort</text>",
+ "app_bell_onboarding_info_deep_click_correction": "<text font='gt_pressura' weight='light' size='38'>Soyez plus doux, <br></br>essayez </text><text font='gt_pressura' weight='regular' size='38'>de cliquer plus </text><text font='gt_pressura' weight='light' size='38'>légèrement cette fois</text>",
"app_bellmain_home_screen_bottom_desc_dp": "Appuyer fort pour activer",
"app_bellmain_alarm": "Alarme",
"app_bellmain_background_sounds": "Bruits de fond",
- "app_bellmain_bedtime": "Heure du coucher",
- "app_bell_alarm_set_not_active": "Alarme activée. Appuyer fort pour activer.",
+ "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_background_sounds_timer_title": "Minuterie",
- "app_bell_background_sounds_timer_off": "DÉSACTIVÉ",
- "app_bell_settings_home_view": "Vue d'accueil",
- "app_bell_settings_alarm_settings": "Paramètres de l'alarme",
- "app_bell_settings_bedtime_tone": "Mélodie de l'heure du coucher",
+ "app_bell_background_sounds_timer_off": "OFF",
+ "app_bell_settings_home_view": "Écran d'accueil",
+ "app_bell_settings_alarm_settings": "Alarme",
+ "app_bell_settings_alarm_settings_title": "Alarme",
+ "app_bell_settings_bedtime_tone": "Heure du coucher",
"app_bell_settings_bedtime_settings_tone": "Mélodie de l'heure du coucher",
- "app_bell_settings_bedtime_settings_volume": "<text>Volume de l'heure<br />du coucher</text>",
+ "app_bell_settings_bedtime_settings_volume": "Volume",
"app_bell_settings_advanced": "Avancé",
"app_bell_settings_turn_off": "Éteindre",
"app_bell_settings_advanced_time_units": "Temps et unités",
@@ 603,37 610,38 @@
"app_bell_settings_advanced_about_version": "<text>Version du système d'exploitation: <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 informations sur la certification",
+ "app_bell_settings_advanced_about_info_title": "Manuel et certification",
"app_bell_settings_advanced_about_info_text": "www.mudita.com",
- "app_bell_settings_advanced_frontlight": "Lumière avant",
+ "app_bell_settings_advanced_frontlight": "Lumière",
"app_bell_settings_alarm_settings_prewake_up": "Pré-réveil",
- "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Carillon de pré-réveil",
+ "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Pré-réveil",
"app_bell_settings_alarm_settings_prewake_up_chime_bottom_description": "avant l'alarme",
- "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Mélodie du carillon de pré-réveil",
- "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Volume du carillon de pré-réveil",
+ "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Mélodie de pré-réveil",
+ "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_prewake_up_finished": "Le pré-réveil est activé",
"app_bell_settings_alarm_settings_alarm_tone_and_light": "Mélodie et lumière de l’alarme",
- "app_bell_settings_alarm_settings_tone": "Mélodie de l’alarme",
- "app_bell_settings_alarm_settings_volume": "Volume de l’alarme",
- "app_bell_settings_alarm_settings_light": "Lumière de l’alarme",
- "app_bell_settings_alarm_settings_alarm_tone_and_light_finished": "La sonnerie et la lumière de l’alarme sont définies.",
- "app_bell_settings_alarm_settings_snooze": "Rappel de sonnerie",
- "app_bell_settings_alarm_settings_snooze_length": "Longueur du rappel de sonnerie",
- "app_bell_settings_alarm_settings_snooze_chime_interval": "Intervalle du rappel de sonnerie",
- "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "récurrent pendant le rappel de sonnerie",
- "app_bell_settings_alarm_settings_snooze_chime_tone": "Mélodie du rappel de sonnerie",
- "app_bell_settings_alarm_settings_snooze_chime_volume": "Volume du rappel de sonnerie",
- "app_bell_settings_alarm_settings_snooze_finished": "Le rappel de sonnerie est activé",
- "app_bell_settings_frontlight_mode_top_message": "Mode de la lumière avant",
+ "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",
+ "app_bell_settings_alarm_settings_snooze": "Snooze",
+ "app_bell_settings_alarm_settings_snooze_length": "Durée du snooze",
+ "app_bell_settings_alarm_settings_snooze_chime_interval": "Intervalle de rappel",
+ "app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc": "pendant le snooze",
+ "app_bell_settings_alarm_settings_snooze_chime_tone": "Mélodie",
+ "app_bell_settings_alarm_settings_snooze_chime_volume": "Volume",
+ "app_bell_settings_frontlight_mode_top_message": "Mode",
"app_bell_settings_frontlight_mode_auto": "automatique",
- "app_bell_settings_frontlight_mode_on_demand": "à la demande",
- "app_bell_settings_frontlight_top_message": "Intensité de la lumière avant",
- "app_bell_settings_frontlight_finished_message": "La lumière avant est activée",
- "app_bell_settings_advanced_language_set": "La langue est définie",
- "app_bell_settings_time_units_finished_message": "Le temps et les unités sont définis",
+ "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_settings_advanced_factory_reset": "Rétablissement de la configuration d'usine",
- "app_bell_settings_display_factory_reset_confirmation": "<text>Rétablir la configuration<br></br>d'usine ?</text>"
+ "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_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>"
}
M image/assets/lang/Polski.json => image/assets/lang/Polski.json +49 -41
@@ 114,21 114,25 @@
"app_alarm_clock_snooze_5_min": "5 min",
"app_alarm_clock_snooze_10_min": "10 min",
"app_alarm_clock_snooze_15_min": "15 min",
- "app_alarm_clock_snooze_30_min": "30 min",
- "app_alarm_clock_play_pause": "ODTWARZAJ/ZATRZYMAJ",
- "app_calendar_title_main": "Kalendarz",
- "app_calendar_options_edit": "Edytuj",
- "app_calendar_options_delete": "Usuń",
- "app_calendar_event_delete_confirmation": "Usunąć to wydarzenie?",
- "app_calendar_bar_month": "MIESIĄC",
- "app_calendar_bar_list": "LISTA",
- "app_calendar_event_detail": "Wydarzenie",
- "app_calendar_event_detail_repeat": "Powtarzaj",
- "app_calendar_event_detail_reminder": "Przypomnienie",
- "app_calendar_no_events_information": "<text align='center' color='5'>Nie ma jeszcze żadnych wydarzeń.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowe.</p></text>",
- "app_calendar_repeat_never": "Nigdy",
- "app_calendar_repeat_daily": "Codziennie",
- "app_calendar_repeat_weekly": "Co tydzień",
+ "common_paused": "Pauza",
+ "locale_12hour_min": "%I:%M %p",
+ "locale_12hour_min_short": "%I:%M",
+ "locale_24hour_min": "%H:%M",
+ "locale_date_full": "%d.%m.%Y",
+ "locale_date_short": "%d.%m",
+ "common_AM": "AM",
+ "common_PM": "PM",
+ "duration_min_0sec": "%M:%0S",
+ "duration_0min_0sec": "%0M:%0S",
+ "duration_0hmin_0sec": "%0N:%0S",
+ "duration_hour_0min_0sec": "%H:%0M:%0S",
+ "brightness_text": "JASNOŚĆ",
+ "phone_needs_rebooting": "Twój telefon musi zostać ponownie uruchomiony. Wciśnij dowolny przycisk, aby potwierdzić, a następnie wyjmij baterię na 10 sekund, by przeprowadzić pełny reset.",
+ "home_modes_connected": "POŁĄCZONY",
+ "home_modes_notdisturb": "NIE PRZESZKADZAĆ",
+ "home_modes_offline": "OFFLINE",
+ "home_modes_message_only": "Tylko wiadomości",
+ "statusbar_battery_charging": "Ładowanie",
"app_calendar_repeat_two_weeks": "Co dwa tygodnie",
"app_calendar_repeat_month": "Co miesiąc",
"app_calendar_repeat_year": "Co rok",
@@ 607,76 611,80 @@
"tethering_menu_access_decline": "<text>Tethering włączony.<br /><br />Aby przejść do menu,<br />wyłącz tethering.</text>",
"app_bell_settings_time_units_time_fmt_top_message": "Format czasu",
"app_bell_settings_time_units_time_message": "Czas",
- "app_bell_settings_time_units_finished_message": "Czas i jednostki ustawione.",
"app_bellmain_alarm": "Alarm",
"app_bellmain_bedtime": "Pora snu",
- "app_bell_bedtime_set_finished": "<text>Pora snu<br />ustawiona</text>",
"app_bell_bedtime_notification": "Pora na sen",
"app_bellmain_power_nap": "Drzemka",
"app_bellmain_meditation_timer": "Medytacja",
"app_bellmain_background_sounds": "Biblioteka",
"app_bellmain_settings": "Ustawienia",
- "app_bellmain_main_window_title": "Bell Hybrid+",
+ "app_bellmain_main_window_title": "Mudita Harmony",
"app_bell_onboarding_finalize": "Dobra robota!",
+ "app_bell_onboarding_welcome_message": "Mudita Harmony",
+ "app_bell_onboarding_info_rotate": "<text font='gt_pressura' weight='regular' size='38'>Obróć, </text><text font='gt_pressura' weight='light' size='38'>aby wybrać</text>",
+ "app_bell_onboarding_info_light_click": "<text font='gt_pressura' weight='regular' size='38'>Kliknij lekko, </text><text font='gt_pressura' weight='light' size='38'>aby kontynuować</text>",
+ "app_bell_onboarding_info_deep_click_warning": "<text font='gt_pressura' weight='light' size='38'>Głęboko </text><text font='gt_pressura' weight='regular' size='38'>wciśnięty</text>",
+ "app_bell_onboarding_info_deep_click_correction": "<text font='gt_pressura' weight='light' size='38'>Bądź bardziej delikatny, <br></br>spróbuj </text><text font='gt_pressura' weight='regular' size='38'>tym razem </text><text font='gt_pressura' weight='light' size='38'>lekko kliknąć</text>",
"app_bell_settings_advanced": "Zaawansowane",
"app_bell_settings_advanced_time_units": "Czas i jednostki",
"app_bell_settings_advanced_temp_scale": "Skala temperatury",
- "app_bell_settings_alarm_settings": "Alarmy",
- "app_bell_settings_alarm_settings_alarm_tone_and_light": "Dźwięk i światło alarmu",
- "app_bell_settings_bedtime_tone": "Dźwięk przed snem",
- "app_bell_settings_bedtime_settings_tone": "Dźwięk przed snem",
- "app_bell_settings_bedtime_settings_volume": "<text>Głośność przed<br />snem</text>",
- "app_bell_settings_bedtime_tone_finished": "Dźwięk ustawiony",
+ "app_bell_settings_alarm_settings": "Alarm",
+ "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_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_finished": "Ustawiono drzemkę",
"app_bell_settings_alarm_settings_snooze_length": "Długość drzemki",
- "app_bell_settings_alarm_settings_snooze_chime_interval": "Interwał dzwonka drzemki",
+ "app_bell_settings_alarm_settings_snooze_chime_interval": "Interwał dźwięku wybudzania",
"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 dzwonka drzemki",
- "app_bell_settings_alarm_settings_snooze_chime_volume": "Głośność dzwonka 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_bellmain_home_screen_bottom_desc_in": "za",
"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_finished_message": "Ustawiono podświetlenie",
"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_powernap_session_ended_message": "<text>Witaj!<br />Pobudka</text>",
+ "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_background_sounds_timer_off": "Wyłączony",
- "app_bell_settings_alarm_settings_prewake_up": "Wybudzanie",
- "app_bell_settings_alarm_settings_prewake_up_chime_top_description": "Dzwonek wstępnego budzenia",
+ "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_bottom_description": "przed alarmem",
- "app_bell_settings_alarm_settings_prewake_up_chime_tone": "Dźwięk dzwonka wstępnego budzenia",
- "app_bell_settings_alarm_settings_prewake_up_chime_volume": "Głośność dzwonka wstępnego budzenia",
+ "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_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_prewake_up_finished": "Ustawiono wstępne budzenie",
"app_bell_settings_alarm_settings_tone": "Dźwięk alarmu",
"app_bell_settings_alarm_settings_volume": "Głośność alarmu",
"app_bell_settings_alarm_settings_light": "Światło alarmu",
- "app_bell_settings_alarm_settings_alarm_tone_and_light_finished": "Ustawiono dźwięk i światło alarmu",
- "app_bell_turn_off_question": "Wyłączyć urządzenie?",
+ "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_language_set": "Ustawiono 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_factory_reset_finished": "Ustawienia fabryczne\nprzywrócone",
- "app_bell_settings_advanced_about": "Informacje",
+ "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>",
"app_bell_settings_advanced_about_storage_title": "Pamięć",
"app_bell_settings_advanced_about_storage_text": "<text>Zużyto <token>$USED_MEMORY</token>MB z <token>$TOTAL_MEMORY</token>MB</text>",
"app_bell_settings_advanced_about_info_title": "Instrukcja i informacje dot. certyfikacji",
- "app_bell_settings_advanced_about_info_text": "www.mudita.com"
+ "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_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>"
}
M module-bsp/board/linux/usb_cdc/usb_cdc.cpp => module-bsp/board/linux/usb_cdc/usb_cdc.cpp +3 -0
@@ 220,4 220,7 @@ namespace bsp
return 0;
}
+
+ void usbHandleDataReceived()
+ {}
} // namespace bsp
M module-bsp/board/rt1051/bellpx/hal/battery_charger/BatteryCharger.cpp => module-bsp/board/rt1051/bellpx/hal/battery_charger/BatteryCharger.cpp +1 -1
@@ 16,8 16,8 @@ namespace hal::battery
void BatteryCharger::init(xQueueHandle queueBatteryHandle, xQueueHandle)
{
- bsp::battery_charger::init(queueBatteryHandle);
bsp::fuel_gauge::init(queueBatteryHandle);
+ bsp::battery_charger::init(queueBatteryHandle);
Store::Battery::modify().state = Store::Battery::State::Discharging;
Store::Battery::modify().level = static_cast<unsigned int>(bsp::fuel_gauge::getBatteryLevel());
M module-bsp/bsp/usb/usb.hpp => module-bsp/bsp/usb/usb.hpp +3 -1
@@ 26,7 26,8 @@ namespace bsp
{
Disconnected,
Connected,
- Configured
+ Configured,
+ DataReceived,
};
struct usbInitParams
@@ 43,5 44,6 @@ namespace bsp
void usbDeinit();
void usbReinit(const char *mtpRoot);
void usbSuspend();
+ void usbHandleDataReceived();
} // namespace bsp
M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +6 -1
@@ 148,6 148,7 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
usbSuspendTimer.stop();
ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBConnected>(),
service::name::service_desktop);
+ usbStatus = bsp::USBDeviceStatus::Connected;
}
else if (notification == bsp::USBDeviceStatus::Configured) {
cpuSentinel->HoldMinimumFrequency(bsp::CpuFrequencyHz::Level_4);
@@ 161,14 162,18 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
sdesktop::usb::USBConfigurationType::reconfiguration),
service::name::service_desktop);
}
+ usbStatus = bsp::USBDeviceStatus::Configured;
}
else if (notification == bsp::USBDeviceStatus::Disconnected) {
usbSuspendTimer.start();
cpuSentinel->ReleaseMinimumFrequency();
ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBDisconnected>(),
service::name::service_desktop);
+ usbStatus = bsp::USBDeviceStatus::Disconnected;
+ }
+ else if (notification == bsp::USBDeviceStatus::DataReceived) {
+ bsp::usbHandleDataReceived();
}
- usbStatus = notification;
}
else {
LOG_INFO("handeMessage got message on an unhandled queue");
M module-vfs/README.md => module-vfs/README.md +20 -15
@@ 1,39 1,44 @@
-vfs for PurePhone
+Virtual File System for PurePhone
-----------------
# What does this module provide?
-We use POSIX calls wrapper to have proper filesystem experience.
+We use POSIX calls wrapper to have proper filesystem experience and it supports C++17 filesystem library.
# File systems in use
-Right now we are able to use 2 file systems
+Right now we are able to use 3 file systems:
+
- FAT-FS
+- Ext4 with 32 bit inodes.
- LittleFS
+Curently only the FAT and EXT4 filesystems are used on the mass storage media.
+
# PurePhone partitions
-PurePhone has 3 flash partitions:
-1. for update and backup
-2. FAT for phone data
-3. LittleFS for user data
+PurePhone uses old MBR partitioning scheme and it has 3 flash partitions:
-LittleFS partition is needed to assert minimal to possibly no data loss in unexpected shutdown
+1. FAT for the phone firmware (**ReadOnly**)
+2. EXT4 for the backup data
+2. EXT4 for the user data
-# how to use PurePhone partitions
+EXT4 partition is needed to assert minimal to possibly no data loss in unexpected shutdown
+LFS can be used as an alternative user partition. Currently it is not used by the MuditaOS except internal EEPROM memory.
-Pure phone on reboot on option 4 will present itself with 3 partitions via USB, the first two should be auto mount.
+# how to use PurePhone partitions
-## mounting FAT-FS partitions
+Pure phone on reboot on option 9 will present itself with 3 partitions via USB, all partitions should be automount.
+## mounting FAT-FS and EXT4 partitions
-1. check which devices are PurePhone block devices ie with: `dmesg` or `lsblk`
+1. check which devices are **PurePhone** block devices ie with: `dmesg` or `lsblk`
2. mount them with i.e `udisksctl mount -b /dev/sdbX` where X is number of block device
## mounting LittleFS partitions
For LittleFS you will have to use fuse to mount partition. Tool is already build with release and is ready to use:
+
1. Prepare mount point i.e. create catalog `mkdir mymount`
-2. Mount: `./lfsfuse --block_size=32768 /dev/sdb3 mymount` where sdb3 is device where you expect Pure LittleFS partition
-3. Enter here and play with user data
+2. Mount: `./lfsfuse --block_size=32768 /dev/sdX mymount` where sdbx is device where you expect LFS partition
+3. Enter here and play with data
4. Umount and eject the device i.e. with: `udisksctl power-off -b /dev/sdb`
-5. Phone will reboot with changed data
M module-vfs/drivers/include/purefs/fs/drivers/file_handle_ext4.hpp => module-vfs/drivers/include/purefs/fs/drivers/file_handle_ext4.hpp +1 -1
@@ 19,7 19,7 @@ namespace purefs::fs::drivers
{
return &m_file;
}
- [[nodiscard]] auto open_path() const noexcept -> const std::string &
+ [[nodiscard]] auto open_path() const noexcept -> std::string override
{
return m_path;
}
M module-vfs/drivers/include/purefs/fs/drivers/file_handle_littlefs.hpp => module-vfs/drivers/include/purefs/fs/drivers/file_handle_littlefs.hpp +1 -1
@@ 19,7 19,7 @@ namespace purefs::fs::drivers
{
return &file;
}
- [[nodiscard]] auto open_path() const noexcept -> const std::string &
+ [[nodiscard]] auto open_path() const noexcept -> std::string override
{
return m_path;
}
M module-vfs/drivers/include/purefs/fs/drivers/file_handle_vfat.hpp => module-vfs/drivers/include/purefs/fs/drivers/file_handle_vfat.hpp +1 -1
@@ 20,7 20,7 @@ namespace purefs::fs::drivers
{
return &m_fil;
}
- auto open_path() const noexcept -> const std::string &
+ auto open_path() const noexcept -> std::string override
{
return m_path;
}
M module-vfs/drivers/src/purefs/fs/filesystem_ext4.cpp => module-vfs/drivers/src/purefs/fs/filesystem_ext4.cpp +3 -2
@@ 1,6 1,7 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+#include <memory>
#include <purefs/fs/drivers/filesystem_ext4.hpp>
#include <purefs/fs/drivers/mount_point_ext4.hpp>
#include <purefs/blkdev/disk_manager.hpp>
@@ 45,7 46,7 @@ namespace purefs::fs::drivers
template <typename T>
auto invoke_efs(filesystem_ext4::fsmount mnt, T efs_fun, std::string_view oldpath, std::string_view newpath)
{
- auto mntp = std::static_pointer_cast<mount_point_ext4>(mnt);
+ auto mntp = std::dynamic_pointer_cast<mount_point_ext4>(mnt);
if (!mntp) {
LOG_ERROR("Non ext4 mount point");
return -EBADF;
@@ 59,7 60,7 @@ namespace purefs::fs::drivers
template <typename T, typename... Args>
auto invoke_efs(filesystem_ext4::fsmount fmnt, T efs_fun, std::string_view path, Args &&...args)
{
- auto mntp = std::static_pointer_cast<mount_point_ext4>(fmnt);
+ auto mntp = std::dynamic_pointer_cast<mount_point_ext4>(fmnt);
if (!mntp) {
LOG_ERROR("Non ext4 mount point");
return -EBADF;
M module-vfs/include/user/purefs/fs/file_handle.hpp => module-vfs/include/user/purefs/fs/file_handle.hpp +5 -0
@@ 4,6 4,7 @@
#pragma once
#include <memory>
+#include <string>
namespace purefs::fs::internal
{
@@ 33,6 34,10 @@ namespace purefs::fs::internal
{
return m_mount_point.lock();
}
+ [[nodiscard]] virtual auto open_path() const noexcept -> std::string
+ {
+ return {};
+ }
private:
const std::weak_ptr<mount_point> m_mount_point;
M module-vfs/include/user/purefs/fs/filesystem.hpp => module-vfs/include/user/purefs/fs/filesystem.hpp +2 -0
@@ 282,6 282,8 @@ namespace purefs::fs
}
}
}
+ auto cleanup_opened_files(std::string_view mount_point) -> void;
+
private:
std::weak_ptr<blkdev::disk_manager> m_diskmm;
std::unordered_map<std::string, std::shared_ptr<filesystem_operations>> m_fstypes;
M module-vfs/include/user/purefs/fs/handle_mapper.hpp => module-vfs/include/user/purefs/fs/handle_mapper.hpp +1 -0
@@ 21,6 21,7 @@ namespace purefs::fs::internal
void remove(std::size_t index)
{
unused.push_back(index);
+ data[index] = {};
}
bool exists(std::size_t index) const
{
M module-vfs/src/purefs/fs/filesystem.cpp => module-vfs/src/purefs/fs/filesystem.cpp +33 -0
@@ 19,6 19,19 @@ namespace purefs::fs
{
constexpr std::pair<short, std::string_view> part_types_to_vfs[] = {
{0x0b, "vfat"}, {0x9e, "littlefs"}, {0x83, "ext4"}};
+
+ auto compare_mount_points(std::string_view path1, std::string_view path2)
+ {
+ std::string spath1{path1};
+ std::string spath2{path2};
+ if (spath1.back() == '/') {
+ spath1.pop_back();
+ }
+ if (spath2.back() == '/') {
+ spath2.pop_back();
+ }
+ return spath1 == spath2;
+ }
}
filesystem::filesystem(std::shared_ptr<blkdev::disk_manager> diskmm)
: m_diskmm(diskmm), m_lock(std::make_unique<cpp_freertos::MutexRecursive>()),
@@ 159,6 172,9 @@ namespace purefs::fs
LOG_ERROR("Unable to lock filesystem operation");
return -EIO;
}
+
+ cleanup_opened_files(mount_point);
+
const auto diskh = mnti->second->disk();
const auto umnt_ret = fsops->umount(mnti->second);
if (umnt_ret) {
@@ 315,4 331,21 @@ namespace purefs::fs
return std::make_shared<inotify>(svc, m_notifier);
}
+ auto filesystem::cleanup_opened_files(std::string_view mount_point) -> void
+ {
+ LOG_INFO("Closing opened files on mntpoint: %s before umount.", std::string(mount_point).c_str());
+ for (auto fd = 0U; fd < m_fds.size(); ++fd) {
+ const auto filp = m_fds[fd];
+ if (!filp)
+ continue;
+ const auto mp = filp->mntpoint();
+ if (!mp)
+ continue;
+ if (compare_mount_points(mp->mount_path(), mount_point)) {
+ const auto err = close(fd + first_file_descriptor);
+ LOG_WARN("Emergency closing: %s result: %i.", filp->open_path().c_str(), err);
+ }
+ }
+ }
+
} // namespace purefs::fs
M products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp => products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp +43 -0
@@ 19,6 19,8 @@
#include <common/windows/BellFactoryReset.hpp>
#include <service-db/DBNotificationMessage.hpp>
#include <windows/Dialog.hpp>
+#include <service-appmgr/Controller.hpp>
+#include <system/messages/SystemManagerMessage.hpp>
#include <common/popups/BedtimeNotificationWindow.hpp>
namespace app
@@ 41,6 43,17 @@ namespace app
switchWindow(gui::BellWelcomeWindow::defaultName);
return actionHandled();
});
+
+ addActionReceiver(app::manager::actions::SystemBrownout, [this](auto &&data) {
+ setSystemCloseInProgress();
+ switchWindow(gui::window::name::bell_battery_shutdown, std::move(data));
+ return actionHandled();
+ });
+
+ addActionReceiver(app::manager::actions::DisplayLowBatteryScreen, [this](auto &&data) {
+ handleLowBatteryNotification(std::move(data));
+ return actionHandled();
+ });
}
sys::ReturnCodes ApplicationBellMain::InitHandler()
@@ 70,10 83,12 @@ namespace app
windowsFactory.attach(gui::window::name::bell_main_menu, [](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::BellMainMenuWindow>(app);
});
+
windowsFactory.attach(gui::window::name::bell_battery_shutdown,
[](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::BellBatteryShutdownWindow>(app);
});
+
windowsFactory.attach(gui::BellFactoryReset::name, [](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::BellFactoryReset>(app, std::make_unique<gui::BellPowerOffPresenter>(app));
});
@@ 147,4 162,32 @@ namespace app
}
return ApplicationCommon::handleSwitchWindow(msgl);
}
+
+ bool ApplicationBellMain::isPopupPermitted([[maybe_unused]] gui::popup::ID popupId) const
+ {
+ if (blockAllPopups) {
+ return false;
+ }
+ return true;
+ }
+
+ void ApplicationBellMain::handleLowBatteryNotification(manager::actions::ActionParamsPtr &&data)
+ {
+ auto lowBatteryState = static_cast<manager::actions::LowBatteryNotificationParams *>(data.get());
+ auto currentWindow = getCurrentWindow();
+ if (currentWindow->getName() == gui::window::name::bell_battery_shutdown) {
+ data->ignoreCurrentWindowOnStack = true;
+ }
+
+ if (lowBatteryState->isActive()) {
+ blockAllPopups = true;
+ switchWindow(gui::window::name::bell_battery_shutdown, std::move(data));
+ }
+ else {
+ blockAllPopups = false;
+ if (currentWindow->getName() == gui::window::name::bell_battery_shutdown) {
+ app::manager::Controller::sendAction(this, app::manager::actions::Home, std::move(data));
+ }
+ }
+ }
} // namespace app
M products/BellHybrid/apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp => products/BellHybrid/apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp +9 -2
@@ 11,7 11,6 @@ namespace gui::window::name
inline constexpr auto bell_main_menu = "BellMainMenu";
inline constexpr auto bell_main_menu_dialog = "BellMainMenuDialog";
inline constexpr auto bell_battery_shutdown = "BellBatteryShutdown";
-
} // namespace gui::window::name
namespace app
@@ 41,17 40,25 @@ namespace app
}
private:
+ bool blockAllPopups = false;
+
+ bool isPopupPermitted([[maybe_unused]] gui::popup::ID popupId) const;
void showPopup(gui::popup::ID id, const gui::PopupRequestParams *params) override;
auto isHomeScreenFocused() -> bool;
void onStart() override;
sys::MessagePointer handleSwitchWindow(sys::Message *msgl) override;
+ void handleLowBatteryNotification(manager::actions::ActionParamsPtr &&data);
};
template <> struct ManifestTraits<ApplicationBellMain>
{
static auto GetManifest() -> manager::ApplicationManifest
{
- return {{manager::actions::Launch, manager::actions::ShowAlarm, manager::actions::DisplayLogoAtExit}};
+ return {{manager::actions::Launch,
+ manager::actions::ShowAlarm,
+ manager::actions::DisplayLogoAtExit,
+ manager::actions::DisplayLowBatteryScreen,
+ manager::actions::SystemBrownout}};
}
};
} // namespace app
M products/BellHybrid/apps/application-bell-main/widgets/BellBattery.cpp => products/BellHybrid/apps/application-bell-main/widgets/BellBattery.cpp +2 -1
@@ 8,7 8,8 @@
namespace
{
constexpr auto entries =
- std::array<battery_utils::BatteryLevelEntry, 6>{{{{5, 10}, {1, 5}, "bell_battery_empty"},
+ std::array<battery_utils::BatteryLevelEntry, 7>{{{{0, 5}, {1, 1}, "bell_battery_empty"},
+ {{5, 10}, {1, 5}, "bell_battery_empty"},
{{11, 30}, {6, 29}, "bell_battery_lvl1"},
{{31, 50}, {30, 53}, "bell_battery_lvl2"},
{{51, 70}, {54, 77}, "bell_battery_lvl3"},
M products/BellHybrid/apps/application-bell-main/windows/BellBatteryStatusWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellBatteryStatusWindow.cpp +2 -1
@@ 15,7 15,8 @@ namespace
{
constexpr auto imageType = gui::ImageTypeSpecifier::W_G;
constexpr auto batteryEntries =
- std::array<battery_utils::BatteryLevelEntry, 6>{{{{5, 10}, {1, 5}, "bell_status_battery_lvl0"},
+ std::array<battery_utils::BatteryLevelEntry, 7>{{{{0, 5}, {1, 1}, "bell_status_battery_lvl0"},
+ {{5, 10}, {1, 5}, "bell_status_battery_lvl0"},
{{11, 30}, {6, 29}, "bell_status_battery_lvl1"},
{{31, 50}, {30, 53}, "bell_status_battery_lvl2"},
{{51, 70}, {54, 77}, "bell_status_battery_lvl3"},
M products/BellHybrid/apps/application-bell-meditation-timer/ApplicationBellMeditationTimer.cpp => products/BellHybrid/apps/application-bell-meditation-timer/ApplicationBellMeditationTimer.cpp +5 -5
@@ 6,10 6,10 @@
#include "windows/MeditationRunningWindow.hpp"
#include "windows/MeditationTimerWindow.hpp"
#include "windows/ReadyGoingWindow.hpp"
-#include "windows/SessionEndWindow.hpp"
#include "windows/SessionPausedWindow.hpp"
#include <common/models/TimeModel.hpp>
+#include <common/windows/BellFinishedWindow.hpp>
namespace app
{
@@ 60,10 60,10 @@ namespace app
windowsFactory.attach(gui::name::window::sessionPaused, [](ApplicationCommon *app, const std::string &name) {
return std::make_unique<gui::SessionPausedWindow>(app);
});
- windowsFactory.attach(gui::name::window::sessionEnded, [](ApplicationCommon *app, const std::string &name) {
- auto presenter = std::make_unique<app::meditation::SessionEndedPresenter>(app);
- return std::make_unique<gui::SessionEndWindow>(app, std::move(presenter));
- });
+ windowsFactory.attach(gui::window::bell_finished::defaultName,
+ [](ApplicationCommon *app, const std::string &name) {
+ return std::make_unique<gui::BellFinishedWindow>(app);
+ });
attachPopups({gui::popup::ID::AlarmActivated,
gui::popup::ID::AlarmDeactivated,
M products/BellHybrid/apps/application-bell-meditation-timer/CMakeLists.txt => products/BellHybrid/apps/application-bell-meditation-timer/CMakeLists.txt +0 -1
@@ 28,7 28,6 @@ target_sources(application-bell-meditation-timer
windows/MeditationRunningWindow.cpp
windows/MeditationTimerWindow.cpp
windows/ReadyGoingWindow.cpp
- windows/SessionEndWindow.cpp
windows/SessionPausedWindow.cpp
PUBLIC
include/application-bell-meditation-timer/ApplicationBellMeditationTimer.hpp
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/IntervalChimePresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/IntervalChimePresenter.cpp +16 -6
@@ 10,6 10,8 @@
namespace app::meditation
{
+ constexpr auto intervalsList = {1, 2, 5, 10, 15, 30};
+
IntervalChimePresenter::IntervalChimePresenter(app::ApplicationCommon *app, settings::Settings *settings)
: app{app}, settings{settings}
{
@@ 68,12 70,20 @@ namespace app::meditation
void IntervalChimePresenter::initIntervalOptions()
{
intervalOptions.push_back({std::chrono::minutes{0}, utils::translate("app_bell_meditation_interval_none")});
- intervalOptions.push_back({std::chrono::minutes{1}, getIntervalString(1)});
- intervalOptions.push_back({std::chrono::minutes{2}, getIntervalString(2)});
- intervalOptions.push_back({std::chrono::minutes{5}, getIntervalString(5)});
- intervalOptions.push_back({std::chrono::minutes{10}, getIntervalString(10)});
- intervalOptions.push_back({std::chrono::minutes{15}, getIntervalString(15)});
- intervalOptions.push_back({std::chrono::minutes{30}, getIntervalString(30)});
+
+ const auto duration =
+ utils::getNumericValue<int>(settings->getValue(meditationDBRecordName, settings::SettingsScope::AppLocal));
+ if (duration == 1) {
+ settings->setValue(intervalDBRecordName, utils::to_string(0), settings::SettingsScope::AppLocal);
+ app->switchWindow(gui::name::window::readyGoing);
+ return;
+ }
+
+ for (const auto &interval : intervalsList) {
+ if (interval < duration) {
+ intervalOptions.push_back({std::chrono::minutes{interval}, getIntervalString(interval)});
+ }
+ }
}
std::string IntervalChimePresenter::getIntervalString(std::uint32_t value)
M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp +3 -1
@@ 6,6 6,7 @@
#include "MeditationProgressPresenter.hpp"
#include <common/models/TimeModel.hpp>
+#include <common/windows/BellFinishedWindow.hpp>
#include <service-appmgr/Controller.hpp>
#include <service-db/Settings.hpp>
@@ 75,7 76,8 @@ namespace app::meditation
void MeditationProgressPresenter::finish()
{
timer->stop();
- app->switchWindow(gui::name::window::sessionEnded);
+ app->switchWindow(gui::window::bell_finished::defaultName,
+ gui::BellFinishedWindowData::Factory::create("big_namaste_W_G", "", "", true));
}
void MeditationProgressPresenter::onProgressFinished()
D products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionEndWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionEndWindow.cpp +0 -32
@@ 1,32 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 "ApplicationBellMeditationTimer.hpp"
-#include "SessionEndWindow.hpp"
-
-namespace gui
-{
- SessionEndWindow::SessionEndWindow(
- app::ApplicationCommon *app,
- std::shared_ptr<app::meditation::SessionEndedPresenterContract::Presenter> winPresenter)
- : BellFinishedWindow(app, gui::name::window::sessionEnded), presenter{std::move(winPresenter)}
- {
- timerCallback = [this](Item &, sys::Timer &) {
- presenter->activate();
- return true;
- };
- }
-
- bool SessionEndWindow::onInput(const InputEvent &inputEvent)
- {
- return true;
- }
-
- void SessionEndWindow::onBeforeShow(ShowMode mode, SwitchData *data)
- {
- BellFinishedWindow::onBeforeShow(mode, data);
-
- icon->image->set("big_namaste", ImageTypeSpecifier::W_G);
- icon->text->setRichText(utils::translate("app_bell_meditation_thank_you_for_session"));
- }
-} // namespace gui
D products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionEndWindow.hpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionEndWindow.hpp +0 -26
@@ 1,26 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 "SessionEndedPresenter.hpp"
-
-#include <common/windows/BellFinishedWindow.hpp>
-#include <gui/widgets/Icon.hpp>
-
-namespace gui
-{
- class SessionEndWindow : public BellFinishedWindow
- {
- private:
- std::shared_ptr<app::meditation::SessionEndedPresenterContract::Presenter> presenter;
-
- public:
- SessionEndWindow(app::ApplicationCommon *app,
- std::shared_ptr<app::meditation::SessionEndedPresenterContract::Presenter> winPresenter);
-
- // virtual methods
- bool onInput(const InputEvent &inputEvent) override;
- void onBeforeShow(ShowMode mode, SwitchData *data) override;
- };
-} // namespace gui
M products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionPausedWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/SessionPausedWindow.cpp +1 -1
@@ 39,7 39,7 @@ namespace gui
icon->image->setMargins({0, itStyle::icon::imageTopMargin, 0, itStyle::icon::imageBottomMargin});
icon->image->set(app::meditationStyle::itStyle::icon::imagePause, ImageTypeSpecifier::W_G);
icon->text->setFont(itStyle::text::font);
- icon->text->setRichText(utils::translate("app_bell_meditation_paused"));
+ icon->text->setRichText(utils::translate("common_paused"));
}
}
} // namespace gui
M products/BellHybrid/apps/application-bell-onboarding/include/application-bell-onboarding/ApplicationBellOnBoarding.hpp => products/BellHybrid/apps/application-bell-onboarding/include/application-bell-onboarding/ApplicationBellOnBoarding.hpp +1 -1
@@ 11,7 11,7 @@ namespace app::OnBoarding
/// Image name, Prompt info text
using InformationDisplay = std::pair<std::string, std::string>;
- constexpr auto informationPromptTimeout = std::chrono::seconds{5};
+ constexpr auto informationPromptTimeout = std::chrono::seconds{15};
constexpr auto informationTimerName = "OnBoardingInformationTimer";
enum class InformationStates
M => +1 -1
@@ 17,7 17,7 @@ namespace gui
: BellOptionWindow(app, name)
{
addOptions(alarmSettingsOptionsList());
setListTitle(utils::translate("app_bell_settings_alarm_settings"));
setListTitle(utils::translate("app_bell_settings_alarm_settings_title"));
}
std::list<Option> BellSettingsAlarmSettingsMenuWindow::alarmSettingsOptionsList()
M products/BellHybrid/apps/common/include/common/data/StyleCommon.hpp => products/BellHybrid/apps/common/include/common/data/StyleCommon.hpp +4 -0
@@ 12,4 12,8 @@ namespace gui::bell_style
inline constexpr auto font_center = ::style::window::font::largelight;
inline constexpr auto font_top = ::style::window::font::largelight;
inline constexpr auto statusClockFont = style::window::font::verybiglight;
+
+ inline constexpr auto popup_icon_top_margin = 120;
+ inline constexpr auto popup_icon_bottom_margin = 30;
+
} // namespace gui::bell_style
M => +4 -1
@@ 5,6 5,7 @@
#include <apps-common/popups/data/PopupRequestParams.hpp>
#include <common/popups/AlarmActivatedWindow.hpp>
#include <common/TimeUtils.hpp>
#include <common/data/StyleCommon.hpp>
#include <gui/input/InputEvent.hpp>
#include <gui/widgets/Icon.hpp>
#include <popups/Popups.hpp>
@@ 47,7 48,9 @@ namespace gui
header->setTitleVisibility(false);
navBar->setVisible(false);
icon = new Icon(this, 0, y_position, style::window_width, style::window_height, "big_alarm_W_G", {});
icon = new Icon(this, 0, 0, style::window_width, style::window_height, "big_alarm_W_G", {});
icon->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
icon->image->setMargins({0, bell_style::popup_icon_top_margin, 0, bell_style::popup_icon_bottom_margin});
icon->text->setFont(style::window::font::verybiglight);
}
M => +3 -0
@@ 5,6 5,7 @@
#include <apps-common/messages/DialogMetadataMessage.hpp>
#include <apps-common/popups/data/PopupRequestParams.hpp>
#include <apps-common/popups/Popups.hpp>
#include <common/data/StyleCommon.hpp>
#include <common/popups/AlarmDeactivatedWindow.hpp>
#include <gui/input/InputEvent.hpp>
#include <gui/widgets/Icon.hpp>
@@ 56,6 57,8 @@ namespace gui
style::window_height,
"big_no-alarm_W_G",
utils::translate("app_bell_alarm_deactivated"));
icon->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
icon->image->setMargins({0, bell_style::popup_icon_top_margin, 0, bell_style::popup_icon_bottom_margin});
icon->text->setFont(style::window::font::verybiglight);
}
M products/BellHybrid/services/appmgr/ApplicationManager.cpp => products/BellHybrid/services/appmgr/ApplicationManager.cpp +0 -9
@@ 36,18 36,9 @@ namespace app::manager
return rootApplicationName;
}
- auto ApplicationManager::handleDisplayLowBatteryScreen(ActionEntry &action) -> ActionProcessStatus
- {
- SwitchRequest switchRequest(
- service::name::appmgr, resolveHomeApplication(), gui::window::name::bell_battery_shutdown, nullptr);
- return handleSwitchApplication(&switchRequest) ? ActionProcessStatus::Accepted : ActionProcessStatus::Dropped;
- }
-
ActionProcessStatus ApplicationManager::handleAction(ActionEntry &action)
{
switch (action.actionId) {
- case actions::DisplayLowBatteryScreen:
- return handleDisplayLowBatteryScreen(action);
default:
return ApplicationManagerCommon::handleAction(action);
}
M products/BellHybrid/services/appmgr/include/appmgr/ApplicationManager.hpp => products/BellHybrid/services/appmgr/include/appmgr/ApplicationManager.hpp +0 -2
@@ 24,7 24,5 @@ namespace app::manager
auto startApplication(ApplicationHandle &app) -> bool override;
auto resolveHomeApplication() -> std::string override;
auto registerMessageHandlers() -> void override;
-
- auto handleDisplayLowBatteryScreen(ActionEntry &action) -> ActionProcessStatus;
};
} // namespace app::manager
M products/BellHybrid/sys/SystemManager.cpp => products/BellHybrid/sys/SystemManager.cpp +9 -0
@@ 4,6 4,8 @@
#include <sys/SystemManager.hpp>
#include <sys/messages/AlarmActivationStatusChangeRequest.hpp>
+#include <system/messages/SystemManagerMessage.hpp>
+
#include <appmgr/messages/AlarmMessage.hpp>
#include <appmgr/messages/BatteryShutdown.hpp>
#include <service-appmgr/messages/SwitchRequest.hpp>
@@ 48,4 50,11 @@ namespace sys
bus.sendUnicast(msg, service::name::appmgr);
SystemManagerCommon::batteryShutdownLevelAction();
}
+
+ void SystemManager::batteryCriticalLevelAction(bool charging)
+ {
+ SystemManagerCommon::batteryCriticalLevelAction(charging);
+ auto msg = std::make_shared<CriticalBatteryLevelNotification>(true, charging);
+ bus.sendUnicast(std::move(msg), service::name::appmgr);
+ }
} // namespace sys
M products/BellHybrid/sys/include/sys/SystemManager.hpp => products/BellHybrid/sys/include/sys/SystemManager.hpp +2 -0
@@ 20,5 20,7 @@ namespace sys
auto handleAlarmActivationStatusChangeRequest(AlarmActivationStatusChangeRequest *request) -> MessagePointer;
void batteryShutdownLevelAction() override;
+
+ void batteryCriticalLevelAction(bool charging) override;
};
} // namespace sys
M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
-Subproject commit 4b996eadb9ee27f0d0a26bb06e5c1587e8102a22
+Subproject commit 60799ac591164bf2a85e1ad054e9ce937c05d2a8
M tools/download_asset2.py => tools/download_asset2.py +1 -1
@@ 172,7 172,7 @@ class GitOps:
output.parent.mkdir(parents=True, exist_ok=True)
self.copy_file(cached, output)
except HTTP404NotFoundError as ex:
- raise RuntimeError(f'file not found with: {data} err: {ex} on path: {Path(".").absolute()} with cache dir: {self.cache.absolute()} for {val["name"]}')
+ raise RuntimeError(f'file not found with: {data} err: {ex}')
except HTTP403ForbiddenError as ex:
# gh is messed up - if you get persistent error on this file, try renaming
raise RuntimeError(f'something is wrong with: {data} err: {ex}')