~aleteoryx/muditaos

3b2a0117ee0409b426e0e86dde592e97e9df5bb0 — Lefucjusz 1 year, 10 months ago cd6db64
[BH-1891] Change bedtime chime list to vertical

* Changed horizontal list in bedtime chime
to vertical one.
* Removed unused GUI objects.
23 files changed, 71 insertions(+), 298 deletions(-)

M image/system_a/data/lang/Deutsch.json
M image/system_a/data/lang/English.json
M image/system_a/data/lang/Espanol.json
M image/system_a/data/lang/Francais.json
M image/system_a/data/lang/Polski.json
M products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp
M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp
M products/BellHybrid/apps/application-bell-settings/CMakeLists.txt
M products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/BedtimeSettingsListItemProvider.cpp
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/BedtimeSettingsListItemProvider.hpp
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.cpp
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.hpp
M products/BellHybrid/apps/application-bell-settings/presenter/BedtimeSettingsPresenter.cpp
M products/BellHybrid/apps/application-bell-settings/presenter/BedtimeSettingsPresenter.hpp
D products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp
D products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp
M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.cpp
M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.hpp
D products/BellHybrid/apps/application-bell-settings/windows/bedtime_settings/BellSettingsBedtimeToneSettingsWindow.cpp
D products/BellHybrid/apps/application-bell-settings/windows/bedtime_settings/BellSettingsBedtimeToneSettingsWindow.hpp
M products/BellHybrid/apps/common/include/common/models/BedtimeModel.hpp
M products/BellHybrid/apps/common/src/models/BedtimeModel.cpp
M image/system_a/data/lang/Deutsch.json => image/system_a/data/lang/Deutsch.json +1 -1
@@ 94,7 94,7 @@
    "app_bell_settings_alarm_settings_volume": "Alarmlautst\u00e4rke",
    "app_bell_settings_bedtime_settings_tone": "Klang",
    "app_bell_settings_bedtime_settings_volume": "<text>Lautst\u00e4rke</text>",
    "app_bell_settings_bedtime_tone": "Schlafens-Klang",
    "app_bell_settings_bedtime_chime": "Schlafens-Klang",
    "app_bell_settings_display_factory_reset_confirmation": "<text>L\u00f6scht alle Benutzerdateien<br/>und setzt das Ger\u00e4t auf<br/>Werkseinstellungen zur\u00fcck.</text>",
    "app_bell_settings_factory_reset": "Zur\u00fccksetzen",
    "app_bell_settings_factory_reset_option_back": "Zur\u00fcck",

M image/system_a/data/lang/English.json => image/system_a/data/lang/English.json +4 -4
@@ 126,9 126,9 @@
    "app_bell_settings_alarm_settings_title": "Alarm settings",
    "app_bell_settings_alarm_settings_tone": "Main alarm tone",
    "app_bell_settings_alarm_settings_volume": "Main alarm volume",
    "app_bell_settings_bedtime_settings_tone": "Bedtime tone",
    "app_bell_settings_bedtime_settings_volume": "<text>Bedtime tone<br />volume</text>",
    "app_bell_settings_bedtime_tone": "Bedtime tone",
    "app_bell_settings_bedtime_settings_tone": "Bedtime chime",
    "app_bell_settings_bedtime_settings_volume": "Bedtime volume",
    "app_bell_settings_bedtime_chime": "Bedtime chime",
    "app_bell_settings_display_factory_reset_confirmation": "<text>Factory reset will delete all<br/>users files and return device<br/>to factory settings.</text>",
    "app_bell_settings_factory_reset": "Factory reset",
    "app_bell_settings_factory_reset_option_back": "Back",


@@ 746,7 746,7 @@
    "tethering_menu_access_decline": "<text>Tethering is on.<br /><br />To access menu,<br />turn tethering off.</text>",
    "tethering_phone_mode_change_prohibited": "<text>Tethering is on.<br /><br />Other modes (Connected, DND,<br />Offline) are overriden by this mode<br />and are not working.</text>",
    "tethering_turn_off_question": "Turn tethering off?",
    "unsaved_changes": "Unsaved4 changes",
    "unsaved_changes": "Unsaved changes",
    "battery_low": "Low battery",
    "battery_remaining": "<text><token>$BATTERY</token>% battery remaining</text>"
}

