From de9dbea32cac6150ebb217a516acd61445dce755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Jo=C5=84ski?= Date: Thu, 12 May 2022 14:08:56 +0200 Subject: [PATCH] [BH-1474] Randomize quotes Randomize quotes --- .../presenters/HomeScreenPresenter.hpp | 3 +++ .../presenters/HomeScreenPresenter.cpp | 15 ++++++++++++++- .../presenters/StateController.cpp | 16 +--------------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp b/products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp index 9ec979d22c5911599cc24a12b76d129da2337821..493c0d686f435858e798f041d1c0fb27b59cad51 100644 --- a/products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp +++ b/products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp @@ -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 timeModel; std::shared_ptr stateController; std::unique_ptr snoozeTimer; + std::unique_ptr rngEngine; void handleCyclicDeepRefresh(); diff --git a/products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp b/products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp index 8f21eb503067f016ae072de54a8ea4a66c45878c..99b4668078d8490c120ebc7dcb546fb8a593cb6a 100644 --- a/products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp +++ b/products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp @@ -75,7 +75,8 @@ namespace app::home_screen std::unique_ptr temperatureModel, std::unique_ptr 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::random_device{}())} {} void HomeScreenPresenter::handleUpdateTimeEvent() @@ -245,4 +246,16 @@ namespace app::home_screen app->switchWindow(gui::BellBatteryStatusWindow::name, std::make_unique(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 dist(0, greetingCollection.size() - 1); + return greetingCollection[dist(*rngEngine)]; + }; } // namespace app::home_screen diff --git a/products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp b/products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp index 30e10c36ab21fb4da3e75a08c5b41a659f69890f..626a74ff50977bb614534ce0c6bbc5d940a02526 100644 --- a/products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp +++ b/products/BellHybrid/apps/application-bell-main/presenters/StateController.cpp @@ -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 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