Automatic alignment with containers
This commit is contained in:
parent
28a528761f
commit
9f851f6321
|
@ -40,7 +40,6 @@ Tile::Tile(uint8_t screenID,
|
||||||
|
|
||||||
statusIcons.Create();
|
statusIcons.Create();
|
||||||
lv_obj_align(statusIcons.GetObject(), lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -8, 0);
|
lv_obj_align(statusIcons.GetObject(), lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -8, 0);
|
||||||
statusIcons.Align();
|
|
||||||
|
|
||||||
// Time
|
// Time
|
||||||
label_time = lv_label_create(lv_scr_act(), nullptr);
|
label_time = lv_label_create(lv_scr_act(), nullptr);
|
||||||
|
|
|
@ -7,36 +7,30 @@ StatusIcons::StatusIcons(Controllers::Battery& batteryController, Controllers::B
|
||||||
: batteryController {batteryController}, bleController {bleController} {
|
: batteryController {batteryController}, bleController {bleController} {
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusIcons::Align() {
|
|
||||||
lv_obj_t* lastIcon = batteryIcon.GetObject();
|
|
||||||
|
|
||||||
for (auto& icon : icons) {
|
|
||||||
if (!lv_obj_get_hidden(icon)) {
|
|
||||||
lv_obj_align(icon, lastIcon, LV_ALIGN_OUT_LEFT_MID, -5, 0);
|
|
||||||
lastIcon = icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StatusIcons::Create() {
|
void StatusIcons::Create() {
|
||||||
batteryIcon.Create(lv_scr_act());
|
container = lv_cont_create(lv_scr_act(), nullptr);
|
||||||
lv_obj_align(batteryIcon.GetObject(), lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, 0, 0);
|
lv_cont_set_layout(container, LV_LAYOUT_ROW_TOP);
|
||||||
|
lv_cont_set_fit(container, LV_FIT_TIGHT);
|
||||||
|
lv_obj_set_style_local_pad_inner(container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5);
|
||||||
|
lv_obj_set_style_local_bg_opa(container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);
|
||||||
|
|
||||||
icons[Icons::BatteryPlug] = lv_label_create(lv_scr_act(), nullptr);
|
bleIcon = lv_label_create(container, nullptr);
|
||||||
lv_obj_set_style_local_text_color(icons[Icons::BatteryPlug], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFF0000));
|
lv_obj_set_style_local_text_color(bleIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x0082FC));
|
||||||
lv_label_set_text_static(icons[Icons::BatteryPlug], Screens::Symbols::plug);
|
lv_label_set_text_static(bleIcon, Screens::Symbols::bluetooth);
|
||||||
|
|
||||||
icons[Icons::BleIcon] = lv_label_create(lv_scr_act(), nullptr);
|
batteryPlug = lv_label_create(container, nullptr);
|
||||||
lv_obj_set_style_local_text_color(icons[Icons::BleIcon], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x0082FC));
|
lv_obj_set_style_local_text_color(batteryPlug, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFF0000));
|
||||||
lv_label_set_text_static(icons[Icons::BleIcon], Screens::Symbols::bluetooth);
|
lv_label_set_text_static(batteryPlug, Screens::Symbols::plug);
|
||||||
|
|
||||||
Align();
|
batteryIcon.Create(container);
|
||||||
|
|
||||||
|
lv_obj_align(container, nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusIcons::Update() {
|
void StatusIcons::Update() {
|
||||||
powerPresent = batteryController.IsPowerPresent();
|
powerPresent = batteryController.IsPowerPresent();
|
||||||
if (powerPresent.IsUpdated()) {
|
if (powerPresent.IsUpdated()) {
|
||||||
lv_obj_set_hidden(icons[Icons::BatteryPlug], !powerPresent.Get());
|
lv_obj_set_hidden(batteryPlug, !powerPresent.Get());
|
||||||
}
|
}
|
||||||
|
|
||||||
batteryPercentRemaining = batteryController.PercentRemaining();
|
batteryPercentRemaining = batteryController.PercentRemaining();
|
||||||
|
@ -48,8 +42,8 @@ void StatusIcons::Update() {
|
||||||
bleState = bleController.IsConnected();
|
bleState = bleController.IsConnected();
|
||||||
bleRadioEnabled = bleController.IsRadioEnabled();
|
bleRadioEnabled = bleController.IsRadioEnabled();
|
||||||
if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) {
|
if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) {
|
||||||
lv_obj_set_hidden(icons[Icons::BleIcon], !bleState.Get());
|
lv_obj_set_hidden(bleIcon, !bleState.Get());
|
||||||
}
|
}
|
||||||
|
|
||||||
Align();
|
lv_obj_realign(container);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Pinetime {
|
||||||
void Align();
|
void Align();
|
||||||
void Create();
|
void Create();
|
||||||
lv_obj_t* GetObject() {
|
lv_obj_t* GetObject() {
|
||||||
return batteryIcon.GetObject();
|
return container;
|
||||||
}
|
}
|
||||||
void Update();
|
void Update();
|
||||||
|
|
||||||
|
@ -30,8 +30,9 @@ namespace Pinetime {
|
||||||
Screens::DirtyValue<bool> bleState {};
|
Screens::DirtyValue<bool> bleState {};
|
||||||
Screens::DirtyValue<bool> bleRadioEnabled {};
|
Screens::DirtyValue<bool> bleRadioEnabled {};
|
||||||
|
|
||||||
enum Icons { BatteryPlug, BleIcon };
|
lv_obj_t* bleIcon;
|
||||||
lv_obj_t* icons[2];
|
lv_obj_t* batteryPlug;
|
||||||
|
lv_obj_t* container;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user