~aleteoryx/muditaos

de9dbea32cac6150ebb217a516acd61445dce755 — Paweł Joński 3 years ago 434a335
[BH-1474] Randomize quotes

Randomize quotes
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 +3 -0
@@ 95,6 95,7 @@ namespace app::home_screen
        virtual void decAlarmMinute()                                                            = 0;
        virtual void switchToMenu()                                                              = 0;
        virtual void switchToBatteryStatus()                                                     = 0;
        virtual UTF8 getGreeting()                                                               = 0;

        static constexpr auto defaultTimeout = std::chrono::milliseconds{5000};
    };


@@ 138,6 139,7 @@ namespace app::home_screen
        void decAlarmMinute();
        void switchToMenu();
        void switchToBatteryStatus();
        UTF8 getGreeting();

        void setLayout(gui::LayoutGenerator layoutGenerator) override;



@@ 150,6 152,7 @@ namespace app::home_screen
        std::unique_ptr<AbstractTimeModel> timeModel;
        std::shared_ptr<AbstractController> stateController;
        std::unique_ptr<ProgressTimerWithSnoozeTimer> snoozeTimer;
        std::unique_ptr<std::mt19937> rngEngine;

        void handleCyclicDeepRefresh();


M products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp => products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp +14 -1
@@ 75,7 75,8 @@ namespace app::home_screen
                                             std::unique_ptr<AbstractTemperatureModel> temperatureModel,
                                             std::unique_ptr<AbstractTimeModel> timeModel)
        : app{app}, alarmModel{std::move(alarmModel)}, batteryModel{std::move(batteryModel)},
          temperatureModel{std::move(temperatureModel)}, timeModel{std::move(timeModel)}
          temperatureModel{std::move(temperatureModel)}, timeModel{std::move(timeModel)},
          rngEngine{std::make_unique<std::mt19937>(std::random_device{}())}
    {}

    void HomeScreenPresenter::handleUpdateTimeEvent()


@@ 245,4 246,16 @@ namespace app::home_screen
        app->switchWindow(gui::BellBatteryStatusWindow::name,
                          std::make_unique<gui::BellBatteryStatusWindow::Data>(getBatteryLvl(), isBatteryCharging()));
    }

    UTF8 HomeScreenPresenter::getGreeting()
    {
        const auto greetingCollection = utils::translate_array("app_bell_greeting_msg");
        if (greetingCollection.empty()) {
            LOG_WARN("app_bell_greeting_msg array does not exist, using default string");
            return "app_bell_greeting_msg";
        }

        std::uniform_int_distribution<std::mt19937::result_type> dist(0, greetingCollection.size() - 1);
        return greetingCollection[dist(*rngEngine)];
    };
} // namespace app::home_screen

M products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp => products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp +1 -15
@@ 80,20 80,6 @@ namespace app::home_screen
            };
            auto isSnoozeActive = [](AbstractAlarmModel &alarmModel) -> bool { return alarmModel.isSnoozeActive(); };
            auto snooze         = [](AbstractController &controller) { controller.snooze(true); };
            auto getRand        = [](const std::uint32_t lo, const std::uint32_t hi) -> std::uint32_t {
                std::random_device dev;
                std::mt19937 rng(dev());
                std::uniform_int_distribution<std::mt19937::result_type> dist(lo, hi);
                return dist(rng);
            };
            auto getGreeting = []() -> UTF8 {
                const auto greetingCollection = utils::translate_array("app_bell_greeting_msg");
                if (greetingCollection.empty()) {
                    LOG_WARN("app_bell_greeting_msg array does not exist, using default string");
                    return "app_bell_greeting_msg";
                }
                return greetingCollection[Helpers::getRand(0, greetingCollection.size() - 1)];
            };
            auto turnOffRingingAlarm = [](AbstractAlarmModel &alarmModel) { alarmModel.turnOff(); };
            auto updateBatteryStatus = [](AbstractView &view, AbstractBatteryModel &batteryModel) {
                view.setBatteryLevelState(batteryModel.getLevelState());


@@ 252,7 238,7 @@ namespace app::home_screen
                alarmModel.turnOff();
                alarmModel.activate(false);
                view.setViewState(ViewState::AlarmRingingDeactivatedWait);
                view.setTextDescription(Helpers::getGreeting());
                view.setTextDescription(presenter.getGreeting());
            };
            auto exit = [](AbstractView &view, AbstractPresenter &presenter) { presenter.detachTimer(); };
        } // namespace AlarmRingingDeactivatedWait