From 01ef10db908d64262c11ab1d18963adc49438e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Jo=C5=84ski?= Date: Tue, 13 Jul 2021 09:32:05 +0200 Subject: [PATCH] [BH-564] Add Time&Units application Add first version of Time&Units application (just setting time) Remove spinner demo application --- image/assets/lang/English.json | 15 ++-- module-apps/CMakeLists.txt | 1 + .../ApplicationBellMain.cpp | 5 -- .../application-bell-main/CMakeLists.txt | 2 - .../ApplicationBellMain.hpp | 1 - .../windows/BellMainMenuWindow.cpp | 4 +- .../ApplicationBellSettings.cpp | 57 +++++++++++++ .../application-bell-settings/CMakeLists.txt | 49 +++++++++++ .../data/BellSettingsStyle.hpp | 26 ++++++ .../ApplicationBellSettings.hpp | 50 +++++++++++ .../models/TimeUnitsModel.cpp | 85 +++++++++++++++++++ .../models/TimeUnitsModel.hpp | 35 ++++++++ .../presenter/TimeUnitsPresenter.cpp | 36 ++++++++ .../presenter/TimeUnitsPresenter.hpp | 47 ++++++++++ .../widgets/TimeSetSpinnerListItem.cpp | 28 ++++++ .../widgets/TimeSetSpinnerListItem.hpp | 21 +++++ .../windows/BellSettingsAdvancedWindow.cpp | 64 ++++++++++++++ .../windows/BellSettingsAdvancedWindow.hpp | 21 +++++ .../windows/BellSettingsTimeUnitsWindow.cpp | 63 ++++++++++++++ .../windows/BellSettingsTimeUnitsWindow.hpp | 33 +++++++ .../windows/BellSettingsWindow.cpp | 60 +++++++++++++ .../windows/BellSettingsWindow.hpp | 21 +++++ module-gui/gui/widgets/SideListItem.cpp | 8 +- module-gui/gui/widgets/SideListItem.hpp | 2 +- module-gui/gui/widgets/SideListView.cpp | 22 +++-- module-gui/gui/widgets/SideListView.hpp | 2 +- module-gui/gui/widgets/Spinner.cpp | 6 +- products/BellHybrid/BellHybridMain.cpp | 2 + products/BellHybrid/CMakeLists.txt | 3 +- 29 files changed, 737 insertions(+), 32 deletions(-) create mode 100644 module-apps/application-bell-settings/ApplicationBellSettings.cpp create mode 100644 module-apps/application-bell-settings/CMakeLists.txt create mode 100644 module-apps/application-bell-settings/data/BellSettingsStyle.hpp create mode 100644 module-apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp create mode 100644 module-apps/application-bell-settings/models/TimeUnitsModel.cpp create mode 100644 module-apps/application-bell-settings/models/TimeUnitsModel.hpp create mode 100644 module-apps/application-bell-settings/presenter/TimeUnitsPresenter.cpp create mode 100644 module-apps/application-bell-settings/presenter/TimeUnitsPresenter.hpp create mode 100644 module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.cpp create mode 100644 module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.hpp create mode 100644 module-apps/application-bell-settings/windows/BellSettingsAdvancedWindow.cpp create mode 100644 module-apps/application-bell-settings/windows/BellSettingsAdvancedWindow.hpp create mode 100644 module-apps/application-bell-settings/windows/BellSettingsTimeUnitsWindow.cpp create mode 100644 module-apps/application-bell-settings/windows/BellSettingsTimeUnitsWindow.hpp create mode 100644 module-apps/application-bell-settings/windows/BellSettingsWindow.cpp create mode 100644 module-apps/application-bell-settings/windows/BellSettingsWindow.hpp diff --git a/image/assets/lang/English.json b/image/assets/lang/English.json index be5a6c676b06fc9182d754460b174366d2758588..50ade8b09550711b72ca4044d8066afc2275e577 100644 --- a/image/assets/lang/English.json +++ b/image/assets/lang/English.json @@ -537,14 +537,19 @@ "app_desktop_update_ready_for_reset": "Ready for reset...", "app_desktop_update_success": "MuditaOS has been updated to ver. $VERSION succesfully.", "app_call_private_number": "Private number", + "tethering": "Tethering", + "tethering_turn_off_question": "Turn tethering off?", + "tethering_enable_question": "You're connected to the computer.
Turn tethering on?
(some functions may be disabled)
", + "tethering_phone_mode_change_prohibited": "Tethering is on.

