Major rework of the settings screen :

- reduced RAM footprint by 10K :-)
- Added the new about category displaying infos about the watch's firmware
- Now widgets are reloaded with current parameters's values
- Almost all settings are taken into account
This commit is contained in:
anschrammh 2023-03-24 14:58:39 +01:00
parent 728394ff22
commit 185b7a7efa
2 changed files with 532 additions and 487 deletions

File diff suppressed because it is too large Load Diff

View File

@ -3,24 +3,59 @@
#include "lvgl.h"
typedef enum SettingMode
{
SETTING_MODE_GET = 0,
SETTING_MODE_SET
} SettingMode_e;
typedef struct SettingsScreenAPIInterface
{
void (*setBrightnessSettingsCb)(uint8_t brightness);
void (*setTimeSettingsCb)(uint8_t hour, uint8_t minute, uint8_t second, uint8_t day, uint8_t month, uint8_t year);
void (*setTimeoutSettingsCb)(uint8_t timeout);
void (*setOrientationSettingsCb)(uint8_t orientation);
void (*setTimeSettingsCb)(uint8_t *hour, uint8_t *minute, uint8_t *second, uint8_t *day, uint8_t *month, uint8_t *year, SettingMode_e mode);
void (*setBrightnessSettingsCb)(uint8_t *brightness, SettingMode_e mode);
void (*setTimeoutSettingsCb)(uint8_t *timeout, SettingMode_e mode);
void (*setDisplayVibrationDurationSettingsCb)(uint8_t *duration, SettingMode_e mode);
void (*setDisplayVibrationStrengthSettingsCb)(uint8_t *strength, SettingMode_e mode);
void (*setOrientationSettingsCb)(uint8_t *orientation, SettingMode_e mode);
void (*setBLEEnabledSettingsCb)(bool *enabled, SettingMode_e mode);
void (*setWiFiEnabledSettingsCb)(bool *enabled, SettingMode_e mode);
void (*setLanguageSettingsCb)(uint8_t *language, SettingMode_e mode);
} SettingsScreenAPIInterface_t;
typedef struct SettingsScreen
{
SettingsScreenAPIInterface_t settingsScreenAPIInterface;
/* Menu list items */
lv_obj_t *time_and_date_item;
lv_obj_t *display_item;
lv_obj_t *notifications_item;
lv_obj_t *connectivity_item;
lv_obj_t *language_item;
lv_obj_t *about_item;
lv_obj_t *side_screen;
lv_obj_t *hour_roller;
lv_obj_t *minute_roller;
lv_obj_t *second_roller;
lv_obj_t *checkbox_time_12H;
lv_obj_t *checkbox_time_24H;
lv_obj_t *day_roller;
lv_obj_t *month_roller;
lv_obj_t *year_roller;
lv_obj_t *ble_switch;
lv_obj_t *wifi_switch;
struct
{
lv_obj_t *current_time_label;
char current_time_text[20];
} currentTime;
/* Main screen */
lv_obj_t *display;
/* Other */
lv_timer_t *about_refresh_timer;
} SettingsScreen_t;
void settings_screen_init(SettingsScreen_t * const settingsScreen);
@ -31,6 +66,4 @@ void settings_screen_create(SettingsScreen_t * const settingsScreen);
void settings_screen_destroy(SettingsScreen_t * const settingsScreen);
void settings_screen(void);
#endif //SETTINGS_SCREEN_H