~aleteoryx/muditaos

5badad2b087c956e38c546a66cba16cb31f72e84 — Krzysztof Móżdżyński 4 years ago 33d652c
[EGD-5443] Onboarding date and time window

Add posibility to override bottom bar in Date and Time settings window.
Change primiary action to save in OnBoardingDateAndTimeWindow
Back to previous window after settings date/time in onboarding flow
M module-apps/application-onboarding/ApplicationOnBoarding.cpp => module-apps/application-onboarding/ApplicationOnBoarding.cpp +14 -1
@@ 13,12 13,14 @@
#include "windows/NoConfigurationDialogWindow.hpp"
#include "windows/UpdateDialogWindow.hpp"
#include "windows/SkipDialogWindow.hpp"
#include "windows/OnBoardingDateAndTimeWindow.hpp"
#include "windows/OnBoardingChangeDateAndTimeWindow.hpp"

#include <service-db/DBMessage.hpp>
#include <module-services/service-appmgr/service-appmgr/messages/GetCurrentDisplayLanguageResponse.hpp>
#include <module-apps/application-settings-new/data/LanguagesData.hpp>
#include <module-services/service-db/agents/settings/SystemSettings.hpp>
#include <module-apps/windows/Dialog.hpp>
#include <module-apps/application-settings-new/windows/ChangeTimeZone.hpp>

namespace app
{


@@ 125,6 127,17 @@ namespace app
        windowsFactory.attach(gui::window::name::onBoarding_skip, [](Application *app, const std::string &name) {
            return std::make_unique<app::onBoarding::SkipDialogWindow>(app);
        });
        windowsFactory.attach(gui::window::name::onBoarding_date_and_time,
                              [](Application *app, const std::string &name) {
                                  return std::make_unique<app::onBoarding::OnBoardingDateAndTimeWindow>(app);
                              });
        windowsFactory.attach(gui::window::name::onBoarding_change_date_and_time,
                              [](Application *app, const std::string &name) {
                                  return std::make_unique<gui::OnBoardingChangeDateAndTimeWindow>(app);
                              });
        windowsFactory.attach(gui::window::name::change_time_zone, [](Application *app, const std::string &name) {
            return std::make_unique<gui::ChangeTimeZone>(app);
        });

        attachPopups({gui::popup::ID::Volume, gui::popup::ID::PhoneModes});
    }

M module-apps/application-onboarding/ApplicationOnBoarding.hpp => module-apps/application-onboarding/ApplicationOnBoarding.hpp +2 -0
@@ 14,6 14,8 @@ namespace gui::window::name
    inline constexpr auto onBoarding_no_configuration         = "OnBoardingNoConfiguration";
    inline constexpr auto onBoarding_update                   = "OnBoardingUpdate";
    inline constexpr auto onBoarding_skip                     = "OnBoardingSkipConfirm";
    inline constexpr auto onBoarding_date_and_time            = "OnBoardingDateAndTime";
    inline constexpr auto onBoarding_change_date_and_time     = "OnBoardingChangeDateAndTime";
} // namespace gui::window::name

namespace app

