M image/assets/lang/English.json => image/assets/lang/English.json +2 -0
@@ 77,6 77,8 @@
"home_modes_connected": "CONNECTED",
"home_modes_notdisturb": "DO NOT DISTURB",
"home_modes_offline": "OFFLINE",
+ "topbar_battery_charging": "Charg",
+ "topbar_battery_plugged": "Plug",
"app_alarm_clock_title_main": "Alarm clock",
"app_alarm_clock_repeat_never": "Never",
"app_alarm_clock_repeat_everyday": "Everyday",
M module-gui/gui/widgets/CMakeLists.txt => module-gui/gui/widgets/CMakeLists.txt +3 -0
@@ 25,6 25,9 @@ target_sources( ${PROJECT_NAME}
"${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"
M module-gui/gui/widgets/TopBar.cpp => module-gui/gui/widgets/TopBar.cpp +13 -21
@@ 10,22 10,27 @@
#include "Style.hpp"
#include "TopBar/BatteryWidgetBar.hpp"
#include "TopBar/BatteryWidgetText.hpp"
+#include "TopBar/SignalStrengthWidgetBar.hpp"
+#include "TopBar/SignalStrengthWidgetText.hpp"
#include "common_data/EventStore.hpp"
namespace gui::top_bar
{
constexpr auto batteryWidgetAsText = false;
using BatteryWidgetType = std::conditional<batteryWidgetAsText, BatteryWidgetText, BatteryWidgetBar>::type;
+ constexpr auto signalWidgetAsText = false;
+ using SignalWidgetType =
+ std::conditional<signalWidgetAsText, SignalStrengthWidgetText, SignalStrengthWidgetBar>::type;
namespace networkTechnology
{
- constexpr uint32_t x = 80;
+ constexpr uint32_t x = 100;
constexpr uint32_t y = 21;
constexpr uint32_t w = 130;
constexpr uint32_t h = 20;
} // namespace networkTechnology
- static constexpr uint32_t signalOffset = 35;
+ static constexpr uint32_t signalOffset = 20;
static constexpr uint32_t batteryOffset = 413;
TopBar::TimeMode TopBar::timeMode = TimeMode::TIME_24H;
@@ 80,15 85,10 @@ namespace gui::top_bar
void TopBar::prepareWidget()
{
- signal[0] = new gui::Image(this, signalOffset, 17, 0, 0, "signal0");
- signal[1] = new gui::Image(this, signalOffset, 17, 0, 0, "signal1");
- signal[2] = new gui::Image(this, signalOffset, 17, 0, 0, "signal2");
- signal[3] = new gui::Image(this, signalOffset, 17, 0, 0, "signal3");
- signal[4] = new gui::Image(this, signalOffset, 17, 0, 0, "signal4");
- signal[5] = new gui::Image(this, signalOffset, 17, 0, 0, "signal5");
- updateSignalStrength();
-
batteryWidget = new BatteryWidgetType(this, batteryOffset, 15, 60, 24);
+ signalWidget = new SignalWidgetType(this, signalOffset, 17, 70, 24);
+
+ updateSignalStrength();
const auto design_sim_offset = 376; // this offset is not final, but it is pixel Purefect
sim = new SIM(this, design_sim_offset, 12);
@@ 180,17 180,9 @@ namespace gui::top_bar
bool TopBar::updateSignalStrength()
{
- for (uint32_t i = 0; i < signalImgCount; i++) {
- signal[i]->setVisible(false);
- }
- if (configuration.isEnabled(Indicator::Signal)) {
- auto rssiBar = Store::GSM::get()->getSignalStrength().rssiBar;
- if (rssiBar < Store::RssiBar::noOfSupprtedBars) {
- signal[static_cast<size_t>(rssiBar)]->setVisible(true);
- return true;
- }
- return false;
- }
+ auto signalStrength = Store::GSM::get()->getSignalStrength();
+ signalWidget->show(signalStrength, configuration.isEnabled(Indicator::Signal));
+
return true;
}
M module-gui/gui/widgets/TopBar.hpp => module-gui/gui/widgets/TopBar.hpp +10 -7
@@ 7,12 7,16 @@
#include "Label.hpp"
#include "Rect.hpp"
#include "TopBar/SIM.hpp"
-#include "TopBar/BatteryWidgetBase.hpp"
#include <common_data/EventStore.hpp>
#include <vector>
#include <map>
+namespace gui
+{
+ class SignalStrengthWidgetBase;
+ class BatteryWidgetBase;
+} // namespace gui
namespace gui::top_bar
{
enum class Indicator
@@ 75,15 79,14 @@ namespace gui::top_bar
static uint32_t time;
protected:
- Label *timeLabel = nullptr;
- Label *networkAccessTechnologyLabel = nullptr;
- Image *signal[static_cast<size_t>(Store::RssiBar::noOfSupprtedBars)];
+ Label *timeLabel = nullptr;
+ Label *networkAccessTechnologyLabel = nullptr;
+ SignalStrengthWidgetBase *signalWidget = nullptr;
Image *lock;
- std::array<Image *, batteryBarsCount> batteryBars = {nullptr};
std::map<const Store::Battery::State, Image *> batteryChargings = {
{Store::Battery::State::Charging, nullptr}, {Store::Battery::State::PluggedNotCharging, nullptr}};
- gui::SIM *sim = nullptr;
- gui::BatteryWidgetBase *batteryWidget = nullptr;
+ gui::SIM *sim = nullptr;
+ BatteryWidgetBase *batteryWidget = nullptr;
Configuration configuration;
static TimeMode timeMode;
A module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.cpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.cpp +46 -0
@@ 0,0 1,46 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "SignalStrengthWidgetBar.hpp"
+#include <string>
+#include <Image.hpp>
+#include <unordered_map>
+
+namespace gui
+{
+ namespace
+ {
+ constexpr auto signal0 = "signal0";
+ constexpr auto signal1 = "signal1";
+ constexpr auto signal2 = "signal2";
+ constexpr auto signal3 = "signal3";
+ constexpr auto signal4 = "signal4";
+ constexpr auto signal5 = "signal5";
+
+ using SignalMap = std::unordered_map<Store::RssiBar, std::string>;
+ const SignalMap signalMap = {{Store::RssiBar::zero, signal0},
+ {Store::RssiBar::one, signal1},
+ {Store::RssiBar::two, signal2},
+ {Store::RssiBar::three, signal3},
+ {Store::RssiBar::four, signal4},
+ {Store::RssiBar::five, signal5}};
+ } // namespace
+
+ SignalStrengthWidgetBar::SignalStrengthWidgetBar(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+ : SignalStrengthWidgetBase(parent, x, y, w, h)
+ {
+ img = new Image(this, signalMap.at(Store::RssiBar::zero));
+ constexpr auto signalBarMarginX = 10u;
+ img->setMargins(gui::Margins(signalBarMarginX, 0, 0, 0));
+ }
+
+ void SignalStrengthWidgetBar::show(const Store::SignalStrength data, bool shown)
+ {
+ setVisible(shown);
+ if (shown) {
+ img->set(signalMap.at(data.rssiBar));
+ return;
+ }
+ }
+
+} // namespace gui
A module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.hpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBar.hpp +21 -0
@@ 0,0 1,21 @@
+// 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 "SignalStrengthWidgetBase.hpp"
+
+namespace gui
+{
+ class Image;
+
+ class SignalStrengthWidgetBar : public SignalStrengthWidgetBase
+ {
+ Image *img = nullptr;
+
+ 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
A module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.cpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.cpp +13 -0
@@ 0,0 1,13 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "SignalStrengthWidgetBase.hpp"
+
+namespace gui
+{
+ SignalStrengthWidgetBase::SignalStrengthWidgetBase(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+ : HBox(parent, x, y, w, h)
+ {
+ setBorderColor(gui::ColorNoColor);
+ }
+} // namespace gui
A module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.hpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetBase.hpp +17 -0
@@ 0,0 1,17 @@
+// 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 "BoxLayout.hpp"
+#include <common_data/EventStore.hpp>
+
+namespace gui
+{
+ class SignalStrengthWidgetBase : public HBox
+ {
+ 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;
+ };
+} // namespace gui
A module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.cpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.cpp +32 -0
@@ 0,0 1,32 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "SignalStrengthWidgetText.hpp"
+#include "Label.hpp"
+#include "common_data/EventStore.hpp"
+#include <Utils.hpp>
+#include <Style.hpp>
+
+namespace gui
+{
+ SignalStrengthWidgetText::SignalStrengthWidgetText(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+ : SignalStrengthWidgetBase(parent, x, y, w, h)
+ {
+ label = new Label(this, 0, 0, 0, 0);
+ label->setFilled(false);
+ label->setBorderColor(gui::ColorNoColor);
+ label->setFont(style::header::font::modes);
+ label->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ label->setMaximumSize(this->getWidth(), this->getHeight());
+ }
+
+ void SignalStrengthWidgetText::show(const Store::SignalStrength data, bool shown)
+ {
+ setVisible(shown);
+ if (shown) {
+ label->setText(utils::to_string(data.rssidBm) + " dBm");
+ return;
+ }
+ }
+
+} // namespace gui
A module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.hpp => module-gui/gui/widgets/TopBar/SignalStrengthWidgetText.hpp +21 -0
@@ 0,0 1,21 @@
+// 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 "SignalStrengthWidgetBase.hpp"
+
+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;
+ };
+} // namespace gui