~aleteoryx/muditaos

a0165e40b46877ff6df9200e76f3384457584ec8 — Paweł Joński 3 years ago 8a1bffd
[BH-1539] Meditation finish will redirect to homescreen

Meditation finish will dedirect to homescreen
M products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp => products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp +7 -2
@@ 69,7 69,12 @@ namespace gui
    void BellBedtimeWindow::exit()
    {
        presenter->saveData();
        application->switchWindow(gui::window::bell_finished::defaultName,
                                  BellFinishedWindowData::Factory::create("circle_success_big", "", "", true));
        application->switchWindow(
            gui::window::bell_finished::defaultName,
            BellFinishedWindowData::Factory::create("circle_success_big",
                                                    "",
                                                    "",
                                                    BellFinishedWindowData::ExitBehaviour::CloseApplication,
                                                    std::chrono::seconds::zero()));
    }
} /* namespace gui */

M products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp => products/BellHybrid/apps/application-bell-meditation-timer/presenter/MeditationProgressPresenter.cpp +15 -2
@@ 83,7 83,16 @@ namespace app::meditation
    void MeditationProgressPresenter::abandon()
    {
        timer->stop();
        app->switchWindow(gui::name::window::main_window);
        const auto elapsed     = std::chrono::duration_cast<std::chrono::minutes>(timer->getElapsed());
        const auto summaryText = utils::translate("app_meditation_summary") + std::to_string(elapsed.count()) + " " +
                                 utils::language::getCorrectMinutesNumeralForm(elapsed.count());
        app->switchWindow(
            gui::window::bell_finished::defaultName,
            gui::BellFinishedWindowData::Factory::create("big_namaste_W_G",
                                                         "MeditationTimerWindow",
                                                         summaryText,
                                                         gui::BellFinishedWindowData::ExitBehaviour::SwitchWindow,
                                                         endWindowTimeout));
    }

    void MeditationProgressPresenter::finish()


@@ 94,7 103,11 @@ namespace app::meditation
                                 utils::language::getCorrectMinutesAccusativeForm(elapsed.count());
        app->switchWindow(
            gui::window::bell_finished::defaultName,
            gui::BellFinishedWindowData::Factory::create("big_namaste_W_G", "", summaryText, true, endWindowTimeout));
            gui::BellFinishedWindowData::Factory::create("big_namaste_W_G",
                                                         "",
                                                         summaryText,
                                                         gui::BellFinishedWindowData::ExitBehaviour::ReturnToHomescreen,
                                                         endWindowTimeout));
    }

    void MeditationProgressPresenter::onProgressFinished()

M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp +1 -1
@@ 109,7 109,7 @@ namespace gui
        }
        if (inputEvent.isShortRelease(gui::KeyCode::KEY_RF)) {
            reinterpret_cast<app::Application *>(application)->resumeIdleTimer();
            presenter->finish();
            presenter->abandon();
            return true;
        }


M products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp => products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp +7 -2
@@ 150,8 150,13 @@ namespace app
        }

        auto [icon, text] = getDisplayDataFromState();
        switchWindow(gui::window::name::informationOnBoardingWindow,
                     gui::BellFinishedWindowData::Factory::create(icon, windowToReturn, utils::translate(text)));
        switchWindow(
            gui::window::name::informationOnBoardingWindow,
            gui::BellFinishedWindowData::Factory::create(icon,
                                                         windowToReturn,
                                                         utils::translate(text),
                                                         gui::BellFinishedWindowData::ExitBehaviour::SwitchWindow,
                                                         std::chrono::seconds::zero()));
    }

    OnBoarding::InformationDisplay ApplicationBellOnBoarding::getDisplayDataFromState()

M products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp +21 -11
@@ 13,24 13,35 @@ namespace gui
    struct BellFinishedWindowData : public gui::SwitchData
    {
      public:
        enum class ExitBehaviour
        {
            SwitchWindow,
            CloseApplication,
            ReturnToHomescreen,
        };

        struct Factory
        {
            static std::unique_ptr<BellFinishedWindowData> create(
                const UTF8 &icon,
                const std::string &windowToReturn,
                const UTF8 &text                   = "",
                bool closeApplication              = false,
                const std::chrono::seconds timeout = std::chrono::seconds::zero())
            static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon,
                                                                  const std::string &windowToReturn,
                                                                  const UTF8 &text,
                                                                  ExitBehaviour exitBehaviour,
                                                                  std::chrono::seconds timeout)
            {
                return std::unique_ptr<BellFinishedWindowData>(
                    new BellFinishedWindowData(icon, windowToReturn, text, closeApplication, timeout));
                    new BellFinishedWindowData(icon, windowToReturn, text, exitBehaviour, timeout));
            }

            static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon, const std::string &windowToReturn)
            {
                return create(icon, windowToReturn, "", ExitBehaviour::SwitchWindow, std::chrono::seconds::zero());
            }
        };

        UTF8 icon{};
        std::string windowToReturn;
        UTF8 text{};
        bool closeApplication;
        ExitBehaviour exitBehaviour;
        std::chrono::seconds timeout;

      private:


@@ 39,10 50,9 @@ namespace gui
        BellFinishedWindowData(const UTF8 &icon,
                               const std::string &windowToReturn,
                               const UTF8 &text                   = "",
                               bool closeApplication              = false,
                               const ExitBehaviour exitBehaviour  = ExitBehaviour::SwitchWindow,
                               const std::chrono::seconds timeout = std::chrono::seconds::zero())
            : icon{icon}, windowToReturn{windowToReturn}, text{text}, closeApplication{closeApplication}, timeout{
                                                                                                              timeout}
            : icon{icon}, windowToReturn{windowToReturn}, text{text}, exitBehaviour{exitBehaviour}, timeout{timeout}
        {}
    };
} // namespace gui

M products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp => products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp +2 -2
@@ 28,8 28,8 @@ namespace gui
        void onBeforeShow(ShowMode mode, SwitchData *data) override;

        Icon *icon{};
        std::string windowToReturn;
        bool closeApplication; // is close application is true windowToReturn variable is ignored
        std::string windowToReturn{};
        BellFinishedWindowData::ExitBehaviour exitBehaviour;
    };

} // namespace gui

M products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp +9 -4
@@ 23,11 23,16 @@ namespace gui

    void BellFinishedWindow::exit()
    {
        if (closeApplication) {
        switch (exitBehaviour) {
        case BellFinishedWindowData::ExitBehaviour::CloseApplication:
            app::manager::Controller::switchBack(application);
        }
        else {
            break;
        case BellFinishedWindowData::ExitBehaviour::SwitchWindow:
            application->switchWindow(windowToReturn);
            break;
        case BellFinishedWindowData::ExitBehaviour::ReturnToHomescreen:
            app::manager::Controller::sendAction(application, app::manager::actions::Home);
            break;
        }
    }



@@ 64,7 69,7 @@ namespace gui
            icon->text->setRichText(metadata->text);
            icon->resizeItems();
            windowToReturn   = metadata->windowToReturn;
            closeApplication = metadata->closeApplication;
            exitBehaviour    = metadata->exitBehaviour;
            if (metadata->timeout != std::chrono::seconds::zero()) {
                resetTimer(metadata->timeout);
            }