M image/system_a/data/lang/Espanol.json => image/system_a/data/lang/Espanol.json +1 -1
@@ 93,7 93,7 @@
    "app_bell_settings_alarm_settings_volume": "Volumen de alarma",
    "app_bell_settings_bedtime_settings_tone": "Hora de dormir",
    "app_bell_settings_bedtime_settings_volume": "Volumen",
    "app_bell_settings_bedtime_tone": "Hora de dormir",
    "app_bell_settings_bedtime_chime": "Hora de dormir",
    "app_bell_settings_display_factory_reset_confirmation": "<text>La configuraci\u00f3n de f\u00e1brica<br/>eliminar\u00e1 todos los archivos.</text>",
    "app_bell_settings_factory_reset": "Restablecer",
    "app_bell_settings_factory_reset_option_back": "Atr\u00e1s",

M image/system_a/data/lang/Francais.json => image/system_a/data/lang/Francais.json +1 -1
@@ 95,7 95,7 @@
    "app_bell_settings_alarm_settings_volume": "Volume",
    "app_bell_settings_bedtime_settings_tone": "M\u00e9lodie de l'heure du coucher",
    "app_bell_settings_bedtime_settings_volume": "Volume",
    "app_bell_settings_bedtime_tone": "Heure du coucher",
    "app_bell_settings_bedtime_chime": "Heure du coucher",
    "app_bell_settings_display_factory_reset_confirmation": "<text>La r\u00e9initialisation d'usine<br/>supprimera tous les fichiers de l'utilisateur et remettra l'appareil sur ses param\u00e8tres d'usine.</text>",
    "app_bell_settings_factory_reset": "R\u00e9initialisation",
    "app_bell_settings_factory_reset_option_back": "Retour",

M image/system_a/data/lang/Polski.json => image/system_a/data/lang/Polski.json +1 -1
@@ 94,7 94,7 @@
    "app_bell_settings_alarm_settings_volume": "G\u0142o\u015bno\u015b\u0107 alarmu",
    "app_bell_settings_bedtime_settings_tone": "D\u017awi\u0119k",
    "app_bell_settings_bedtime_settings_volume": "G\u0142o\u015bno\u015b\u0107",
    "app_bell_settings_bedtime_tone": "Pora snu",
    "app_bell_settings_bedtime_chime": "Pora snu",
    "app_bell_settings_display_factory_reset_confirmation": "<text>Reset usunie wszystkie pliki<br/>i przywr\u00f3ci urz\u0105dzenie do<br/>ustawie\u0144 fabrycznych.</text>",
    "app_bell_settings_factory_reset": "Ustaw. fabryczne",
    "app_bell_settings_factory_reset_option_back": "Wr\u00f3\u0107",

M products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp => products/BellHybrid/apps/application-bell-bedtime/ApplicationBellBedtime.cpp +1 -4
@@ 8,7 8,6 @@
#include <common/models/BedtimeModel.hpp>
#include <common/windows/BellFinishedWindow.hpp>
#include <common/SoundsRepository.hpp>
#include <Paths.hpp>

