@@ -14,6 +14,8 @@ namespace {
1414 }
1515}
1616
17+ constexpr std::array<SettingChimes::Option, 3 > SettingChimes::options;
18+
1719SettingChimes::SettingChimes (Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController)
1820 : Screen(app), settingsController {settingsController} {
1921
@@ -40,37 +42,16 @@ SettingChimes::SettingChimes(Pinetime::Applications::DisplayApp* app, Pinetime::
4042 lv_label_set_align (icon, LV_LABEL_ALIGN_CENTER);
4143 lv_obj_align (icon, title, LV_ALIGN_OUT_LEFT_MID, -10 , 0 );
4244
43- optionsTotal = 0 ;
44- cbOption[optionsTotal] = lv_checkbox_create (container1, nullptr );
45- lv_checkbox_set_text_static (cbOption[optionsTotal], " Off" );
46- cbOption[optionsTotal]->user_data = this ;
47- lv_obj_set_event_cb (cbOption[optionsTotal], event_handler);
48- SetRadioButtonStyle (cbOption[optionsTotal]);
49- if (settingsController.GetChimeOption () == Controllers::Settings::ChimesOption::None) {
50- lv_checkbox_set_checked (cbOption[optionsTotal], true );
51- }
52-
53- optionsTotal++;
54- cbOption[optionsTotal] = lv_checkbox_create (container1, nullptr );
55- lv_checkbox_set_text_static (cbOption[optionsTotal], " Every hour" );
56- cbOption[optionsTotal]->user_data = this ;
57- lv_obj_set_event_cb (cbOption[optionsTotal], event_handler);
58- SetRadioButtonStyle (cbOption[optionsTotal]);
59- if (settingsController.GetChimeOption () == Controllers::Settings::ChimesOption::Hours) {
60- lv_checkbox_set_checked (cbOption[optionsTotal], true );
61- }
62-
63- optionsTotal++;
64- cbOption[optionsTotal] = lv_checkbox_create (container1, nullptr );
65- lv_checkbox_set_text_static (cbOption[optionsTotal], " Every 30 mins" );
66- cbOption[optionsTotal]->user_data = this ;
67- lv_obj_set_event_cb (cbOption[optionsTotal], event_handler);
68- SetRadioButtonStyle (cbOption[optionsTotal]);
69- if (settingsController.GetChimeOption () == Controllers::Settings::ChimesOption::HalfHours) {
70- lv_checkbox_set_checked (cbOption[optionsTotal], true );
45+ for (unsigned int i = 0 ; i < options.size (); i++) {
46+ cbOption[i] = lv_checkbox_create (container1, nullptr );
47+ lv_checkbox_set_text (cbOption[i], options[i].name );
48+ if (settingsController.GetChimeOption () == options[i].chimesOption ) {
49+ lv_checkbox_set_checked (cbOption[i], true );
50+ }
51+ cbOption[i]->user_data = this ;
52+ lv_obj_set_event_cb (cbOption[i], event_handler);
53+ SetRadioButtonStyle (cbOption[i]);
7154 }
72-
73- optionsTotal++;
7455}
7556
7657SettingChimes::~SettingChimes () {
@@ -80,18 +61,10 @@ SettingChimes::~SettingChimes() {
8061
8162void SettingChimes::UpdateSelected (lv_obj_t * object, lv_event_t event) {
8263 if (event == LV_EVENT_VALUE_CHANGED) {
83- for (uint8_t i = 0 ; i < optionsTotal ; i++) {
64+ for (uint8_t i = 0 ; i < options. size () ; i++) {
8465 if (object == cbOption[i]) {
8566 lv_checkbox_set_checked (cbOption[i], true );
86- if (i == 0 ) {
87- settingsController.SetChimeOption (Controllers::Settings::ChimesOption::None);
88- }
89- if (i == 1 ) {
90- settingsController.SetChimeOption (Controllers::Settings::ChimesOption::Hours);
91- }
92- if (i == 2 ) {
93- settingsController.SetChimeOption (Controllers::Settings::ChimesOption::HalfHours);
94- }
67+ settingsController.SetChimeOption (options[i].chimesOption );
9568 } else {
9669 lv_checkbox_set_checked (cbOption[i], false );
9770 }
0 commit comments