M module-apps/application-onboarding/CMakeLists.txt => module-apps/application-onboarding/CMakeLists.txt +3 -0
@@ 22,6 22,8 @@ target_sources(${PROJECT_NAME}
		"${CMAKE_CURRENT_LIST_DIR}/windows/NoConfigurationDialogWindow.cpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/UpdateDialogWindow.cpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/SkipDialogWindow.cpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingDateAndTimeWindow.cpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingChangeDateAndTimeWindow.cpp"
		PUBLIC
		"${CMAKE_CURRENT_LIST_DIR}/ApplicationOnBoarding.hpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingMainWindow.hpp"


@@ 35,6 37,7 @@ target_sources(${PROJECT_NAME}
		"${CMAKE_CURRENT_LIST_DIR}/windows/NoConfigurationDialogWindow.hpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/UpdateDialogWindow.hpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/SkipDialogWindow.hpp"
		"${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingDateAndTimeWindow.hpp"

		)
target_include_directories(${PROJECT_NAME}

A module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.cpp => module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.cpp +25 -0
@@ 0,0 1,25 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "OnBoardingChangeDateAndTimeWindow.hpp"
#include <module-apps/application-onboarding/ApplicationOnBoarding.hpp>
#include <InputEvent.hpp>

namespace gui
{
    OnBoardingChangeDateAndTimeWindow::OnBoardingChangeDateAndTimeWindow(app::Application *app)
        : ChangeDateAndTimeWindow(app, gui::window::name::onBoarding_change_date_and_time)
    {}

    bool OnBoardingChangeDateAndTimeWindow::onInput(const gui::InputEvent &inputEvent)
    {
        if (inputEvent.is(gui::KeyCode::KEY_ENTER)) {
            auto ret = ChangeDateAndTimeWindow::onInput(inputEvent);
            application->returnToPreviousWindow();
            return ret;
        }

        return ChangeDateAndTimeWindow::onInput(inputEvent);
    }

} /* namespace gui */

A module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.hpp => module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.hpp +18 -0
@@ 0,0 1,18 @@
// 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 <application-settings-new/windows/ChangeDateAndTimeWindow.hpp>
#include <application-settings-new/models/DateAndTimeModel.hpp>

namespace gui
{
    class OnBoardingChangeDateAndTimeWindow : public ChangeDateAndTimeWindow
    {
      public:
        explicit OnBoardingChangeDateAndTimeWindow(app::Application *app);

        bool onInput(const InputEvent &inputEvent) override;
    };
} /* namespace gui */

A module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.cpp => module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.cpp +67 -0
@@ 0,0 1,67 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "application-onboarding/ApplicationOnBoarding.hpp"
#include "OnBoardingDateAndTimeWindow.hpp"
#include "ConfigurationSuccessfulDialogWindow.hpp"
#include <module-gui/gui/input/InputEvent.hpp>
#include <module-apps/application-onboarding/data/OnBoardingSwitchData.hpp>
#include <module-apps/messages/DialogMetadataMessage.hpp>

namespace app::onBoarding
{
    OnBoardingDateAndTimeWindow::OnBoardingDateAndTimeWindow(app::Application *app) : DateAndTimeMainWindow(app)
    {}

    OnBoardingDateAndTimeWindow::~OnBoardingDateAndTimeWindow()
    {
        clearOptions();
    }

    void OnBoardingDateAndTimeWindow::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data)
    {
        DateAndTimeMainWindow::onBeforeShow(mode, data);

        bottomBar->setText(gui::BottomBar::Side::CENTER, utils::localize.get(style::strings::common::save));
        bottomBar->setText(gui::BottomBar::Side::LEFT, utils::localize.get(style::strings::common::Switch));
        bottomBar->setText(gui::BottomBar::Side::RIGHT, utils::localize.get(style::strings::common::back));
    }

    bool OnBoardingDateAndTimeWindow::onInput(const gui::InputEvent &inputEvent)
    {
        if (inputEvent.isShortPress() && inputEvent.is(gui::KeyCode::KEY_RF)) {
            return AppWindow::onInput(inputEvent);
        }
        else if (inputEvent.isShortPress() && inputEvent.is(gui::KeyCode::KEY_LF)) {
            return getFocusItem()->onActivated(nullptr);
        }
        else if (inputEvent.isShortPress() && inputEvent.is(gui::KeyCode::KEY_ENTER)) {
            auto metaData = std::make_unique<gui::DialogMetadataMessage>(
                gui::DialogMetadata{utils::localize.get("app_onboarding_title_configuration"),
                                    "success_icon_W_G",
                                    utils::localize.get("app_onboarding_configuration_successful"),
                                    "",
                                    [=]() -> bool { return true; }});
            application->switchWindow(gui::window::name::onBoarding_configuration_successful,
                                      gui::ShowMode::GUI_SHOW_INIT,
                                      std::move(metaData));
            return true;
        }
        else {
            return DateAndTimeMainWindow::onInput(inputEvent);
        }
    }

    bool OnBoardingDateAndTimeWindow::bottomBarCallback(gui::Item &item)
    {
        setBottomBarText(utils::localize.get(style::strings::common::save), gui::BottomBar::Side::CENTER);

        if (item.focus) {
            setBottomBarText(utils::localize.get(style::strings::common::Switch), gui::BottomBar::Side::LEFT);
        }
        else {
            setBottomBarText(utils::localize.get(style::strings::common::select), gui::BottomBar::Side::LEFT);
        }
        return true;
    }
} // namespace app::onBoarding

A module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.hpp => module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.hpp +23 -0
@@ 0,0 1,23 @@
// 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 <module-apps/application-settings-new/windows/DateAndTimeMainWindow.hpp>

namespace app::onBoarding
{
    class OnBoardingDateAndTimeWindow : public gui::DateAndTimeMainWindow
    {
      public:
        explicit OnBoardingDateAndTimeWindow(app::Application *app);
        ~OnBoardingDateAndTimeWindow();

      protected:
        bool bottomBarCallback(Item &item) override;

      private:
        void onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) override;
        bool onInput(const gui::InputEvent &inputEvent) override;
    };
} // namespace app::onBoarding

