settings: Add settings item for weather format
parent
c04813b6d3
commit
d889f3e444
@ -0,0 +1,63 @@
|
|||||||
|
#include "displayapp/screens/settings/SettingWeatherFormat.h"
|
||||||
|
|
||||||
|
#include <lvgl/lvgl.h>
|
||||||
|
|
||||||
|
#include "displayapp/DisplayApp.h"
|
||||||
|
#include "displayapp/screens/Styles.h"
|
||||||
|
#include "displayapp/screens/Screen.h"
|
||||||
|
#include "displayapp/screens/Symbols.h"
|
||||||
|
|
||||||
|
using namespace Pinetime::Applications::Screens;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
struct Option {
|
||||||
|
Pinetime::Controllers::Settings::WeatherFormat weatherFormat;
|
||||||
|
const char* name;
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr std::array<Option, 2> options = {{
|
||||||
|
{Pinetime::Controllers::Settings::WeatherFormat::Metric, "Metric"},
|
||||||
|
{Pinetime::Controllers::Settings::WeatherFormat::Imperial, "Imperial"},
|
||||||
|
}};
|
||||||
|
|
||||||
|
std::array<CheckboxList::Item, CheckboxList::MaxItems> CreateOptionArray() {
|
||||||
|
std::array<Pinetime::Applications::Screens::CheckboxList::Item, CheckboxList::MaxItems> optionArray;
|
||||||
|
for (size_t i = 0; i < CheckboxList::MaxItems; i++) {
|
||||||
|
if (i >= options.size()) {
|
||||||
|
optionArray[i].name = "";
|
||||||
|
optionArray[i].enabled = false;
|
||||||
|
} else {
|
||||||
|
optionArray[i].name = options[i].name;
|
||||||
|
optionArray[i].enabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return optionArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t GetDefaultOption(Pinetime::Controllers::Settings::WeatherFormat currentOption) {
|
||||||
|
for (size_t i = 0; i < options.size(); i++) {
|
||||||
|
if (options[i].weatherFormat == currentOption) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingWeatherFormat::SettingWeatherFormat(Pinetime::Controllers::Settings& settingsController)
|
||||||
|
: checkboxList(
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
"Weather format",
|
||||||
|
Symbols::clock,
|
||||||
|
GetDefaultOption(settingsController.GetWeatherFormat()),
|
||||||
|
[&settings = settingsController](uint32_t index) {
|
||||||
|
settings.SetWeatherFormat(options[index].weatherFormat);
|
||||||
|
settings.SaveSettings();
|
||||||
|
},
|
||||||
|
CreateOptionArray()) {
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingWeatherFormat::~SettingWeatherFormat() {
|
||||||
|
lv_obj_clean(lv_scr_act());
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <lvgl/lvgl.h>
|
||||||
|
|
||||||
|
#include "components/settings/Settings.h"
|
||||||
|
#include "displayapp/screens/Screen.h"
|
||||||
|
#include "displayapp/screens/CheckboxList.h"
|
||||||
|
|
||||||
|
namespace Pinetime {
|
||||||
|
|
||||||
|
namespace Applications {
|
||||||
|
namespace Screens {
|
||||||
|
|
||||||
|
class SettingWeatherFormat : public Screen {
|
||||||
|
public:
|
||||||
|
explicit SettingWeatherFormat(Pinetime::Controllers::Settings& settingsController);
|
||||||
|
~SettingWeatherFormat() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
CheckboxList checkboxList;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue