M module-gui/gui/widgets/CMakeLists.txt => module-gui/gui/widgets/CMakeLists.txt +75 -74
@@ 1,79 1,80 @@
target_sources( ${PROJECT_NAME}
PRIVATE
- "${CMAKE_CURRENT_LIST_DIR}/Alignment.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Arc.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/BottomBar.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/CheckBox.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Circle.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Icon.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Image.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/ImageBox.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Item.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Label.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/ListItem.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/ListView.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Margins.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Navigation.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/ProgressBar.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Rect.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Window.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/BoxLayout.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/BoxLayoutSizeStore.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/SIM.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/BatteryWidgetBase.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/BatteryWidgetBar.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/BatteryWidgetText.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/SignalStrengthWidgetBase.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/SignalStrengthWidgetBar.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar/SignalStrengthWidgetText.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Text.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextBlock.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextDocument.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextCursor.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextParse.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextLine.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextBlockCursor.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextBubble.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextFixedSize.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Style.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/InputMode.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/GridLayout.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Lines.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextLineCursor.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/RichTextParser.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextFormat.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/CheckBoxWithLabel.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/visitor/DepthFirstItemTree.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Alignment.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Arc.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/BottomBar.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/CheckBox.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Circle.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Icon.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Image.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ImageBox.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Item.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Label.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ListItem.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ListView.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Margins.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Navigation.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ProgressBar.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Rect.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Window.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/BoxLayout.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/BoxLayoutSizeStore.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/SIM.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/BatteryWidgetBase.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/BatteryWidgetBar.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/BatteryWidgetText.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/SignalStrengthWidgetBase.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/SignalStrengthWidgetBar.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/SignalStrengthWidgetText.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar/NetworkAccessTechnologyWidget.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Text.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextBlock.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextDocument.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextCursor.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextParse.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextLine.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextBlockCursor.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextBubble.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextFixedSize.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Style.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/InputMode.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/GridLayout.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Lines.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextLineCursor.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/RichTextParser.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextFormat.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/CheckBoxWithLabel.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/visitor/DepthFirstItemTree.cpp"
PUBLIC
- "${CMAKE_CURRENT_LIST_DIR}/Alignment.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Arc.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/BottomBar.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Circle.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Image.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/ImageBox.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextFixedSize.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Item.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Label.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/ListItem.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/ListItemProvider.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/ListView.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Margins.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Navigation.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/ProgressBar.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Rect.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Window.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/BoxLayout.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Layout.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/TopBar.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Text.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/CheckBoxWithLabel.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/CheckBoxWithLabel.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Lines.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/TextLineCursor.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/visitor/GuiVisitor.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/visitor/ItemNode.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/visitor/ItemTree.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/visitor/DepthFirstItemTree.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Alignment.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Arc.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/BottomBar.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Circle.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Image.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ImageBox.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextFixedSize.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Item.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Label.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ListItem.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ListItemProvider.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ListView.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Margins.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Navigation.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/ProgressBar.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Rect.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Window.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/BoxLayout.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Layout.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TopBar.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Text.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/CheckBoxWithLabel.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/CheckBoxWithLabel.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Lines.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/TextLineCursor.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/visitor/GuiVisitor.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/visitor/ItemNode.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/visitor/ItemTree.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/visitor/DepthFirstItemTree.hpp"
)
M module-gui/gui/widgets/TopBar.cpp => module-gui/gui/widgets/TopBar.cpp +25 -38
@@ 12,6 12,7 @@
#include "TopBar/BatteryWidgetText.hpp"
#include "TopBar/SignalStrengthWidgetBar.hpp"
#include "TopBar/SignalStrengthWidgetText.hpp"
+#include "TopBar/NetworkAccessTechnologyWidget.hpp"
#include "common_data/EventStore.hpp"
namespace gui::top_bar
@@ 104,13 105,8 @@ namespace gui::top_bar
timeLabel->setText("00:00");
timeLabel->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
- networkAccessTechnologyLabel =
- new Label(this, networkTechnology::x, networkTechnology::y, networkTechnology::w, networkTechnology::h);
- networkAccessTechnologyLabel->setFilled(false);
- networkAccessTechnologyLabel->setBorderColor(gui::ColorNoColor);
- networkAccessTechnologyLabel->setFont(style::header::font::modes);
- networkAccessTechnologyLabel->setAlignment(
- gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ networkAccessTechnologyWidget = new NetworkAccessTechnologyWidget(
+ this, networkTechnology::x, networkTechnology::y, networkTechnology::w, networkTechnology::h);
updateNetworkAccessTechnology();
}
@@ 137,7 133,12 @@ namespace gui::top_bar
{
switch (indicator) {
case Indicator::Signal:
- updateSignalStrength();
+ if (enabled) {
+ signalWidget->show();
+ updateSignalStrength();
+ break;
+ }
+ signalWidget->hide();
break;
case Indicator::Time:
timeLabel->setVisible(enabled);
@@ 152,20 153,30 @@ namespace gui::top_bar
}
break;
case Indicator::Battery:
- batteryWidget->show(Store::Battery::get(), enabled);
+ if (enabled) {
+ batteryWidget->show();
+ updateBattery();
+ break;
+ }
+ batteryWidget->hide();
break;
case Indicator::SimCard:
showSim(enabled);
break;
case Indicator::NetworkAccessTechnology:
- updateNetworkAccessTechnology();
+ if (enabled) {
+ networkAccessTechnologyWidget->show();
+ updateNetworkAccessTechnology();
+ break;
+ }
+ networkAccessTechnologyWidget->hide();
break;
}
}
bool TopBar::updateBattery()
{
- batteryWidget->show(Store::Battery::get(), configuration.isEnabled(Indicator::Battery));
+ batteryWidget->update(Store::Battery::get());
return true;
}
@@ 181,39 192,15 @@ namespace gui::top_bar
bool TopBar::updateSignalStrength()
{
auto signalStrength = Store::GSM::get()->getSignalStrength();
- signalWidget->show(signalStrength, configuration.isEnabled(Indicator::Signal));
+ signalWidget->update(signalStrength);
return true;
}
bool TopBar::updateNetworkAccessTechnology()
{
- if (configuration.isEnabled(Indicator::NetworkAccessTechnology)) {
- auto accessTechnology = Store::GSM::get()->getNetwork().accessTechnology;
-
- constexpr auto text2g = "2G";
- constexpr auto text3g = "3G";
- constexpr auto textLte = "LTE";
-
- switch (accessTechnology) {
- case Store::Network::AccessTechnology::Gsm:
- case Store::Network::AccessTechnology::GsmWEgprs:
- networkAccessTechnologyLabel->setText(text2g);
- break;
- case Store::Network::AccessTechnology::Utran:
- case Store::Network::AccessTechnology::UtranWHsdpa:
- case Store::Network::AccessTechnology::UtranWHsupa:
- case Store::Network::AccessTechnology::UtranWHsdpaAndWHsupa:
- networkAccessTechnologyLabel->setText(text3g);
- break;
- case Store::Network::AccessTechnology::EUtran:
- networkAccessTechnologyLabel->setText(textLte);
- break;
- case Store::Network::AccessTechnology::Unknown:
- networkAccessTechnologyLabel->setText("");
- break;
- }
- }
+ auto accessTechnology = Store::GSM::get()->getNetwork().accessTechnology;
+ networkAccessTechnologyWidget->update(accessTechnology);
return true;
}
M module-gui/gui/widgets/TopBar.hpp => module-gui/gui/widgets/TopBar.hpp +4 -3
@@ 16,6 16,7 @@ namespace gui
{
class SignalStrengthWidgetBase;
class BatteryWidgetBase;
+ class NetworkAccessTechnologyWidget;
} // namespace gui
namespace gui::top_bar
{
@@ 79,9 80,9 @@ namespace gui::top_bar
static uint32_t time;
protected:
- Label *timeLabel = nullptr;
- Label *networkAccessTechnologyLabel = nullptr;
- SignalStrengthWidgetBase *signalWidget = nullptr;
+ Label *timeLabel = nullptr;
+ NetworkAccessTechnologyWidget *networkAccessTechnologyWidget = nullptr;
+ SignalStrengthWidgetBase *signalWidget = nullptr;
Image *lock;
gui::SIM *sim = nullptr;
BatteryWidgetBase *batteryWidget = nullptr;
M module-gui/gui/widgets/TopBar/BatteryWidgetBase.cpp => module-gui/gui/widgets/TopBar/BatteryWidgetBase.cpp +14 -20
@@ 7,31 7,25 @@
namespace gui
{
BatteryWidgetBase::BatteryWidgetBase(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
- : HBox(parent, x, y, w, h)
+ : StatusBarWidgetBase(parent, x, y, w, h)
{
setBorderColor(gui::ColorNoColor);
}
- void BatteryWidgetBase::show(const Store::Battery batteryContext, bool shown)
+ void BatteryWidgetBase::update(const Store::Battery &batteryContext)
{
- if (shown) {
- setVisible(true);
- switch (batteryContext.state) {
- case Store::Battery::State::Discharging:
- [[fallthrough]];
- case Store::Battery::State::PluggedNotCharging:
- showBatteryLevel(batteryContext.level);
- break;
- case Store::Battery::State::Charging:
- showBatteryCharging();
- break;
- case Store::Battery::State::ChargingDone:
- showBatteryChargingDone();
- break;
- }
- }
- else {
- setVisible(false);
+ switch (batteryContext.state) {
+ case Store::Battery::State::Discharging:
+ [[fallthrough]];
+ case Store::Battery::State::PluggedNotCharging:
+ showBatteryLevel(batteryContext.level);
+ break;
+ case Store::Battery::State::Charging:
+ showBatteryCharging();
+ break;
+ case Store::Battery::State::ChargingDone:
+ showBatteryChargingDone();
+ break;
}
}
} // namespace gui
M module-gui/gui/widgets/TopBar/BatteryWidgetBase.hpp => module-gui/gui/widgets/TopBar/BatteryWidgetBase.hpp +3 -2
@@ 3,6 3,7 @@
#pragma once
+#include "StatusBarWidgetBase.hpp"
#include "BoxLayout.hpp"
#include <common_data/EventStore.hpp>
@@ 10,7 11,7 @@ namespace gui
{
class HBox;
- class BatteryWidgetBase : public HBox
+ class BatteryWidgetBase : public StatusBarWidgetBase<HBox>
{
virtual void showBatteryLevel(std::uint32_t percentage) = 0;
virtual void showBatteryChargingDone() = 0;
@@ 18,6 19,6 @@ namespace gui
public:
BatteryWidgetBase(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
- void show(const Store::Battery batteryContext, bool shown);
+ void update(const Store::Battery &batteryContext);
};
} // namespace gui
A module-gui/gui/widgets/TopBar/NetworkAccessTechnologyWidget.cpp => module-gui/gui/widgets/TopBar/NetworkAccessTechnologyWidget.cpp +45 -0
@@ 0,0 1,45 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "NetworkAccessTechnologyWidget.hpp"
+#include "Item.hpp"
+
+namespace gui
+{
+ NetworkAccessTechnologyWidget::NetworkAccessTechnologyWidget(
+ Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+ : StatusBarWidgetBase(parent, x, y, w, h)
+ {
+ setFilled(false);
+ setBorderColor(gui::ColorNoColor);
+ setFont(style::header::font::modes);
+ setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ }
+
+ void NetworkAccessTechnologyWidget::update(const Store::Network::AccessTechnology accessTechnology)
+ {
+ _accessTechnology = accessTechnology;
+ constexpr auto text2g = "2G";
+ constexpr auto text3g = "3G";
+ constexpr auto textLte = "LTE";
+
+ switch (accessTechnology) {
+ case Store::Network::AccessTechnology::Gsm:
+ case Store::Network::AccessTechnology::GsmWEgprs:
+ setText(text2g);
+ break;
+ case Store::Network::AccessTechnology::Utran:
+ case Store::Network::AccessTechnology::UtranWHsdpa:
+ case Store::Network::AccessTechnology::UtranWHsupa:
+ case Store::Network::AccessTechnology::UtranWHsdpaAndWHsupa:
+ setText(text3g);
+ break;
+ case Store::Network::AccessTechnology::EUtran:
+ setText(textLte);
+ break;
+ case Store::Network::AccessTechnology::Unknown:
+ setText("");
+ break;
+ }
+ }
+} // namespace gui
A module-gui/gui/widgets/TopBar/NetworkAccessTechnologyWidget.hpp => module-gui/gui/widgets/TopBar/NetworkAccessTechnologyWidget.hpp +20 -0
@@ 0,0 1,20 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include "StatusBarWidgetBase.hpp"
+#include <Label.hpp>
+#include <common_data/EventStore.hpp>
+
+namespace gui
+{
+ class NetworkAccessTechnologyWidget : public StatusBarWidgetBase<Label>
+ {
+ Store::Network::AccessTechnology _accessTechnology = Store::Network::AccessTechnology::Unknown;
+
+ public:
+ NetworkAccessTechnologyWidget(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
+ void update(Store::Network::AccessTechnology accessTechnology);
+ };
+} // namespace gui
M module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.cpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.cpp +2 -6
@@ 34,13 34,9 @@ namespace gui
img->setMargins(gui::Margins(signalBarMarginX, 0, 0, 0));
}
- void SignalStrengthWidgetBar::show(const Store::SignalStrength data, bool shown)
+ void SignalStrengthWidgetBar::update()
{
- setVisible(shown);
- if (shown) {
- img->set(signalMap.at(data.rssiBar));
- return;
- }
+ img->set(signalMap.at(signalStrength.rssiBar));
}
} // namespace gui
M module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.hpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.hpp +3 -2
@@ 13,9 13,10 @@ namespace gui
{
Image *img = nullptr;
+ protected:
+ void update() override;
+
public:
SignalStrengthWidgetBar(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
-
- void show(const Store::SignalStrength data, bool shown) override;
};
} // namespace gui
M module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.cpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.cpp +7 -1
@@ 6,8 6,14 @@
namespace gui
{
SignalStrengthWidgetBase::SignalStrengthWidgetBase(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
- : HBox(parent, x, y, w, h)
+ : StatusBarWidgetBase(parent, x, y, w, h)
{
setBorderColor(gui::ColorNoColor);
}
+
+ void SignalStrengthWidgetBase::update(const Store::SignalStrength &data)
+ {
+ signalStrength = data;
+ update();
+ }
} // namespace gui
M module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.hpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.hpp +7 -2
@@ 3,15 3,20 @@
#pragma once
+#include "StatusBarWidgetBase.hpp"
#include "BoxLayout.hpp"
#include <common_data/EventStore.hpp>
namespace gui
{
- class SignalStrengthWidgetBase : public HBox
+ class SignalStrengthWidgetBase : public StatusBarWidgetBase<HBox>
{
+ protected:
+ Store::SignalStrength signalStrength;
+ virtual void update() = 0;
+
public:
SignalStrengthWidgetBase(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
- virtual void show(const Store::SignalStrength data, bool shown) = 0;
+ void update(const Store::SignalStrength &data);
};
} // namespace gui
M module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.cpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.cpp +2 -6
@@ 20,13 20,9 @@ namespace gui
label->setMaximumSize(this->getWidth(), this->getHeight());
}
- void SignalStrengthWidgetText::show(const Store::SignalStrength data, bool shown)
+ void SignalStrengthWidgetText::update()
{
- setVisible(shown);
- if (shown) {
- label->setText(utils::to_string(data.rssidBm) + " dBm");
- return;
- }
+ label->setText(utils::to_string(signalStrength.rssidBm) + " dBm");
}
} // namespace gui
M module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.hpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.hpp +6 -5
@@ 10,12 10,13 @@ namespace gui
class Label;
class SignalStrengthWidgetText : public SignalStrengthWidgetBase
{
- public:
- SignalStrengthWidgetText(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
-
- void show(const Store::SignalStrength data, bool shown) override;
-
private:
Label *label = nullptr;
+
+ protected:
+ void update() override;
+
+ public:
+ SignalStrengthWidgetText(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
};
} // namespace gui
A module-gui/gui/widgets/TopBar/StatusBarWidgetBase.hpp => module-gui/gui/widgets/TopBar/StatusBarWidgetBase.hpp +26 -0
@@ 0,0 1,26 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+template <typename ItemPolicy> class StatusBarWidgetBase : public ItemPolicy
+{
+ public:
+ using ItemPolicy::ItemPolicy;
+ virtual ~StatusBarWidgetBase() = default;
+
+ virtual void show()
+ {
+ ItemPolicy::setVisible(true);
+ }
+
+ virtual void hide()
+ {
+ ItemPolicy::setVisible(false);
+ }
+
+ virtual bool isVisible()
+ {
+ return ItemPolicy::visible;
+ }
+};