InfiniTime.git

commit 9f851f632128a7c78a82ce37a8517a3025fbf781

Author: Riku Isokoski <riksu9000@gmail.com>

Automatic alignment with containers

 src/displayapp/screens/Tile.cpp | 1 
 src/displayapp/widgets/StatusIcons.cpp | 40 +++++++++++----------------
 src/displayapp/widgets/StatusIcons.h | 7 ++--


diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp
index 2af04ab06fc077730b22c07a322ae977d2514659..bf0780f18e0fb94c8fbbe15e870c43424bffe05a 100644
--- a/src/displayapp/screens/Tile.cpp
+++ b/src/displayapp/screens/Tile.cpp
@@ -40,7 +40,6 @@   settingsController.SetAppMenu(screenID);
 
   statusIcons.Create();
   lv_obj_align(statusIcons.GetObject(), lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -8, 0);
-  statusIcons.Align();
 
   // Time
   label_time = lv_label_create(lv_scr_act(), nullptr);




diff --git a/src/displayapp/widgets/StatusIcons.cpp b/src/displayapp/widgets/StatusIcons.cpp
index d8f294b51d2d1deca85db6aa31825b7724b9b4a7..c1004b7702aaff73f5499a83086b3f269726d938 100644
--- a/src/displayapp/widgets/StatusIcons.cpp
+++ b/src/displayapp/widgets/StatusIcons.cpp
@@ -7,36 +7,30 @@ StatusIcons::StatusIcons(Controllers::Battery& batteryController, Controllers::Ble& 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() {
-  batteryIcon.Create(lv_scr_act());
-  lv_obj_align(batteryIcon.GetObject(), lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, 0, 0);
+  container = lv_cont_create(lv_scr_act(), nullptr);
+  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);
-  lv_obj_set_style_local_text_color(icons[Icons::BatteryPlug], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFF0000));
-  lv_label_set_text_static(icons[Icons::BatteryPlug], Screens::Symbols::plug);
+  bleIcon = lv_label_create(container, nullptr);
+  lv_obj_set_style_local_text_color(bleIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x0082FC));
+  lv_label_set_text_static(bleIcon, Screens::Symbols::bluetooth);
 
-  icons[Icons::BleIcon] = lv_label_create(lv_scr_act(), nullptr);
-  lv_obj_set_style_local_text_color(icons[Icons::BleIcon], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x0082FC));
-  lv_label_set_text_static(icons[Icons::BleIcon], Screens::Symbols::bluetooth);
+  batteryPlug = lv_label_create(container, nullptr);
+  lv_obj_set_style_local_text_color(batteryPlug, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFF0000));
+  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() {
   powerPresent = batteryController.IsPowerPresent();
   if (powerPresent.IsUpdated()) {
-    lv_obj_set_hidden(icons[Icons::BatteryPlug], !powerPresent.Get());
+    lv_obj_set_hidden(batteryPlug, !powerPresent.Get());
   }
 
   batteryPercentRemaining = batteryController.PercentRemaining();
@@ -48,8 +42,8 @@
   bleState = bleController.IsConnected();
   bleRadioEnabled = bleController.IsRadioEnabled();
   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);
 }




diff --git a/src/displayapp/widgets/StatusIcons.h b/src/displayapp/widgets/StatusIcons.h
index b6e713e2f7295e3bff289b646ce0ae46f3a30c00..f4a30a800cc96bab2ed53dcd9d309392475a44be 100644
--- a/src/displayapp/widgets/StatusIcons.h
+++ b/src/displayapp/widgets/StatusIcons.h
@@ -16,7 +16,7 @@         StatusIcons(Controllers::Battery& batteryController, Controllers::Ble& bleController);
         void Align();
         void Create();
         lv_obj_t* GetObject() {
-          return batteryIcon.GetObject();
+          return container;
         }
         void Update();
 
@@ -30,8 +30,9 @@         Screens::DirtyValue powerPresent {};
         Screens::DirtyValue<bool> bleState {};
         Screens::DirtyValue<bool> bleRadioEnabled {};
 
-        enum Icons { BatteryPlug, BleIcon };
-        lv_obj_t* icons[2];
+        lv_obj_t* bleIcon;
+        lv_obj_t* batteryPlug;
+        lv_obj_t* container;
       };
     }
   }