~aleteoryx/muditaos

7d85e6b13e31f48aa0368cb7d49ac0e6e33313d9 — Mateusz Piesta 3 years ago 90543e2
[BH-1551] Fix GUI refreshing

Fixed GUI refreshing while
on the home screen, power nap progress
and relaxation progress window.
M products/BellHybrid/apps/application-bell-background-sounds/windows/BGSoundsProgressWindow.cpp => products/BellHybrid/apps/application-bell-background-sounds/windows/BGSoundsProgressWindow.cpp +1 -1
@@ 175,6 175,6 @@ namespace gui
        if (presenter) {
            presenter->handleUpdateTimeEvent();
        }
        return RefreshModes::GUI_REFRESH_NONE;
        return RefreshModes::GUI_REFRESH_FAST;
    }
} // namespace gui

M products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp => products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp +4 -3
@@ 7,6 7,7 @@
#include <common/models/AbstractAlarmModel.hpp>
#include <common/layouts/BaseHomeScreenLayoutProvider.hpp>
#include <common/layouts/HomeScreenLayouts.hpp>
#include <gui/Common.hpp>
#include <gui/input/InputEvent.hpp>
#include <module-utils/EventStore/EventStore.hpp>
#include <Timers/TimerHandle.hpp>


@@ 73,7 74,7 @@ namespace app::home_screen
      public:
        virtual ~AbstractPresenter() noexcept                                                    = default;
        virtual void createData()                                                                = 0;
        virtual void handleUpdateTimeEvent()                                                     = 0;
        virtual gui::RefreshModes handleUpdateTimeEvent()                                        = 0;
        virtual bool handleInputEvent(const gui::InputEvent &inputEvent)                         = 0;
        virtual void onBeforeShow()                                                              = 0;
        virtual void onDatabaseMessage(db::NotificationMessage *msg)                             = 0;


@@ 116,7 117,7 @@ namespace app::home_screen
        HomeScreenPresenter(HomeScreenPresenter &&oth)            = delete;

        void createData() override;
        void handleUpdateTimeEvent() override;
        gui::RefreshModes handleUpdateTimeEvent() override;
        bool handleInputEvent(const gui::InputEvent &inputEvent) override;
        void onBeforeShow() override;
        void onDatabaseMessage(db::NotificationMessage *msg) override;


@@ 154,7 155,7 @@ namespace app::home_screen
        std::unique_ptr<ProgressTimerWithSnoozeTimer> snoozeTimer;
        std::unique_ptr<std::mt19937> rngEngine;

        void handleCyclicDeepRefresh();
        gui::RefreshModes handleCyclicDeepRefresh();

        static constexpr auto timerName  = "HS_timer";
        static constexpr auto snoozeTick = std::chrono::seconds(1);

M products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp => products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp +6 -4
@@ 78,11 78,11 @@ namespace app::home_screen
          timeModel{timeModel}, rngEngine{std::make_unique<std::mt19937>(std::random_device{}())}
    {}

    void HomeScreenPresenter::handleUpdateTimeEvent()
    gui::RefreshModes HomeScreenPresenter::handleUpdateTimeEvent()
    {
        getView()->setTime(timeModel.getCurrentTime());
        stateController->handleTimeUpdateEvent();
        handleCyclicDeepRefresh();
        return handleCyclicDeepRefresh();
    }

    void HomeScreenPresenter::handleAlarmRingingEvent()


@@ 198,16 198,18 @@ namespace app::home_screen
        return false;
    }

    void HomeScreenPresenter::handleCyclicDeepRefresh()
    gui::RefreshModes HomeScreenPresenter::handleCyclicDeepRefresh()
    {
        constexpr auto deepRefreshPeriod = 30;
        static auto refreshCount         = 0;
        gui::RefreshModes refresh{gui::RefreshModes::GUI_REFRESH_FAST};

        if (refreshCount >= deepRefreshPeriod) {
            app->refreshWindow(gui::RefreshModes::GUI_REFRESH_DEEP);
            refresh      = gui::RefreshModes::GUI_REFRESH_DEEP;
            refreshCount = 0;
        }
        refreshCount++;
        return refresh;
    }
    void HomeScreenPresenter::handleBatteryStatus()
    {

M products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.cpp +1 -1
@@ 167,7 167,7 @@ namespace gui
    RefreshModes BellHomeScreenWindow::updateTime()
    {
        if (presenter) {
            presenter->handleUpdateTimeEvent();
            return presenter->handleUpdateTimeEvent();
        }
        return RefreshModes::GUI_REFRESH_NONE;
    }

M products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp => products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp +1 -1
@@ 146,7 146,7 @@ namespace gui
        if (presenter) {
            presenter->handleUpdateTimeEvent();
        }
        return RefreshModes::GUI_REFRESH_NONE;
        return RefreshModes::GUI_REFRESH_FAST;
    }

    void PowerNapProgressWindow::onBeforeShow(ShowMode mode, SwitchData *data)