~aleteoryx/muditaos

81a62fdb16f1c41cf7227d2c2978086f4b831be0 — alek 5 years ago d19406f
[EGD-4158] Added network access technology indicator
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 &timestamp, 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);