Skip to content

Commit d55ec42

Browse files
committed
Simplify SettingChimes code
1 parent a1385cb commit d55ec42

2 files changed

Lines changed: 27 additions & 42 deletions

File tree

src/displayapp/screens/settings/SettingChimes.cpp

Lines changed: 13 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace {
1414
}
1515
}
1616

17+
constexpr std::array<SettingChimes::Option, 3> SettingChimes::options;
18+
1719
SettingChimes::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

7657
SettingChimes::~SettingChimes() {
@@ -80,18 +61,10 @@ SettingChimes::~SettingChimes() {
8061

8162
void 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
}

src/displayapp/screens/settings/SettingChimes.h

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <lvgl/lvgl.h>
55
#include "components/settings/Settings.h"
66
#include "displayapp/screens/Screen.h"
7+
#include <array>
78

89
namespace Pinetime {
910

@@ -12,15 +13,26 @@ namespace Pinetime {
1213

1314
class SettingChimes : public Screen {
1415
public:
16+
struct Option {
17+
Controllers::Settings::ChimesOption chimesOption;
18+
const char* name;
19+
};
20+
1521
SettingChimes(DisplayApp* app, Pinetime::Controllers::Settings& settingsController);
1622
~SettingChimes() override;
1723

1824
void UpdateSelected(lv_obj_t* object, lv_event_t event);
1925

2026
private:
27+
static constexpr std::array<Option, 3> options = {{
28+
{Controllers::Settings::ChimesOption::None, " Off"},
29+
{Controllers::Settings::ChimesOption::Hours, " Every hour"},
30+
{Controllers::Settings::ChimesOption::HalfHours, " Every 30 mins"}
31+
}};
32+
33+
lv_obj_t* cbOption[options.size()];
34+
2135
Controllers::Settings& settingsController;
22-
uint8_t optionsTotal;
23-
lv_obj_t* cbOption[3];
2436
};
2537
}
2638
}

0 commit comments

Comments
 (0)