Other modes (Connected, DND,
Offline) are overriden by this mode
and are not working.
", + "tethering_menu_access_decline": "Tethering is on.

To access menu,
turn tethering off.
", + + "app_bell_settings_time_units_time_message": "Time", "app_bellmain_next_alarm": "Next alarm", "app_bellmain_power_nap": "Power nap", "app_bellmain_meditation_timer": "Meditation timer", "app_bellmain_media_library": "Media Library", "app_bellmain_settings": "Settings", - "tethering": "Tethering", - "tethering_turn_off_question": "Turn tethering off?", - "tethering_enable_question": "You're connected to the computer.
Turn tethering on?
(some functions may be disabled)
", - "tethering_phone_mode_change_prohibited": "Tethering is on.

Other modes (Connected, DND,
Offline) are overriden by this mode
and are not working.
", - "tethering_menu_access_decline": "Tethering is on.

To access menu,
turn tethering off.
" + "app_bellmain_main_window_title": "Bell Hybrid+", + "app_bell_settings_advanced": "Advanced", + "app_bell_settings_advanced_time_units": "Time & units" } diff --git a/module-apps/CMakeLists.txt b/module-apps/CMakeLists.txt index f2212cd5eeb14f52a61b9f6f9214ad9306bcd322..81d9fa3e693089776de282377bbbe321c58c076c 100644 --- a/module-apps/CMakeLists.txt +++ b/module-apps/CMakeLists.txt @@ -10,6 +10,7 @@ add_library(${PROJECT_NAME} STATIC) add_subdirectory(application-antenna) add_subdirectory(application-bell-main) +add_subdirectory(application-bell-settings) add_subdirectory(application-calculator) add_subdirectory(application-call) add_subdirectory(application-desktop) diff --git a/module-apps/application-bell-main/ApplicationBellMain.cpp b/module-apps/application-bell-main/ApplicationBellMain.cpp index 9d567f89299e00cbd7995dc0d8b12c299a1ef9af..ffa460f5fde8c8734e2d1cd66f2b16bf8f7d36b9 100644 --- a/module-apps/application-bell-main/ApplicationBellMain.cpp +++ b/module-apps/application-bell-main/ApplicationBellMain.cpp @@ -3,7 +3,6 @@ #include "include/application-bell-main/ApplicationBellMain.hpp" #include "windows/BellMainMenuWindow.hpp" -#include "windows/BellMainSetHour.hpp" #include "windows/BellMainWindow.hpp" #include @@ -42,10 +41,6 @@ namespace app windowsFactory.attach(gui::window::name::bell_main_menu_dialog, [](Application *app, const std::string &name) { return std::make_unique(app, name); }); - - windowsFactory.attach(gui::window::name::bell_main_set_hour, [](Application *app, const std::string &name) { - return std::make_unique(app); - }); } sys::MessagePointer ApplicationBellMain::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) diff --git a/module-apps/application-bell-main/CMakeLists.txt b/module-apps/application-bell-main/CMakeLists.txt index 26aa095fe93f04afde29e9113e68e9004415d21e..e8615888b0809d16c15b941ec0db895bb631fcc6 100644 --- a/module-apps/application-bell-main/CMakeLists.txt +++ b/module-apps/application-bell-main/CMakeLists.txt @@ -5,11 +5,9 @@ target_sources(application-bell-main ApplicationBellMain.cpp windows/BellMainWindow.cpp windows/BellMainMenuWindow.cpp - windows/BellMainSetHour.cpp windows/BellMainWindow.hpp windows/BellMainMenuWindow.hpp - windows/BellMainSetHour.hpp PUBLIC include/application-bell-main/ApplicationBellMain.hpp ) diff --git a/module-apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp b/module-apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp index 4a13ded2572a129dcdaf0d96597409f3733651bd..e84c33c1ee009e7a578cede5efdc8661e3cfbe69 100644 --- a/module-apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp +++ b/module-apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp @@ -9,7 +9,6 @@ namespace gui::window::name { inline constexpr auto bell_main_menu = "BellMainMenu"; inline constexpr auto bell_main_menu_dialog = "BellMainMenuDialog"; - inline constexpr auto bell_main_set_hour = "BellMainSetHour"; } // namespace gui::window::name diff --git a/module-apps/application-bell-main/windows/BellMainMenuWindow.cpp b/module-apps/application-bell-main/windows/BellMainMenuWindow.cpp index fd7472a97bbfe3d6678158b932231e1b349c390c..9dabe6424bae77cecf96156e9739e13292039d33 100644 --- a/module-apps/application-bell-main/windows/BellMainMenuWindow.cpp +++ b/module-apps/application-bell-main/windows/BellMainMenuWindow.cpp @@ -79,8 +79,8 @@ namespace gui addWinMenu(utils::translate("app_bellmain_power_nap"), gui::window::name::bell_main_menu_dialog); addWinMenu(utils::translate("app_bellmain_meditation_timer"), gui::window::name::bell_main_menu_dialog); addWinMenu(utils::translate("app_bellmain_media_library"), gui::window::name::bell_main_menu_dialog); - addWinMenu(utils::translate("app_bellmain_settings"), gui::window::name::bell_main_menu_dialog); - addWinMenu(utils::translate("Set Hour"), gui::window::name::bell_main_set_hour); + + addAppMenu(utils::translate("app_bellmain_settings"), "ApplicationBellSettings"); return menuOptionList; } diff --git a/module-apps/application-bell-settings/ApplicationBellSettings.cpp b/module-apps/application-bell-settings/ApplicationBellSettings.cpp new file mode 100644 index 0000000000000000000000000000000000000000..00ff2cb62ccbc6d398c956ad47ee42bbeef9cf28 --- /dev/null +++ b/module-apps/application-bell-settings/ApplicationBellSettings.cpp @@ -0,0 +1,57 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "ApplicationBellSettings.hpp" +#include "TimeUnitsPresenter.hpp" +#include "windows/BellSettingsAdvancedWindow.hpp" +#include "windows/BellSettingsTimeUnitsWindow.hpp" +#include "windows/BellSettingsWindow.hpp" + +#include + +namespace app +{ + ApplicationBellSettings::ApplicationBellSettings(std::string name, + std::string parent, + sys::phone_modes::PhoneMode mode, + StartInBackground startInBackground) + : Application(std::move(name), std::move(parent), mode, startInBackground) + {} + + sys::ReturnCodes ApplicationBellSettings::InitHandler() + { + auto ret = Application::InitHandler(); + if (ret != sys::ReturnCodes::Success) { + return ret; + } + createUserInterface(); + + return sys::ReturnCodes::Success; + } + + void ApplicationBellSettings::createUserInterface() + { + windowsFactory.attach(gui::name::window::main_window, [](Application *app, const std::string &name) { + return std::make_unique(app); + }); + + windowsFactory.attach(gui::window::name::bellSettingsAdvanced, [](Application *app, const std::string &name) { + return std::make_unique(app); + }); + + windowsFactory.attach(gui::window::name::bellSettingsTimeUnits, [](Application *app, const std::string &name) { + auto timeUnitsProvider = std::make_shared(app); + auto presenter = std::make_unique(timeUnitsProvider); + return std::make_unique(app, std::move(presenter)); + }); + } + + sys::MessagePointer ApplicationBellSettings::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) + { + auto retMsg = Application::DataReceivedHandler(msgl); + if (dynamic_cast(retMsg.get())->retCode == sys::ReturnCodes::Success) { + return retMsg; + } + return std::make_shared(); + } +} // namespace app diff --git a/module-apps/application-bell-settings/CMakeLists.txt b/module-apps/application-bell-settings/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..18d93150c6a9458390453a250d78b42dc9bbba38 --- /dev/null +++ b/module-apps/application-bell-settings/CMakeLists.txt @@ -0,0 +1,49 @@ +# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +add_library(application-bell-settings STATIC) + +target_include_directories(application-bell-settings + PRIVATE + $ + PUBLIC + $ +) + +target_sources(application-bell-settings + PRIVATE + ApplicationBellSettings.cpp + models/TimeUnitsModel.cpp + presenter/TimeUnitsPresenter.cpp + widgets/TimeSetSpinnerListItem.cpp + windows/BellSettingsWindow.cpp + windows/BellSettingsAdvancedWindow.cpp + windows/BellSettingsTimeUnitsWindow.cpp + + models/TimeUnitsModel.hpp + presenter/TimeUnitsPresenter.hpp + widgets/TimeSetSpinnerListItem.hpp + windows/BellSettingsWindow.hpp + windows/BellSettingsAdvancedWindow.hpp + windows/BellSettingsTimeUnitsWindow.hpp + + PUBLIC + include/application-bell-settings/ApplicationBellSettings.hpp +) + +target_link_libraries(application-bell-settings + PRIVATE + bellgui + service-appmgr + PUBLIC + apps-common + module-gui +) diff --git a/module-apps/application-bell-settings/data/BellSettingsStyle.hpp b/module-apps/application-bell-settings/data/BellSettingsStyle.hpp new file mode 100644 index 0000000000000000000000000000000000000000..86c69dee1bd32e97fc393f6cedf31426202882ae --- /dev/null +++ b/module-apps/application-bell-settings/data/BellSettingsStyle.hpp @@ -0,0 +1,26 @@ +// 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 +#include + +namespace gui +{ + namespace bell_settings_style + { + namespace settings_window + { + inline constexpr auto options_list_margin_x = 40; + inline constexpr auto options_list_margin_y = 85; + inline constexpr auto default_body_width = 400; + } // namespace settings_window + + namespace time_set_spinner_list_item + { + inline constexpr auto w = 450; + inline constexpr auto h = 250; + } // namespace time_set_spinner_list_item + } // namespace bell_settings_style +} // namespace gui diff --git a/module-apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp b/module-apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp new file mode 100644 index 0000000000000000000000000000000000000000..379f9789103133ff93c7aced78ad59ec0a5eaf99 --- /dev/null +++ b/module-apps/application-bell-settings/include/application-bell-settings/ApplicationBellSettings.hpp @@ -0,0 +1,50 @@ +// 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 + +namespace gui::window::name +{ + inline constexpr auto bellSettings = "BellSettings"; + inline constexpr auto bellSettingsAdvanced = "BellSettingsAdvanced"; + inline constexpr auto bellSettingsTimeUnits = "BellSettingsTimeUnits"; + inline constexpr auto bellSettingsDialog = "BellSettingsDialog"; + +} // namespace gui::window::name + +namespace app +{ + inline constexpr auto applicationBellSettingsName = "ApplicationBellSettings"; + + class ApplicationBellSettings : public Application + { + public: + ApplicationBellSettings(std::string name = applicationBellSettingsName, + std::string parent = "", + sys::phone_modes::PhoneMode mode = sys::phone_modes::PhoneMode::Offline, + StartInBackground startInBackground = {false}); + + sys::ReturnCodes InitHandler() override; + + void createUserInterface() override; + void destroyUserInterface() override + {} + + sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) override; + + sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) override final + { + return sys::ReturnCodes::Success; + } + }; + + template <> struct ManifestTraits + { + static auto GetManifest() -> manager::ApplicationManifest + { + return {{manager::actions::Launch}}; + } + }; +} // namespace app diff --git a/module-apps/application-bell-settings/models/TimeUnitsModel.cpp b/module-apps/application-bell-settings/models/TimeUnitsModel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..52c3e704d4b524a96f09fd417b314c10512a4f12 --- /dev/null +++ b/module-apps/application-bell-settings/models/TimeUnitsModel.cpp @@ -0,0 +1,85 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "TimeUnitsModel.hpp" + +#include +#include +#include +#include +#include +#include + +#include + +namespace app::bell_settings +{ + TimeUnitsModel::TimeUnitsModel(app::Application *app) : application(app) + {} + + TimeUnitsModel::~TimeUnitsModel() + { + clearData(); + } + + auto TimeUnitsModel::requestRecordsCount() -> unsigned int + { + return internalData.size(); + } + + auto TimeUnitsModel::getMinimalItemSpaceRequired() const -> unsigned int + { + return style::sidelistview::list_item::w; + } + + auto TimeUnitsModel::getItem(gui::Order order) -> gui::ListItem * + { + return getRecord(order); + } + + void TimeUnitsModel::createData() + { + timeSetWidget = new gui::TimeSetSpinnerListItem( + 0U, 0U, 0, 0, utils::translate("app_bell_settings_time_units_time_message")); + internalData.push_back(timeSetWidget); + + for (auto item : internalData) { + item->deleteByList = false; + } + } + + void TimeUnitsModel::clearData() + { + eraseInternalData(); + } + + void TimeUnitsModel::saveData() + { + std::time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + struct std::tm *newTime = std::localtime(&now); + newTime->tm_hour = timeSetWidget->timeSetSpinner->getHour(); + newTime->tm_min = timeSetWidget->timeSetSpinner->getMinute(); + LOG_INFO("Setting new time: %d:%d", newTime->tm_hour, newTime->tm_min); + sendRtcUpdateTimeMessage(std::mktime(newTime)); + } + + void TimeUnitsModel::loadData() + { + std::time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + timeSetWidget->timeSetSpinner->setHour(std::localtime(&now)->tm_hour); + timeSetWidget->timeSetSpinner->setMinute(std::localtime(&now)->tm_min); + } + + auto TimeUnitsModel::requestRecords(uint32_t offset, uint32_t limit) -> void + { + setupModel(offset, limit); + list->onProviderDataUpdate(); + } + + void TimeUnitsModel::sendRtcUpdateTimeMessage(time_t newTime) + { + auto msg = std::make_shared(newTime); + application->bus.sendUnicast(std::move(msg), service::name::service_time); + } + +} // namespace app::bell_settings diff --git a/module-apps/application-bell-settings/models/TimeUnitsModel.hpp b/module-apps/application-bell-settings/models/TimeUnitsModel.hpp new file mode 100644 index 0000000000000000000000000000000000000000..e1cd81e261c3eb2eaa90f13ae98a8129d9add817 --- /dev/null +++ b/module-apps/application-bell-settings/models/TimeUnitsModel.hpp @@ -0,0 +1,35 @@ +// 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 "TimeSetSpinnerListItem.hpp" + +#include +#include + +namespace app::bell_settings +{ + class TimeUnitsModel : public app::InternalModel, public gui::ListItemProvider + { + public: + explicit TimeUnitsModel(app::Application *app); + ~TimeUnitsModel(); + + auto clearData() -> void; + auto saveData() -> void; + auto loadData() -> void; + auto createData() -> void; + auto requestRecords(uint32_t offset, uint32_t limit) -> void; + + [[nodiscard]] auto getItem(gui::Order order) -> gui::ListItem * override; + [[nodiscard]] auto requestRecordsCount() -> unsigned int override; + [[nodiscard]] auto getMinimalItemSpaceRequired() const -> unsigned int override; + + private: + app::Application *application = nullptr; + gui::TimeSetSpinnerListItem *timeSetWidget = nullptr; + + void sendRtcUpdateTimeMessage(time_t newTime); + }; +} // namespace app::bell_settings diff --git a/module-apps/application-bell-settings/presenter/TimeUnitsPresenter.cpp b/module-apps/application-bell-settings/presenter/TimeUnitsPresenter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..519f1a411f668a4bdccb0cfafd4f427d2a22d511 --- /dev/null +++ b/module-apps/application-bell-settings/presenter/TimeUnitsPresenter.cpp @@ -0,0 +1,36 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "TimeUnitsPresenter.hpp" + +namespace app::bell_settings +{ + TimeUnitsWindowPresenter::TimeUnitsWindowPresenter(std::shared_ptr pagesProvider) + : pagesProvider(std::move(pagesProvider)) + {} + + auto TimeUnitsWindowPresenter::getPagesProvider() const -> std::shared_ptr + { + return pagesProvider; + } + + auto TimeUnitsWindowPresenter::clearData() -> void + { + pagesProvider->clearData(); + } + + auto TimeUnitsWindowPresenter::saveData() -> void + { + pagesProvider->saveData(); + } + + auto TimeUnitsWindowPresenter::loadData() -> void + { + pagesProvider->loadData(); + } + + auto TimeUnitsWindowPresenter::createData() -> void + { + pagesProvider->createData(); + } +} // namespace app::bell_settings diff --git a/module-apps/application-bell-settings/presenter/TimeUnitsPresenter.hpp b/module-apps/application-bell-settings/presenter/TimeUnitsPresenter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..2982286fb5dd90d687bb75fa03bae883a4235f1f --- /dev/null +++ b/module-apps/application-bell-settings/presenter/TimeUnitsPresenter.hpp @@ -0,0 +1,47 @@ +// 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 "TimeUnitsModel.hpp" + +#include + +namespace app::bell_settings +{ + class TimeUnitsWindowContract + { + public: + class View + { + public: + virtual ~View() noexcept = default; + }; + + class Presenter : public BasePresenter + { + public: + virtual ~Presenter() noexcept = default; + virtual auto getPagesProvider() const -> std::shared_ptr = 0; + virtual auto clearData() -> void = 0; + virtual auto saveData() -> void = 0; + virtual auto loadData() -> void = 0; + virtual auto createData() -> void = 0; + }; + }; + + class TimeUnitsWindowPresenter : public TimeUnitsWindowContract::Presenter + { + public: + explicit TimeUnitsWindowPresenter(std::shared_ptr pagesProvider); + + auto getPagesProvider() const -> std::shared_ptr override; + auto clearData() -> void; + auto saveData() -> void; + auto loadData() -> void; + auto createData() -> void; + + private: + std::shared_ptr pagesProvider; + }; +} // namespace app::bell_settings diff --git a/module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.cpp b/module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c61dc59dbf5990d6af97625b848d91ded1295238 --- /dev/null +++ b/module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.cpp @@ -0,0 +1,28 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "BellSettingsStyle.hpp" +#include "TimeSetSpinnerListItem.hpp" + +#include + +namespace gui +{ + TimeSetSpinnerListItem::TimeSetSpinnerListItem( + gui::Length x, gui::Length y, gui::Length w, gui::Length h, std::string description) + : SideListItem(std::move(description)) + { + setMinimumSize(style::sidelistview::list_item::w, style::sidelistview::list_item::h); + + timeSetSpinner = new TimeSetSpinner(body, 0, 0, 0, 0); + timeSetSpinner->setMinimumSize(gui::bell_settings_style::time_set_spinner_list_item::w, + gui::bell_settings_style::time_set_spinner_list_item::h); + body->setFocusItem(timeSetSpinner); + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + body->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; + inputCallback = [&](gui::Item &item, const gui::InputEvent &event) { return body->onInput(event); }; + } +} /* namespace gui */ diff --git a/module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.hpp b/module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.hpp new file mode 100644 index 0000000000000000000000000000000000000000..77fe38b1281b49b60f766b4c3d5f74c92d2cea24 --- /dev/null +++ b/module-apps/application-bell-settings/widgets/TimeSetSpinnerListItem.hpp @@ -0,0 +1,21 @@ +// 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 + +#include + +namespace gui +{ + class TimeSetSpinner; + + class TimeSetSpinnerListItem : public SideListItem + { + public: + TimeSetSpinner *timeSetSpinner = nullptr; + + TimeSetSpinnerListItem(gui::Length x, gui::Length y, gui::Length w, gui::Length h, std::string description); + }; +} /* namespace gui */ diff --git a/module-apps/application-bell-settings/windows/BellSettingsAdvancedWindow.cpp b/module-apps/application-bell-settings/windows/BellSettingsAdvancedWindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2339dac178c2e9cd0b20286e7534f5fe904c464b --- /dev/null +++ b/module-apps/application-bell-settings/windows/BellSettingsAdvancedWindow.cpp @@ -0,0 +1,64 @@ +// Copyright (c) 2017-2021, 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 "BellSettingsAdvancedWindow.hpp" +#include "BellSettingsStyle.hpp" + +#include +#include +#include +#include + +namespace gui +{ + + BellSettingsAdvancedWindow::BellSettingsAdvancedWindow(app::Application *app) + : OptionWindow(app, gui::window::name::bellSettingsAdvanced) + { + addOptions(settingsOptionsList()); + buildInterface(); + } + + void BellSettingsAdvancedWindow::buildInterface() + { + statusBar->setVisible(false); + header->setTitleVisibility(false); + bottomBar->setVisible(false); + + optionsList->setPosition(bell_settings_style::settings_window::options_list_margin_x, + bell_settings_style::settings_window::options_list_margin_y); + optionsList->setMaximumWidth(bell_settings_style::settings_window::default_body_width); + optionsList->setBoundaries(gui::Boundaries::Continuous); + } + + std::list