M module-apps/Application.cpp => module-apps/Application.cpp +16 -2
@@ 126,6 126,7 @@ namespace app
}
currwin->setSIM();
currwin->updateSignalStrength();
+ currwin->updateNetworkAccessTechnology();
std::list<gui::DrawCommand *> commandsList = currwin->buildDrawList();
@@ 203,8 204,13 @@ namespace app
sys::Message_t Application::DataReceivedHandler(sys::DataMessage *msgl)
{
auto msg = dynamic_cast<CellularNotificationMessage *>(msgl);
- if (msg != nullptr && msg->type == CellularNotificationMessage::Type::SignalStrengthUpdate) {
- return handleSignalStrengthUpdate(msgl);
+ if (msg != nullptr) {
+ if (msg->type == CellularNotificationMessage::Type::SignalStrengthUpdate) {
+ return handleSignalStrengthUpdate(msgl);
+ }
+ if (msg->type == CellularNotificationMessage::Type::NetworkStatusUpdate) {
+ return handleNetworkAccessTechnologyUpdate(msgl);
+ }
}
else if (msgl->messageType == MessageType::AppInputEvent) {
return handleInputEvent(msgl);
@@ 259,6 265,14 @@ namespace app
return msgHandled();
}
+ sys::Message_t Application::handleNetworkAccessTechnologyUpdate(sys::DataMessage *msgl)
+ {
+ if ((state == State::ACTIVE_FORGROUND) && getCurrentWindow()->updateNetworkAccessTechnology()) {
+ refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
+ }
+ return msgHandled();
+ }
+
sys::Message_t Application::handleInputEvent(sys::DataMessage *msgl)
{
AppInputEventMessage *msg = reinterpret_cast<AppInputEventMessage *>(msgl);
M module-apps/Application.hpp => module-apps/Application.hpp +1 -0
@@ 116,6 116,7 @@ namespace app
State state = State::DEACTIVATED;
sys::Message_t handleSignalStrengthUpdate(sys::DataMessage *msgl);
+ sys::Message_t handleNetworkAccessTechnologyUpdate(sys::DataMessage *msgl);
sys::Message_t handleInputEvent(sys::DataMessage *msgl);
sys::Message_t handleKBDKeyEvent(sys::DataMessage *msgl);
sys::Message_t handleBatteryLevel(sys::DataMessage *msgl);
M module-apps/windows/AppWindow.cpp => module-apps/windows/AppWindow.cpp +5 -0
@@ 90,6 90,11 @@ namespace gui
return topBar->updateSignalStrength();
}
+ bool AppWindow::updateNetworkAccessTechnology()
+ {
+ return topBar->updateNetworkAccessTechnology();
+ }
+
bool AppWindow::updateTime(const UTF8 &timeStr)
{
topBar->setTime(timeStr);
M module-apps/windows/AppWindow.hpp => module-apps/windows/AppWindow.hpp +1 -0
@@ 68,6 68,7 @@ namespace gui
bool updateBatteryLevel(uint32_t percentage);
// updates battery level in the window
bool updateSignalStrength();
+ bool updateNetworkAccessTechnology();
virtual bool updateTime(const UTF8 &timeStr);
virtual bool updateTime(const uint32_t ×tamp, bool mode24H);
void setTitle(const UTF8 &text);
M module-gui/gui/widgets/Style.hpp => module-gui/gui/widgets/Style.hpp +1 -0
@@ 27,6 27,7 @@ namespace style
namespace font
{
const inline std::string time = "gt_pressura_regular_24";
+ const inline std::string modes = "gt_pressura_regular_20";
const inline std::string title = "gt_pressura_bold_32";
}; // namespace font
}; // namespace header
M module-gui/gui/widgets/TopBar.cpp => module-gui/gui/widgets/TopBar.cpp +51 -1
@@ 13,7 13,13 @@
namespace gui
{
-
+ namespace networkTechnology
+ {
+ constexpr uint32_t x = 80;
+ constexpr uint32_t y = 21;
+ constexpr uint32_t w = 130;
+ constexpr uint32_t h = 20;
+ } // namespace networkTechnology
const uint32_t TopBar::signalOffset = 35;
const uint32_t TopBar::batteryOffset = 413;
gui::TopBar::TimeMode TopBar::timeMode = TimeMode::TIME_24H;
@@ 101,6 107,15 @@ namespace gui
timeLabel->setFont(style::header::font::time);
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));
+ updateNetworkAccessTechnology();
}
void TopBar::setActive(std::list<std::pair<TopBar::Elements, bool>> elements)
@@ 148,6 163,10 @@ namespace gui
elements.sim = active;
simSet();
break;
+ case Elements::NETWORK_ACCESS_TECHNOLOGY:
+ elements.networkAccessTechnology = active;
+ updateNetworkAccessTechnology();
+ break;
};
}
@@ 217,6 236,37 @@ namespace gui
return true;
}
+ bool TopBar::updateNetworkAccessTechnology()
+ {
+ if (elements.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;
+ }
+ }
+ return true;
+ }
+
void TopBar::setTime(const UTF8 &time)
{
timeLabel->setText(time);
M module-gui/gui/widgets/TopBar.hpp => module-gui/gui/widgets/TopBar.hpp +7 -2
@@ 41,6 41,7 @@ namespace gui
BATTERY,
TIME,
SIM,
+ NETWORK_ACCESS_TECHNOLOGY
};
enum class TimeMode
{
@@ 50,7 51,8 @@ namespace gui
static uint32_t time;
protected:
- Label *timeLabel;
+ Label *timeLabel = nullptr;
+ Label *networkAccessTechnologyLabel = nullptr;
Image *signal[static_cast<size_t>(Store::RssiBar::noOfSupprtedBars)];
Image *lock;
std::array<Image *, batteryLevelCount> battery = {nullptr};
@@ 70,7 72,8 @@ namespace gui
bool battery : 1;
bool time : 1;
bool sim : 1;
- } elements = {false, false, false, false, true};
+ bool networkAccessTechnology : 1;
+ } elements = {false, false, false, false, true, true};
public:
TopBar();
@@ 102,6 105,8 @@ namespace gui
*/
bool updateSignalStrength();
+ bool updateNetworkAccessTechnology();
+
void simSet();
void setTime(const UTF8 &time);
void setTime(const uint32_t &time, bool mode24H);