~aleteoryx/muditaos

4e9dbda5c88133a87e6199c305489ef2ca7ac42e — Tigran Soghbatyan 4 years ago 573c8ea
[BH-1094] Fix bedtime confirmation window

Remove BellFinishedCallbackWindow class
Add ability to return to the previous app in BellFinishedWindow
M products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp => products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp +3 -3
@@ 5,9 5,9 @@
#include "presenter/BellBedtimeWindowPresenter.hpp"
#include "windows/BellBedtimeWindow.hpp"
#include "common/models/BedtimeModel.hpp"
#include <common/windows/BellFinishedWindow.hpp>
#include "models/BedtimeListItemProvider.hpp"

#include <common/windows/BellFinishedCallbackWindow.hpp>
namespace app
{
    ApplicationBellBedtime::ApplicationBellBedtime(std::string name,


@@ 38,9 38,9 @@ namespace app
            return std::make_unique<gui::BellBedtimeWindow>(app, std::move(presenter));
        });

        windowsFactory.attach(gui::BellFinishedCallbackWindow::defaultName,
        windowsFactory.attach(gui::window::bell_finished::defaultName,
                              [](ApplicationCommon *app, const std::string &name) {
                                  return std::make_unique<gui::BellFinishedCallbackWindow>(app);
                                  return std::make_unique<gui::BellFinishedWindow>(app);
                              });

        attachPopups({gui::popup::ID::AlarmActivated,

M products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp => products/BellHybrid/apps/application-bell-bedtime/windows/BellBedtimeWindow.cpp +3 -6
@@ 14,7 14,7 @@
#include <module-gui/gui/widgets/Image.hpp>

#include <widgets/SideListView.hpp>
#include <common/windows/BellFinishedCallbackWindow.hpp>
#include <common/windows/BellFinishedWindow.hpp>
#include "service-appmgr/Controller.hpp" // for Controller

namespace gui


@@ 70,11 70,8 @@ namespace gui
    {
        presenter->saveData();
        if (showSuccessWindow) {
            application->switchWindow(BellFinishedCallbackWindow::defaultName,
                                      BellFinishedCallbackWindowSwitchData::Factory::create(
                                          "circle_success",
                                          utils::translate("app_bell_bedtime_set_finished"),
                                          [this]() { app::manager::Controller::switchBack(application); }));
            application->switchWindow(gui::window::bell_finished::defaultName,
                                      BellFinishedWindowData::Factory::create("circle_success_big", "", "", true));
        }
        else {
            application->returnToPreviousWindow();

M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +0 -6
@@ 35,7 35,6 @@
#include <common/BellPowerOffPresenter.hpp>
#include <common/models/BedtimeModel.hpp>
#include <common/windows/BellFinishedWindow.hpp>
#include <common/windows/BellFinishedCallbackWindow.hpp>
#include <common/windows/BellTurnOffWindow.hpp>
#include <common/popups/BellTurnOffOptionWindow.hpp>
#include <common/models/AudioModel.hpp>


@@ 115,11 114,6 @@ namespace app
                                  return std::make_unique<gui::BellFinishedWindow>(app);
                              });

        windowsFactory.attach(gui::BellFinishedCallbackWindow::defaultName,
                              [](ApplicationCommon *app, const std::string &name) {
                                  return std::make_unique<gui::BellFinishedCallbackWindow>(app);
                              });

        windowsFactory.attach(gui::window::name::bellSettingsHomeView,
                              [](ApplicationCommon *app, const std::string &name) {
                                  return std::make_unique<gui::BellSettingsHomeViewWindow>(app);

M products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp +0 -1
@@ 15,7 15,6 @@
#include <service-appmgr/messages/SwitchRequest.hpp>
#include <windows/advanced/AboutYourBellWindow.hpp>
#include <common/windows/BellFactoryReset.hpp>
#include <common/windows/BellFinishedCallbackWindow.hpp>
#include <common/windows/BellTurnOffWindow.hpp>

namespace gui

M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +0 -3
@@ 18,7 18,6 @@ target_sources(application-bell-common
        src/BellListItemProvider.cpp
        src/windows/BellFactoryReset.cpp
        src/windows/BellFinishedWindow.cpp
        src/windows/BellFinishedCallbackWindow.cpp
        src/windows/BellTurnOffWindow.cpp
        src/windows/BellWelcomeWindow.cpp
        src/BellSideListItemWithCallbacks.cpp


@@ 45,11 44,9 @@ target_sources(application-bell-common
        include/common/BellPowerOffPresenter.hpp
        include/common/windows/BellFactoryReset.hpp
        include/common/windows/BellFinishedWindow.hpp
        include/common/windows/BellFinishedCallbackWindow.hpp
        include/common/windows/BellTurnOffWindow.hpp
        include/common/windows/BellWelcomeWindow.hpp
        include/common/TimeUtils.hpp
        include/common/data/BellFinishedCallbackWindowSwitchData.hpp
        include/common/models/AbstractAlarmModel.hpp
        include/common/models/AbstractBedtimeModel.hpp
        include/common/models/AbstractSettingsModel.hpp

D products/BellHybrid/apps/common/include/common/data/BellFinishedCallbackWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedCallbackWindowSwitchData.hpp +0 -37
@@ 1,37 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include <functional> // for function
#include <SwitchData.hpp>
#include <utf8/UTF8.hpp>

namespace gui
{
    struct BellFinishedCallbackWindowSwitchData : public gui::SwitchData
    {
      public:
        struct Factory
        {
            static std::unique_ptr<BellFinishedCallbackWindowSwitchData> create(const UTF8 &icon,
                                                                                const UTF8 &text,
                                                                                std::function<void()> finishCallback)
            {
                return std::unique_ptr<BellFinishedCallbackWindowSwitchData>(
                    new BellFinishedCallbackWindowSwitchData(icon, text, finishCallback));
            }
        };

        UTF8 icon{};
        UTF8 text{};
        std::function<void()> finishCallback;

      private:
        BellFinishedCallbackWindowSwitchData() = default;

        BellFinishedCallbackWindowSwitchData(const UTF8 &icon, const UTF8 &text, std::function<void()> finishCallback)
            : icon{icon}, text{text}, finishCallback{finishCallback}
        {}
    };
} // namespace gui

M products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp +10 -4
@@ 15,21 15,27 @@ namespace gui
        {
            static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon,
                                                                  const std::string &windowToReturn,
                                                                  const UTF8 &text = "")
                                                                  const UTF8 &text      = "",
                                                                  bool closeApplication = false)
            {
                return std::unique_ptr<BellFinishedWindowData>(new BellFinishedWindowData(icon, windowToReturn, text));
                return std::unique_ptr<BellFinishedWindowData>(
                    new BellFinishedWindowData(icon, windowToReturn, text, closeApplication));
            }
        };

        UTF8 icon{};
        std::string windowToReturn;
        UTF8 text{};
        bool closeApplication;

      private:
        BellFinishedWindowData() = default;

        BellFinishedWindowData(const UTF8 &icon, const std::string &windowToReturn, const UTF8 &text = "")
            : icon{icon}, windowToReturn{windowToReturn}, text{text}
        BellFinishedWindowData(const UTF8 &icon,
                               const std::string &windowToReturn,
                               const UTF8 &text      = "",
                               bool closeApplication = false)
            : icon{icon}, windowToReturn{windowToReturn}, text{text}, closeApplication{closeApplication}
        {}
    };
} // namespace gui

D products/BellHybrid/apps/common/include/common/windows/BellFinishedCallbackWindow.hpp => products/BellHybrid/apps/common/include/common/windows/BellFinishedCallbackWindow.hpp +0 -30
@@ 1,30 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include <common/data/BellFinishedCallbackWindowSwitchData.hpp>
#include <apps-common/messages/DialogMetadataMessage.hpp>
#include <apps-common/popups/WindowWithTimer.hpp>

namespace gui
{
    class Icon;

    class BellFinishedCallbackWindow : public WindowWithTimer
    {
      public:
        static constexpr auto defaultName = "BellFinishedCallbackWindow";

        explicit BellFinishedCallbackWindow(app::ApplicationCommon *app, const std::string &name = defaultName);

      protected:
        void buildInterface() override;
        bool onInput(const InputEvent &inputEvent) override;
        void onBeforeShow(ShowMode mode, SwitchData *data) override;

        Icon *icon{};
        std::function<void()> finishCallback = nullptr;
    };

} // namespace gui

M products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp => products/BellHybrid/apps/common/include/common/windows/BellFinishedWindow.hpp +3 -1
@@ 11,7 11,7 @@ namespace gui
{
    namespace window::bell_finished
    {
        constexpr inline auto defaultName         = "BellFinishedWindow";
        constexpr inline auto defaultName = "BellFinishedWindow";
    } // namespace window::bell_finished

    class Icon;


@@ 24,11 24,13 @@ namespace gui

      protected:
        void buildInterface() override;
        void exit();
        bool onInput(const InputEvent &inputEvent) override;
        void onBeforeShow(ShowMode mode, SwitchData *data) override;

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

} // namespace gui

D products/BellHybrid/apps/common/src/windows/BellFinishedCallbackWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedCallbackWindow.cpp +0 -59
@@ 1,59 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "common/windows/BellFinishedCallbackWindow.hpp"
#include "common/data/BellFinishedCallbackWindowSwitchData.hpp"
#include <apps-common/ApplicationCommon.hpp>
#include <gui/input/InputEvent.hpp>
#include <gui/widgets/Icon.hpp>

namespace gui
{

    BellFinishedCallbackWindow::BellFinishedCallbackWindow(app::ApplicationCommon *app, const std::string &name)
        : WindowWithTimer(app, name)
    {
        buildInterface();

        timerCallback = [this](Item &, sys::Timer &) {
            if (this->finishCallback) {
                this->finishCallback();
            }
            return true;
        };
    }

    void BellFinishedCallbackWindow::buildInterface()
    {
        WindowWithTimer::buildInterface();

        statusBar->setVisible(false);
        header->setTitleVisibility(false);
        navBar->setVisible(false);

        icon = new Icon(this, 0, 0, style::window_width, style::window_height, {}, {});
        icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
    }

    bool BellFinishedCallbackWindow::onInput(const InputEvent &inputEvent)
    {
        if (inputEvent.isShortRelease(KeyCode::KEY_ENTER) || inputEvent.isShortRelease(KeyCode::KEY_RF)) {
            if (this->finishCallback) {
                this->finishCallback();
            }
            return true;
        }
        return false;
    }

    void BellFinishedCallbackWindow::onBeforeShow(ShowMode mode, SwitchData *data)
    {
        WindowWithTimer::onBeforeShow(mode, data);

        if (auto metadata = dynamic_cast<BellFinishedCallbackWindowSwitchData *>(data)) {
            icon->image->set(metadata->icon);
            finishCallback = metadata->finishCallback;
        }
    }

} // namespace gui

M products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp +15 -4
@@ 5,6 5,7 @@
#include <apps-common/ApplicationCommon.hpp>
#include <gui/input/InputEvent.hpp>
#include <gui/widgets/Icon.hpp>
#include "service-appmgr/Controller.hpp"

namespace gui
{


@@ 13,13 14,22 @@ namespace gui
        : WindowWithTimer(app, name)
    {
        buildInterface();

        timerCallback = [this](Item &, sys::Timer &) {
            application->switchWindow(windowToReturn);
            exit();
            return true;
        };
    }

    void BellFinishedWindow::exit()
    {
        if (closeApplication) {
            app::manager::Controller::switchBack(application);
        }
        else {
            application->switchWindow(windowToReturn);
        }
    }

    void BellFinishedWindow::buildInterface()
    {
        WindowWithTimer::buildInterface();


@@ 37,7 47,7 @@ namespace gui
    bool BellFinishedWindow::onInput(const InputEvent &inputEvent)
    {
        if (inputEvent.isShortRelease(KeyCode::KEY_ENTER) || inputEvent.isShortRelease(KeyCode::KEY_RF)) {
            application->switchWindow(windowToReturn);
            exit();
            return true;
        }
        return false;


@@ 51,7 61,8 @@ namespace gui
            icon->image->set(metadata->icon);
            icon->text->setRichText(metadata->text);
            icon->resizeItems();
            windowToReturn = metadata->windowToReturn;
            windowToReturn   = metadata->windowToReturn;
            closeApplication = metadata->closeApplication;
        }
    }