From f6713c5e46653e98fea5b788a8bd7f86622b1a2b Mon Sep 17 00:00:00 2001 From: Wojtek Rzepecki Date: Fri, 14 May 2021 14:50:04 +0200 Subject: [PATCH] [EGD-6742] Add autolock window settings Add connection to settings of autolock window contents --- .../ApplicationSettings.cpp | 15 +++++++++- .../ApplicationSettings.hpp | 11 +++++++ .../windows/AutolockWindow.cpp | 29 ++++++++++++------- .../windows/AutolockWindow.hpp | 7 +++-- 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/module-apps/application-settings-new/ApplicationSettings.cpp b/module-apps/application-settings-new/ApplicationSettings.cpp index de52c52f6da63f5e345ad6dc7c8deee0f6efc665..c9c3178abe33aa2966c630bb30bcbabfe698dc6d 100644 --- a/module-apps/application-settings-new/ApplicationSettings.cpp +++ b/module-apps/application-settings-new/ApplicationSettings.cpp @@ -406,7 +406,7 @@ namespace app return std::make_unique(app); }); windowsFactory.attach(gui::window::name::autolock, [](Application *app, const std::string &name) { - return std::make_unique(app); + return std::make_unique(app, static_cast(app)); }); windowsFactory.attach(gui::window::name::torch, [](Application *app, const std::string &name) { return std::make_unique(app); @@ -683,6 +683,19 @@ namespace app CellularServiceAPI::SetConnectionFrequency(this, val); } + auto ApplicationSettingsNew::getAutoLockTime() const noexcept -> std::chrono::milliseconds + { + return std::chrono::milliseconds{utils::getNumericValue( + settings->getValue(::settings::SystemProperties::lockTime, ::settings::SettingsScope::Global))}; + } + + void ApplicationSettingsNew::setAutoLockTime(std::chrono::milliseconds lockTime) noexcept + { + settings->setValue(::settings::SystemProperties::lockTime, + std::to_string(lockTime.count()), + ::settings::SettingsScope::Global); + } + void ApplicationSettingsNew::switchToAllDevicesViaBtErrorPrompt(std::shared_ptr msg, const std::string &errorMsg) { diff --git a/module-apps/application-settings-new/ApplicationSettings.hpp b/module-apps/application-settings-new/ApplicationSettings.hpp index 197596d18391cc3a0018c9b96cceef6708bcdf1c..e989dcab9a14abc2641e44984e3bcfa934bd2af2 100644 --- a/module-apps/application-settings-new/ApplicationSettings.hpp +++ b/module-apps/application-settings-new/ApplicationSettings.hpp @@ -164,6 +164,13 @@ namespace app virtual void setFlightMode(bool flightModeOn) noexcept = 0; }; + class AutoLockSettings + { + public: + virtual auto getAutoLockTime() const noexcept -> std::chrono::milliseconds = 0; + virtual void setAutoLockTime(std::chrono::milliseconds lockTime) noexcept = 0; + }; + }; // namespace settingsInterface class ApplicationSettingsNew : public app::Application, @@ -175,6 +182,7 @@ namespace app public settingsInterface::DndSettings, public settingsInterface::OfflineSettings, public settingsInterface::ConnectionSettings, + public settingsInterface::AutoLockSettings, public AsyncCallbackReceiver { public: @@ -228,6 +236,9 @@ namespace app auto getConnectionFrequency() const noexcept -> uint8_t override; void setConnectionFrequency(uint8_t val) noexcept override; + auto getAutoLockTime() const noexcept -> std::chrono::milliseconds override; + void setAutoLockTime(std::chrono::milliseconds lockTime) noexcept override; + private: void attachQuotesWindows(); void switchToAllDevicesViaBtErrorPrompt(std::shared_ptr msg, const std::string &errorMsg); diff --git a/module-apps/application-settings-new/windows/AutolockWindow.cpp b/module-apps/application-settings-new/windows/AutolockWindow.cpp index 49b5db23057054ccb1a2bfc4d1d682c4d2e76579..ebcfc7d6696f19152e437f858533f9a641de88d7 100644 --- a/module-apps/application-settings-new/windows/AutolockWindow.cpp +++ b/module-apps/application-settings-new/windows/AutolockWindow.cpp @@ -2,15 +2,26 @@ // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "AutolockWindow.hpp" -#include "application-settings-new/ApplicationSettings.hpp" #include "OptionSetting.hpp" #include namespace gui { - - AutolockWindow::AutolockWindow(app::Application *app) : BaseSettingsWindow(app, window::name::autolock) + namespace + { + const std::vector> autoLockTimes = { + {"15s", std::chrono::milliseconds{15000}}, + {"30s", std::chrono::milliseconds{30000}}, + {"1m", std::chrono::milliseconds{60000}}, + {"2m", std::chrono::milliseconds{120000}}, + {"5m", std::chrono::milliseconds{300000}}, + {"10m", std::chrono::milliseconds{600000}}, + {"20m", std::chrono::milliseconds{1200000}}}; + } // namespace + + AutolockWindow::AutolockWindow(app::Application *app, app::settingsInterface::AutoLockSettings *autoLockSettings) + : BaseSettingsWindow(app, window::name::autolock), autoLockSettings(autoLockSettings) { setTitle(utils::translate("app_settings_display_locked_screen_autolock")); } @@ -18,13 +29,11 @@ namespace gui auto AutolockWindow::buildOptionsList() -> std::list { std::list optionsList; - std::vector autoLockTimes = {"15s", "30s", "1m", "2m", "5m", "10m", "20m"}; - - for (auto time : autoLockTimes) { + for (const auto &[timeString, time] : autoLockTimes) { optionsList.emplace_back(std::make_unique( - time, + timeString, [=](gui::Item &item) { - selectedTime = time; + autoLockSettings->setAutoLockTime(time); refreshOptionsList(); return true; }, @@ -36,8 +45,8 @@ namespace gui return true; }, this, - selectedTime == time ? gui::option::SettingRightItem::Checked - : gui::option::SettingRightItem::Disabled)); + autoLockSettings->getAutoLockTime() == time ? gui::option::SettingRightItem::Checked + : gui::option::SettingRightItem::Disabled)); } return optionsList; diff --git a/module-apps/application-settings-new/windows/AutolockWindow.hpp b/module-apps/application-settings-new/windows/AutolockWindow.hpp index 9f6fed3f82b74666ba916b4fd50991c2c2a756c9..94d129dbc98443cfdd6a3a460666ce0a56b2106b 100644 --- a/module-apps/application-settings-new/windows/AutolockWindow.hpp +++ b/module-apps/application-settings-new/windows/AutolockWindow.hpp @@ -1,9 +1,10 @@ -// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// 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 "BaseSettingsWindow.hpp" +#include namespace gui { @@ -11,11 +12,11 @@ namespace gui class AutolockWindow : public BaseSettingsWindow { public: - AutolockWindow(app::Application *app); + AutolockWindow(app::Application *app, app::settingsInterface::AutoLockSettings *autoLockSettings); private: auto buildOptionsList() -> std::list