M module-apps/application-onboarding/windows/StartConfigurationWindow.cpp => module-apps/application-onboarding/windows/StartConfigurationWindow.cpp +2 -8
@@ 51,15 51,9 @@ namespace app::onBoarding
                                          std::make_unique<OnBoardingSwitchData>());
            }
            if (inputEvent.is(gui::KeyCode::KEY_ENTER)) {
                auto metaData = std::make_unique<gui::DialogMetadataMessage>(
                    gui::DialogMetadata{utils::localize.get("app_onboarding_title_configuration"),
                                        "success_icon_W_G",
                                        utils::localize.get("app_onboarding_configuration_successful"),
                                        "",
                                        [=]() -> bool { return true; }});
                application->switchWindow(gui::window::name::onBoarding_configuration_successful,
                application->switchWindow(gui::window::name::onBoarding_date_and_time,
                                          gui::ShowMode::GUI_SHOW_INIT,
                                          std::move(metaData));
                                          std::make_unique<OnBoardingSwitchData>());
            }
            if (inputEvent.is(gui::KeyCode::KEY_LF)) {


M module-apps/application-settings-new/windows/ChangeDateAndTimeWindow.cpp => module-apps/application-settings-new/windows/ChangeDateAndTimeWindow.cpp +2 -3
@@ 11,9 11,8 @@

namespace gui
{
    ChangeDateAndTimeWindow::ChangeDateAndTimeWindow(app::Application *app)
        : AppWindow(app, gui::window::name::change_date_and_time), dateAndTimeModel{std::make_shared<DateAndTimeModel>(
                                                                       this->application)}
    ChangeDateAndTimeWindow::ChangeDateAndTimeWindow(app::Application *app, std::string name)
        : AppWindow(app, name), dateAndTimeModel{std::make_shared<DateAndTimeModel>(this->application)}
    {
        buildInterface();
    }

M module-apps/application-settings-new/windows/ChangeDateAndTimeWindow.hpp => module-apps/application-settings-new/windows/ChangeDateAndTimeWindow.hpp +3 -1
@@ 4,6 4,7 @@
#pragma once

#include <AppWindow.hpp>
#include <application-settings-new/ApplicationSettings.hpp>
#include "application-settings-new/models/DateAndTimeModel.hpp"

namespace gui


@@ 12,7 13,8 @@ namespace gui
    class ChangeDateAndTimeWindow : public AppWindow
    {
      public:
        explicit ChangeDateAndTimeWindow(app::Application *app);
        explicit ChangeDateAndTimeWindow(app::Application *app,
                                         std::string name = gui::window::name::change_date_and_time);

        void buildInterface() override;
        bool onInput(const InputEvent &inputEvent) override;

M module-apps/application-settings-new/windows/DateAndTimeMainWindow.cpp => module-apps/application-settings-new/windows/DateAndTimeMainWindow.cpp +12 -11
@@ 35,17 35,7 @@ namespace gui
            optionList.emplace_back(std::make_unique<option::OptionSettings>(
                text,
                activatedCallback,
                [=](Item &item) {
                    if (item.focus) {
                        this->setBottomBarText(utils::localize.get(style::strings::common::Switch),
                                               BottomBar::Side::CENTER);
                    }
                    else {
                        this->setBottomBarText(utils::localize.get(style::strings::common::select),
                                               BottomBar::Side::CENTER);
                    }
                    return true;
                },
                [=](Item &item) { return bottomBarCallback(item); },
                nullptr,
                rightItem,
                false,


@@ 116,4 106,15 @@ namespace gui

        return optionList;
    }

    bool DateAndTimeMainWindow::bottomBarCallback(Item &item)
    {
        if (item.focus) {
            setBottomBarText(utils::localize.get(style::strings::common::Switch), BottomBar::Side::CENTER);
        }
        else {
            setBottomBarText(utils::localize.get(style::strings::common::select), BottomBar::Side::CENTER);
        }
        return true;
    }
} // namespace gui

M module-apps/application-settings-new/windows/DateAndTimeMainWindow.hpp => module-apps/application-settings-new/windows/DateAndTimeMainWindow.hpp +5 -3
@@ 13,11 13,13 @@ namespace gui
      public:
        explicit DateAndTimeMainWindow(app::Application *app);

      private:
      protected:
        auto buildOptionsList() -> std::list<Option> override;
        virtual bool bottomBarCallback(Item &item);

        bool automaticDateAndTimeIsOn = false;
        bool automaticTimeZoneIsOn    = false;

        bool automaticDateAndTimeIsOn              = false;
        bool automaticTimeZoneIsOn                 = false;
        utils::time::Locale::TimeFormat timeFormat = utils::time::Locale::defaultTimeFormat;
        utils::time::Locale::DateFormat dateFormat = utils::time::Locale::defaultDateFormat;
    };

M module-bsp/board/rt1051/bsp/usb => module-bsp/board/rt1051/bsp/usb +1 -1
@@ 1,1 1,1 @@
Subproject commit 07460ac1a8e2f6234d2492c842e22b28e4363d84
Subproject commit 4381632145feb752622397d1f04b8064b1e96811