From 1b0f7a989f10e5e1975de9baf14684485bdf5834 Mon Sep 17 00:00:00 2001 From: Przemyslaw Brudny Date: Thu, 16 Dec 2021 13:52:02 +0100 Subject: [PATCH] [EGD-8104] Fixed return to home actions on phonebook, ringtone and alarm Fixed return to home actions on phonebook, ringtone and alarm. --- .../models/NewEditAlarmModel.cpp | 11 ++++++++--- .../models/NewEditAlarmModel.hpp | 2 ++ .../presenter/AlarmClockEditWindowPresenter.cpp | 5 +++++ .../presenter/AlarmClockEditWindowPresenter.hpp | 2 ++ .../windows/NewEditAlarmWindow.cpp | 7 +++++++ .../windows/NewEditAlarmWindow.hpp | 1 + .../application-phonebook/models/NewContactModel.cpp | 6 ++++-- .../application-phonebook/models/NewContactModel.hpp | 1 + .../windows/PhonebookNewContact.cpp | 10 ++++++++-- .../windows/PhonebookNewContact.hpp | 1 + .../application-settings/models/apps/SoundsModel.cpp | 4 ++-- .../windows/apps/SoundSelectWindow.cpp | 7 +++++++ .../windows/apps/SoundSelectWindow.hpp | 1 + 13 files changed, 49 insertions(+), 9 deletions(-) diff --git a/module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp b/module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp index 911a6344ceeaa9af9db15b67598a0183ffc40646..f64f04cd7959d6b0b291d44601e9d4629da98c17 100644 --- a/module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp +++ b/module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp @@ -74,10 +74,15 @@ namespace app::alarmClock } } - void NewEditAlarmModel::loadData(std::shared_ptr record) + void NewEditAlarmModel::clearData() { list->reset(); eraseInternalData(); + } + + void NewEditAlarmModel::loadData(std::shared_ptr record) + { + clearData(); rRulePresenter->loadRecord(record); createData(); @@ -114,7 +119,7 @@ namespace app::alarmClock alarm->enabled = true; alarmsRepository->add(*alarm, [this](bool) { application->returnToPreviousWindow(); }); } - list->reset(); - eraseInternalData(); + + clearData(); } } // namespace app::alarmClock diff --git a/module-apps/application-alarm-clock/models/NewEditAlarmModel.hpp b/module-apps/application-alarm-clock/models/NewEditAlarmModel.hpp index 48d57bbae404d07c21ea9f0ca4a26a9fac4ec09e..704f9671155169444dbaf96f1030f3dc59d7d122 100644 --- a/module-apps/application-alarm-clock/models/NewEditAlarmModel.hpp +++ b/module-apps/application-alarm-clock/models/NewEditAlarmModel.hpp @@ -24,6 +24,7 @@ namespace app::alarmClock virtual void loadData(std::shared_ptr record) = 0; virtual void saveData(std::shared_ptr record, AlarmAction action) = 0; + virtual void clearData() = 0; virtual void loadCustomRepeat() = 0; }; @@ -44,6 +45,7 @@ namespace app::alarmClock void loadData(std::shared_ptr record) override; void saveData(std::shared_ptr alarm, AlarmAction action) override; void loadCustomRepeat() override; + void clearData() override; void createData(); [[nodiscard]] unsigned int getMinimalItemSpaceRequired() const override; diff --git a/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.cpp b/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.cpp index f02db31994bb3cff069b8e8c3bfcea771ca48fab..b7cfcabfa88f73b006239db2736f8889a3192179 100644 --- a/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.cpp +++ b/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.cpp @@ -30,4 +30,9 @@ namespace app::alarmClock alarmFieldsProvider->loadCustomRepeat(); } + void AlarmClockEditWindowPresenter::clearData() + { + alarmFieldsProvider->clearData(); + } + } // namespace app::alarmClock diff --git a/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.hpp b/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.hpp index 6fdb42a4de94ef26495f709e482befcb69e67265..7a9000f8ee922e64e6d0dc835dfb7048af04bac6 100644 --- a/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.hpp +++ b/module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.hpp @@ -25,6 +25,7 @@ namespace app::alarmClock [[nodiscard]] virtual std::shared_ptr getAlarmsItemProvider() const = 0; virtual void loadData(std::shared_ptr record) = 0; virtual void saveData(std::shared_ptr record, AlarmAction action) = 0; + virtual void clearData() = 0; virtual void loadCustomRepeat() = 0; }; }; @@ -37,6 +38,7 @@ namespace app::alarmClock [[nodiscard]] std::shared_ptr getAlarmsItemProvider() const override; void loadData(std::shared_ptr record) override; void saveData(std::shared_ptr record, AlarmAction action) override; + void clearData() override; void loadCustomRepeat() override; private: diff --git a/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.cpp b/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.cpp index 9c04bf76027765959be426be65d72d4a177db3af..0665959d4f5d1eae70beffe2bf83639233bcf77c 100644 --- a/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.cpp +++ b/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.cpp @@ -56,6 +56,13 @@ namespace app::alarmClock } } + void NewEditAlarmWindow::onClose(gui::Window::CloseReason reason) + { + if (reason == Window::CloseReason::ApplicationClose) { + presenter->clearData(); + } + } + bool NewEditAlarmWindow::onInput(const gui::InputEvent &inputEvent) { if (AppWindow::onInput(inputEvent)) { diff --git a/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.hpp b/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.hpp index 499b4505b4996880f644ca7bf1cef15891b8a718..efe94973ede173ba7ccd1b62445ac1aee45fc875 100644 --- a/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.hpp +++ b/module-apps/application-alarm-clock/windows/NewEditAlarmWindow.hpp @@ -28,6 +28,7 @@ namespace app::alarmClock bool handleSwitchData(gui::SwitchData *data) override; void onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) override; + void onClose(CloseReason reason) override; bool onInput(const gui::InputEvent &inputEvent) override; void buildInterface() override; }; diff --git a/module-apps/application-phonebook/models/NewContactModel.cpp b/module-apps/application-phonebook/models/NewContactModel.cpp index 2c74bd8e2793834a23afdba7f7aff0324e25b23f..efdb97670a6b308b8194d1ac0a8c05f5acd078cf 100644 --- a/module-apps/application-phonebook/models/NewContactModel.cpp +++ b/module-apps/application-phonebook/models/NewContactModel.cpp @@ -112,11 +112,13 @@ void NewContactModel::createData() void NewContactModel::clearData() { list->reset(); - eraseInternalData(); +} +void NewContactModel::recreateData() +{ + clearData(); createData(); - list->rebuildList(); } diff --git a/module-apps/application-phonebook/models/NewContactModel.hpp b/module-apps/application-phonebook/models/NewContactModel.hpp index 3164e3f5fdab8a0757700ab8930db0e5463f0ae8..ce518903581ffc852ad54f02f9039567d9807ef2 100644 --- a/module-apps/application-phonebook/models/NewContactModel.hpp +++ b/module-apps/application-phonebook/models/NewContactModel.hpp @@ -23,6 +23,7 @@ class NewContactModel : public app::InternalModel, publi explicit NewContactModel(app::ApplicationCommon *app); void clearData(); + void recreateData(); void saveData(std::shared_ptr contactRecord); void loadData(std::shared_ptr contactRecord, gui::SwitchData *data); void createData(); diff --git a/module-apps/application-phonebook/windows/PhonebookNewContact.cpp b/module-apps/application-phonebook/windows/PhonebookNewContact.cpp index 533e3626410522ada01a0963d1cd82396d802869..a438fdf54f7661a4d68068d4c41de3221037748e 100644 --- a/module-apps/application-phonebook/windows/PhonebookNewContact.cpp +++ b/module-apps/application-phonebook/windows/PhonebookNewContact.cpp @@ -52,7 +52,7 @@ namespace gui void PhonebookNewContact::onBeforeShow(ShowMode mode, SwitchData *data) { if (mode != ShowMode::GUI_SHOW_RETURN) { - newContactModel->clearData(); + newContactModel->recreateData(); newContactModel->loadData(contact, data); } @@ -75,6 +75,13 @@ namespace gui !newContactModel->emptyData() ? setSaveButtonVisible(true) : setSaveButtonVisible(false); } + void PhonebookNewContact::onClose(Window::CloseReason reason) + { + if (reason == Window::CloseReason::ApplicationClose) { + newContactModel->clearData(); + } + } + auto PhonebookNewContact::handleSwitchData(SwitchData *data) -> bool { if (data == nullptr) { @@ -247,5 +254,4 @@ namespace gui }}); application->switchWindow(gui::window::name::dialog_yes_no_icon_txt, std::move(metaData)); } - } // namespace gui diff --git a/module-apps/application-phonebook/windows/PhonebookNewContact.hpp b/module-apps/application-phonebook/windows/PhonebookNewContact.hpp index 5e1c689d21206d304260167de27db1caffb48046..1c39a61d901f65a1d23042db12a690b553c3e0eb 100644 --- a/module-apps/application-phonebook/windows/PhonebookNewContact.hpp +++ b/module-apps/application-phonebook/windows/PhonebookNewContact.hpp @@ -20,6 +20,7 @@ namespace gui auto onInput(const InputEvent &inputEvent) -> bool override; void onBeforeShow(ShowMode mode, SwitchData *data) override; auto handleSwitchData(SwitchData *data) -> bool override; + void onClose(CloseReason reason) override; void rebuild() override; void buildInterface() override; void destroyInterface() override; diff --git a/module-apps/application-settings/models/apps/SoundsModel.cpp b/module-apps/application-settings/models/apps/SoundsModel.cpp index aad294ece04c8f0b92fa2aa2f78e50aadf460daf..6a2dd2de5daa270eb0f9fc7f793e89ecd3081cfe 100644 --- a/module-apps/application-settings/models/apps/SoundsModel.cpp +++ b/module-apps/application-settings/models/apps/SoundsModel.cpp @@ -67,8 +67,8 @@ void SoundsModel::createData(app::ApplicationCommon *app, audio_settings::Abstra void SoundsModel::clearData() { - list->clear(); - list->rebuildList(); + list->reset(); + eraseInternalData(); } std::filesystem::path SoundsModel::getSoundPath(audio_settings::AbstractAudioSettingsModel *model) diff --git a/module-apps/application-settings/windows/apps/SoundSelectWindow.cpp b/module-apps/application-settings/windows/apps/SoundSelectWindow.cpp index a06c27731633f9408c43e66dcab75126e42b674f..41e5f6e8bb7580cba2a7d6aa1f820a612f657522 100644 --- a/module-apps/application-settings/windows/apps/SoundSelectWindow.cpp +++ b/module-apps/application-settings/windows/apps/SoundSelectWindow.cpp @@ -59,4 +59,11 @@ namespace gui setTitle(info->get().windowTitle); mSoundsModel->createData(application, info->get().audioModel); } + + void SoundSelectWindow::onClose(Window::CloseReason reason) + { + if (reason == Window::CloseReason::ApplicationClose) { + mSoundsModel->clearData(); + } + } } // namespace gui diff --git a/module-apps/application-settings/windows/apps/SoundSelectWindow.hpp b/module-apps/application-settings/windows/apps/SoundSelectWindow.hpp index 9e8c77020b4586e1781bfbd85ca02a54abff4b12..d77fb8ea0ee5b165cf997f85d427e5cb8c248549 100644 --- a/module-apps/application-settings/windows/apps/SoundSelectWindow.hpp +++ b/module-apps/application-settings/windows/apps/SoundSelectWindow.hpp @@ -26,6 +26,7 @@ namespace gui /// @param mode show mode /// @param data user switch data void onBeforeShow([[maybe_unused]] ShowMode mode, SwitchData *data) override; + void onClose(CloseReason reason) override; void rebuild() override; void buildInterface() override;