namespace app
{


@@ 36,10 35,8 @@ namespace app
    {
        windowsFactory.attach(
            gui::name::window::main_window, [](ApplicationCommon *app, [[maybe_unused]] const std::string &name) {
                auto soundsRepository = std::make_unique<SimpleSoundsRepository>(paths::audio::proprietary() /
                                                                                 paths::audio::bedtimeReminder());
                auto audioModel       = std::make_unique<AudioModel>(app);
                auto bedtimeModel = std::make_unique<bell_bedtime::BedtimeModel>(app, *audioModel, *soundsRepository);
                auto bedtimeModel     = std::make_unique<bell_bedtime::BedtimeModel>(app, *audioModel);
                auto provider     = std::make_shared<bell_bedtime::BedtimeListItemProvider>(std::move(bedtimeModel));
                auto presenter    = std::make_unique<bell_bedtime::BellBedtimeWindowPresenter>(provider);
                return std::make_unique<gui::BellBedtimeWindow>(app, std::move(presenter));

M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +13 -9
@@ 44,7 44,6 @@
#include <common/models/TimeModel.hpp>
#include <common/models/AlarmSettingsModel.hpp>
#include <common/models/SongsModel.hpp>
#include <service-evtmgr/EventManagerServiceAPI.hpp>
#include <service-appmgr/messages/GetCurrentDisplayLanguageResponse.hpp>

namespace app


@@ 124,14 123,19 @@ namespace app

        windowsFactory.attach(
            gui::window::name::bellSettingsBedtimeTone, [this](ApplicationCommon *app, const std::string &name) {
                auto soundsRepository = std::make_unique<SimpleSoundsRepository>(paths::audio::proprietary() /
                                                                                 paths::audio::bedtimeReminder());
                auto bedtimeModel = std::make_shared<bell_bedtime::BedtimeModel>(app, *audioModel, *soundsRepository);

                auto provider = std::make_shared<bell_settings::BedtimeSettingsListItemProvider>(
                    bedtimeModel, soundsRepository->getSongTitles());
                auto presenter = std::make_unique<bell_settings::SettingsPresenter>(
                    provider, bedtimeModel, *audioModel, std::move(soundsRepository));
                auto bedtimeModel = std::make_shared<bell_bedtime::BedtimeModel>(app, *audioModel);

                const auto &pathSorting =
                    SoundsRepository::PathSorting{paths::audio::proprietary() / paths::audio::bedtimeReminder(),
                                                  SoundsRepository::SortingBy::TitleAscending};

                auto soundsRepository = std::make_unique<SoundsRepository>(this, pathSorting);
                auto songsModel       = std::make_unique<SongsModel>(this, std::move(soundsRepository));

                auto provider = std::make_shared<bell_settings::BedtimeSettingsListItemProvider>(bedtimeModel,
                                                                                                 std::move(songsModel));
                auto presenter =
                    std::make_unique<bell_settings::SettingsPresenter>(provider, bedtimeModel, *audioModel);
                return std::make_unique<gui::BellSettingsBedtimeToneWindow>(app, std::move(presenter));
            });


M products/BellHybrid/apps/application-bell-settings/CMakeLists.txt => products/BellHybrid/apps/application-bell-settings/CMakeLists.txt +0 -2
@@ 54,7 54,6 @@ target_sources(application-bell-settings
        widgets/DateSetListItem.cpp
        widgets/TimeSetListItem.cpp
        widgets/AboutYourBellListItem.cpp
        widgets/DialogYesNo.cpp
        widgets/SongsListViewItem.cpp

        windows/BellSettingsBedtimeToneWindow.cpp


@@ 98,7 97,6 @@ target_sources(application-bell-settings
        widgets/DateFormatSetListItem.hpp
        widgets/TimeSetListItem.hpp
        widgets/AboutYourBellListItem.hpp
        widgets/DialogYesNo.hpp
        widgets/SongsListViewItem.hpp

        windows/alarm_settings/BellSettingsAlarmSettingsSnoozeWindow.hpp

M products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp => products/BellHybrid/apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp +5 -8
@@ 12,9 12,6 @@ namespace gui::window::name
{
    inline constexpr auto bellSettings             = gui::name::window::main_window;
    inline constexpr auto bellSettingsTimeUnits    = "BellSettingsTimeUnits";
    inline constexpr auto bellSettingsDialog       = "BellSettingsDialog";
    inline constexpr auto bellSettingsFinished     = "BellSettingsFinished";
    inline constexpr auto bellSettingsFrontlight   = "BellSettingsFrontlight";
    inline constexpr auto bellSettingsHomeView     = "BellSettingsHomeView";
    inline constexpr auto bellSettingsLanguage     = "BellSettingsLanguage";
    inline constexpr auto bellSettingsLayout       = "BellSettingsLayout";


@@ 33,11 30,11 @@ namespace app
        void onStop() override;

      public:
        ApplicationBellSettings(std::string name                    = applicationBellSettingsName,
                                std::string parent                  = "",
                                StatusIndicators statusIndicators   = StatusIndicators{},
                                StartInBackground startInBackground = {false},
                                std::uint32_t stackDepth            = 1024 * 8);
        explicit ApplicationBellSettings(std::string name                    = applicationBellSettingsName,
                                         std::string parent                  = "",
                                         StatusIndicators statusIndicators   = StatusIndicators{},
                                         StartInBackground startInBackground = {false},
                                         std::uint32_t stackDepth            = 1024 * 8);

        sys::ReturnCodes InitHandler() override;


M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/BedtimeSettingsListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/BedtimeSettingsListItemProvider.cpp +13 -14
@@ 2,32 2,29 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "BedtimeSettingsListItemProvider.hpp"
#include "BellSettingsStyle.hpp"
#include "common/models/AbstractAudioModel.hpp"
#include "SongsListViewItem.hpp"
#include <common/models/AbstractAudioModel.hpp>
#include <common/widgets/list_items/NumericWithBar.hpp>
#include <common/widgets/list_items/Text.hpp>
#include <apps-common/ApplicationCommon.hpp>
#include <gui/widgets/ListViewEngine.hpp>

namespace app::bell_settings
{
    using namespace gui;

    BedtimeSettingsListItemProvider::BedtimeSettingsListItemProvider(std::shared_ptr<AbstractBedtimeModel> model,
                                                                     std::vector<UTF8> chimeToneRange)
        : model{std::move(model)}
    BedtimeSettingsListItemProvider::BedtimeSettingsListItemProvider(
        std::shared_ptr<AbstractBedtimeModel> settingsModel, std::shared_ptr<SongsModel> songsModel)
        : settingsModel{std::move(settingsModel)}, songsModel{std::move(songsModel)}
    {
        buildListItems(std::move(chimeToneRange));
        buildListItems();
    }

    void BedtimeSettingsListItemProvider::buildListItems(std::vector<UTF8> chimeToneRange)
    void BedtimeSettingsListItemProvider::buildListItems()
    {
        constexpr auto itemCount = 2U;
        internalData.reserve(itemCount);

        auto chimeTone = new list_items::Text(std::move(chimeToneRange),
                                              model->getBedtimeTone(),
                                              utils::translate("app_bell_settings_bedtime_settings_tone"));
        auto chimeTone = new SongsListViewItem(
            utils::translate("app_bell_settings_bedtime_settings_tone"), settingsModel->getBedtimeTone(), songsModel);

        chimeTone->set_on_value_change_cb([this](const auto &val) {
            if (onToneChange) {
                onToneChange(val);


@@ 44,12 41,13 @@ namespace app::bell_settings
            }
        };
        internalData.emplace_back(chimeTone);

        constexpr auto volumeStep = 1U;
        constexpr auto volumeMin  = AbstractAudioModel::minVolume;
        constexpr auto volumeMax  = AbstractAudioModel::maxVolume;
        bedtimeVolume             = new list_items::NumericWithBar(
            list_items::NumericWithBar::spinner_type::range{volumeMin, volumeMax, volumeStep},
            model->getBedtimeVolume(),
            settingsModel->getBedtimeVolume(),
            volumeMax,
            utils::translate("app_bell_settings_bedtime_settings_volume"));
        bedtimeVolume->set_on_value_change_cb([this](const auto &val) {


@@ 70,6 68,7 @@ namespace app::bell_settings
            }
        };
        internalData.emplace_back(bedtimeVolume);

        for (auto item : internalData) {
            item->deleteByList = false;
        }

M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/BedtimeSettingsListItemProvider.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/BedtimeSettingsListItemProvider.hpp +10 -6
@@ 3,12 3,14 @@

#pragma once

#include <common/widgets/BellSideListItemWithCallbacks.hpp>
#include <apps-common/InternalModel.hpp>
#include <common/models/AbstractBedtimeModel.hpp>
#include <Service/Service.hpp>
#include "SettingsListItemProvider.hpp"

namespace app
{
    class SongsModel;
}

namespace app::list_items
{
    class NumericWithBar;


@@ 19,14 21,16 @@ namespace app::bell_settings
    class BedtimeSettingsListItemProvider : public SettingsListItemProvider
    {
      public:
        BedtimeSettingsListItemProvider(std::shared_ptr<AbstractBedtimeModel> model, std::vector<UTF8> chimeToneRange);
        BedtimeSettingsListItemProvider(std::shared_ptr<AbstractBedtimeModel> model,
                                        std::shared_ptr<SongsModel> songsModel);

        auto getCurrentVolume() -> std::uint8_t;

      private:
        void buildListItems(std::vector<UTF8> bedtimeToneRange);
        void buildListItems();

        std::shared_ptr<AbstractBedtimeModel> model;
        std::shared_ptr<AbstractBedtimeModel> settingsModel;
        std::shared_ptr<SongsModel> songsModel;
        app::list_items::NumericWithBar *bedtimeVolume{nullptr};
    };
} // namespace app::bell_settings

M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.cpp +1 -4
@@ 2,15 2,12 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "PrewakeUpListItemProvider.hpp"
#include "AbstractPrewakeUpSettingsModel.hpp"
#include "common/models/AbstractAudioModel.hpp"
#include <common/models/FrontlightModel.hpp>
#include <common/widgets/list_items/NumberWithSuffix.hpp>
#include <common/widgets/list_items/Numeric.hpp>
#include <common/widgets/list_items/NumericWithBar.hpp>
#include <common/widgets/ListItems.hpp>
#include <gui/widgets/ListViewEngine.hpp>
#include <utility>

#include <SongsListViewItem.hpp>
#include <Paths.hpp>


M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/PrewakeUpListItemProvider.hpp +6 -3
@@ 4,9 4,11 @@
#pragma once

#include "SettingsListItemProvider.hpp"
#include "AbstractPrewakeUpSettingsModel.hpp"
#include <common/models/AbstractSettingsModel.hpp>
#include <common/models/SongsModel.hpp>

namespace app
{
    class SongsModel;
}

namespace app::list_items
{


@@ 16,6 18,7 @@ namespace app::list_items
namespace app::bell_settings
{
    class AbstractFrontlightModel;
    class AbstractPrewakeUpSettingsModel;

    class PrewakeUpListItemProvider : public SettingsListItemProvider
    {

M products/BellHybrid/apps/application-bell-settings/presenter/BedtimeSettingsPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/BedtimeSettingsPresenter.cpp +3 -7
@@ 7,17 7,13 @@ namespace app::bell_settings
{
    SettingsPresenter::SettingsPresenter(std::shared_ptr<BedtimeSettingsListItemProvider> provider,
                                         std::shared_ptr<AbstractBedtimeModel> model,
                                         AbstractAudioModel &audioModel,
                                         std::unique_ptr<AbstractSimpleSoundsRepository> soundsRepository)
        : provider(std::move(provider)),
          model(std::move(model)), audioModel{audioModel}, soundsRepository{std::move(soundsRepository)}
                                         AbstractAudioModel &audioModel)
        : provider(std::move(provider)), model(std::move(model)), audioModel{audioModel}
    {
        auto playSound = [this](const UTF8 &val) {
            currentSoundPath = val;
            this->audioModel.setVolume(this->provider->getCurrentVolume(), AbstractAudioModel::PlaybackType::Bedtime);
            this->audioModel.play(this->soundsRepository->titleToPath(currentSoundPath).value_or(""),
                                  AbstractAudioModel::PlaybackType::Bedtime,
                                  {});
            this->audioModel.play(currentSoundPath, AbstractAudioModel::PlaybackType::Bedtime, {});
        };

        this->provider->onExit = [this]() { getView()->exit(); };

M products/BellHybrid/apps/application-bell-settings/presenter/BedtimeSettingsPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/BedtimeSettingsPresenter.hpp +1 -3
@@ 44,8 44,7 @@ namespace app::bell_settings
      public:
        SettingsPresenter(std::shared_ptr<BedtimeSettingsListItemProvider> provider,
                          std::shared_ptr<AbstractBedtimeModel> model,
                          AbstractAudioModel &audioModel,
                          std::unique_ptr<AbstractSimpleSoundsRepository> soundsRepository);
                          AbstractAudioModel &audioModel);

        auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> override;
        auto saveData() -> void override;


@@ 59,7 58,6 @@ namespace app::bell_settings
        std::shared_ptr<BedtimeSettingsListItemProvider> provider;
        std::shared_ptr<AbstractBedtimeModel> model;
        AbstractAudioModel &audioModel;
        std::unique_ptr<AbstractSimpleSoundsRepository> soundsRepository;
        UTF8 currentSoundPath;
    };
} // namespace app::bell_settings

D products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp => products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.cpp +0 -58
@@ 1,58 0,0 @@
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "DialogYesNo.hpp"

#include <data/BellSettingsStyle.hpp>

#include <apps-common/messages/DialogMetadataMessage.hpp>
#include <common/options/OptionBellMenu.hpp>
#include <apps-common/windows/Dialog.hpp>
#include <TextFixedSize.hpp>

using namespace gui;

BellDialogYesNo::BellDialogYesNo(app::ApplicationCommon *app, const std::string &name)
    : BellShortOptionWindow(app, name)
{
    optionsList->setBoundaries(Boundaries::Fixed);

    statusBar->setVisible(false);
    header->setTitleVisibility(true);
}

std::list<gui::Option> BellDialogYesNo::dialogOptionsList(std::function<bool()> yesAction)
{
    std::list<gui::Option> dialogOptionList;
    auto addDialogSettings = [&](const UTF8 &name, const gui::bell_dialog::Options &optionName) {
        dialogOptionList.emplace_back(std::make_unique<gui::option::OptionBellMenu>(
            name,
            [=](gui::Item &item) {
                if (optionName == bell_dialog::Options::YES) {
                    return yesAction();
                }
                else if (optionName == bell_dialog::Options::NO) {
                    application->returnToPreviousWindow();
                }
                return true;
            },
            [=](gui::Item &item) {
                // put focus change callback here
                return true;
            },
            this));
    };

    addDialogSettings(utils::translate(style::strings::common::no), bell_dialog::Options::NO);
    addDialogSettings(utils::translate(style::strings::common::yes), bell_dialog::Options::YES);

    return dialogOptionList;
}

void BellDialogYesNo::onBeforeShow(ShowMode, SwitchData *data)
{
    if (auto metadata = dynamic_cast<DialogMetadataMessage *>(data); metadata) {
        setListTitle(metadata->get().text);
        addOptions(dialogOptionsList(metadata->get().action));
    }
}

D products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp => products/BellHybrid/apps/application-bell-settings/widgets/DialogYesNo.hpp +0 -33
@@ 1,33 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 <Text.hpp>
#include <common/options/BellShortOptionWindow.hpp>

namespace gui
{
    namespace bell_dialog
    {
        enum Options
        {
            YES,
            NO
        };
    } // namespace bell_dialog

    /// @brief Yes/No Dialog class
    ///
    /// Contain same items as Dialog and additionally Yes and No selectable options
    class BellDialogYesNo : public BellShortOptionWindow
    {
      public:
        BellDialogYesNo(app::ApplicationCommon *app, const std::string &name);

        void onBeforeShow(ShowMode mode, SwitchData *data) override;

      private:
        std::list<gui::Option> dialogOptionsList(std::function<bool()> yesAction);
    };
}; // namespace gui

M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.cpp +4 -9
@@ 1,4 1,4 @@
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "AboutYourBellWindow.hpp"


@@ 8,20 8,15 @@
#include "alarm_settings/BellSettingsAlarmSettingsMenuWindow.hpp"

#include <application-bell-settings/ApplicationBellSettings.hpp>
#include <data/BellSettingsStyle.hpp>

#include <application-bell-main/ApplicationBellMain.hpp>
#include <apps-common/messages/DialogMetadataMessage.hpp>
#include <common/options/OptionBellMenu.hpp>
#include <common/popups/BellTurnOffOptionWindow.hpp>
#include <common/windows/BellFactoryReset.hpp>
#include <apps-common/windows/Dialog.hpp>
#include <service-appmgr/ServiceApplicationManagerName.hpp>
#include <service-appmgr/messages/SwitchRequest.hpp>

namespace gui
{

    BellSettingsWindow::BellSettingsWindow(app::ApplicationCommon *app)
        : BellOptionWindow(app, gui::window::name::bellSettings)
    {


@@ 63,8 58,9 @@ namespace gui
        addWinSettings(utils::translate("app_bell_settings_alarm_settings"),
                       BellSettingsAlarmSettingsMenuWindow::name,
                       defaultCallback);
        addWinSettings(
            utils::translate("app_bell_settings_bedtime_tone"), window::name::bellSettingsBedtimeTone, defaultCallback);
        addWinSettings(utils::translate("app_bell_settings_bedtime_chime"),
                       window::name::bellSettingsBedtimeTone,
                       defaultCallback);
        addWinSettings(bellSettingsTimeUnitsTitle, window::name::bellSettingsTimeUnits, defaultCallback);
        addWinSettings(
            utils::translate("app_bell_settings_language"), gui::window::name::bellSettingsLanguage, defaultCallback);


@@ 81,5 77,4 @@ namespace gui

        return settingsOptionList;
    }

} // namespace gui

M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.hpp => products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.hpp +1 -2
@@ 1,4 1,4 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once


@@ 15,5 15,4 @@ namespace gui
      private:
        std::list<Option> settingsOptionsList();
    };

} // namespace gui

D products/BellHybrid/apps/application-bell-settings/windows/bedtime_settings/BellSettingsBedtimeToneSettingsWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/bedtime_settings/BellSettingsBedtimeToneSettingsWindow.cpp +0 -78
@@ 1,78 0,0 @@
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "application-bell-settings/ApplicationBellSettings.hpp"

#include "BellSettingsBedtimeToneSettingsWindow.hpp"
#include "BellSettingsStyle.hpp"
#include <common/BellFinishedWindow.hpp>

#include <module-gui/gui/input/InputEvent.hpp>
#include <module-gui/gui/widgets/SideListView.hpp>

namespace gui
{
    BellSettingsBedtimeToneSettingsWindow::BellSettingsBedtimeToneSettingsWindow(
        app::ApplicationCommon *app,
        std::unique_ptr<app::bell_settings::AlarmSettingsWindowContract::Presenter> presenter)
        : AppWindow(app, name), presenter{std::move(presenter)}
    {
        this->presenter->attach(this);
        buildInterface();
    }

    void BellSettingsBedtimeToneSettingsWindow::rebuild()
    {
        erase();
        buildInterface();
    }

    void BellSettingsBedtimeToneSettingsWindow::buildInterface()
    {
        AppWindow::buildInterface();
        statusBar->setVisible(false);
        header->setTitleVisibility(false);
        navBar->setVisible(false);

        sidelistview = new SideListView(
            this, 0U, 0U, this->getWidth(), this->getHeight(), presenter->getPagesProvider(), PageBarType::None);
        sidelistview->setEdges(RectangleEdge::None);

        sidelistview->rebuildList(listview::RebuildType::Full);

        presenter->loadData();

        setFocusItem(sidelistview);
    }

    void BellSettingsBedtimeToneSettingsWindow::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data)
    {
        setFocusItem(sidelistview);
    }

    bool BellSettingsBedtimeToneSettingsWindow::onInput(const gui::InputEvent &inputEvent)
    {
        if (sidelistview->onInput(inputEvent)) {
            return true;
        }
        if (inputEvent.isShortRelease(KeyCode::KEY_ENTER)) {
            exit();
            return true;
        }

        return AppWindow::onInput(inputEvent);
    }

    void BellSettingsBedtimeToneSettingsWindow::exit()
    {
        presenter->saveData();
        application->switchWindow(
            BellFinishedWindow::defaultName,
            BellFinishedWindowData::Factory::create("circle_success_big", app::applicationBellSettingsName));
    }

    void BellSettingsBedtimeToneSettingsWindow::onClose(CloseReason reason)
    {
        // presenter->eraseProvideerData();
    }
} /* namespace gui */

D products/BellHybrid/apps/application-bell-settings/windows/bedtime_settings/BellSettingsBedtimeToneSettingsWindow.hpp => products/BellHybrid/apps/application-bell-settings/windows/bedtime_settings/BellSettingsBedtimeToneSettingsWindow.hpp +0 -35
@@ 1,35 0,0 @@
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include "ApplicationBellSettings.hpp"
#include "presenter/alarm_settings/AlarmSettingsPresenter.hpp"

#include <apps-common/windows/AppWindow.hpp>

namespace gui
{
    class SideListView;

    class BellSettingsBedtimeToneSettingsWindow : public AppWindow,
                                                  public app::bell_settings::AlarmSettingsWindowContract::View
    {
      public:
        static constexpr auto name = "BellSettingsBedtimeToneSettingsWindow";
        explicit BellSettingsBedtimeToneSettingsWindow(
            app::ApplicationCommon *app,
            std::unique_ptr<app::bell_settings::AlarmSettingsWindowContract::Presenter> presenter);

        void buildInterface() override;
        void onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) override;
        void onClose(CloseReason reason) override;
        bool onInput(const InputEvent &inputEvent) override;
        void rebuild() override;
        void exit() override;

      private:
        SideListView *sidelistview{};
        std::unique_ptr<app::bell_settings::AlarmSettingsWindowContract::Presenter> presenter;
    };
} /* namespace gui */

M products/BellHybrid/apps/common/include/common/models/BedtimeModel.hpp => products/BellHybrid/apps/common/include/common/models/BedtimeModel.hpp +3 -7
@@ 6,7 6,6 @@
#include "AbstractBedtimeModel.hpp"
#include "SettingsModel.hpp"
#include <common/models/AudioModel.hpp>
#include <common/SoundsRepository.hpp>
#include <ApplicationCommon.hpp>

namespace app::bell_bedtime


@@ 51,13 50,10 @@ namespace app::bell_bedtime
    class BedtimeToneModel : public gui::SettingsModel<UTF8>
    {
      public:
        BedtimeToneModel(sys::Service *app, SimpleSoundsRepository &soundsRepository);
        using SettingsModel::SettingsModel;

        auto setValue(UTF8 value) -> void override;
        auto getValue() const -> UTF8 override;

      private:
        SimpleSoundsRepository &soundsRepository;
    };

    class BedtimeModel : public AbstractBedtimeModel


@@ 65,11 61,11 @@ namespace app::bell_bedtime
      public:
        BedtimeModel() = delete;

        BedtimeModel(ApplicationCommon *app, AbstractAudioModel &audioModel, SimpleSoundsRepository &soundsRepository)
        BedtimeModel(ApplicationCommon *app, AbstractAudioModel &audioModel)
        {
            bedtimeOnOff  = std::make_unique<bell_bedtime::BedtimeOnOffModel>(app);
            bedtimeTime   = std::make_unique<bell_bedtime::BedtimeTimeModel>(app);
            bedtimeTone   = std::make_unique<bell_bedtime::BedtimeToneModel>(app, soundsRepository);
            bedtimeTone   = std::make_unique<bell_bedtime::BedtimeToneModel>(app);
            bedtimeVolume = std::make_unique<bell_bedtime::BedtimeVolumeModel>(audioModel);
        }


M products/BellHybrid/apps/common/src/models/BedtimeModel.cpp => products/BellHybrid/apps/common/src/models/BedtimeModel.cpp +2 -8
@@ 61,20 61,14 @@ namespace app::bell_bedtime
        return std::mktime(&tm);
    }

    BedtimeToneModel::BedtimeToneModel(sys::Service *app, SimpleSoundsRepository &soundsRepository)
        : gui::SettingsModel<UTF8>{app}, soundsRepository{soundsRepository}
    {}

    auto BedtimeToneModel::setValue(UTF8 value) -> void
    {
        const auto &path = soundsRepository.titleToPath(value).value_or("");
        settings.setValue(bell::settings::Bedtime::tonePath, path, settings::SettingsScope::Global);
        settings.setValue(bell::settings::Bedtime::tonePath, value, settings::SettingsScope::Global);
    }

    auto BedtimeToneModel::getValue() const -> UTF8
    {
        const auto &path = settings.getValue(bell::settings::Bedtime::tonePath, settings::SettingsScope::Global);
        return soundsRepository.pathToTitle(path).value_or("");
        return settings.getValue(bell::settings::Bedtime::tonePath, settings::SettingsScope::Global);
    }

    auto BedtimeVolumeModel::setValue(std::uint8_t value) -> void