M harmony_changelog.md => harmony_changelog.md +1 -0
@@ 10,6 10,7 @@
### Added
* Added notification when charger is connected
+* Added shortcuts instruction to settings
### Changed / Improved
* Disabled USB MTP protocol
M image/system_a/data/lang/Deutsch.json => image/system_a/data/lang/Deutsch.json +4 -3
@@ 39,9 39,9 @@
"app_bell_onboarding_info_deep_click_warning": "Sie haben tief gedr\u00fcckt",
"app_bell_onboarding_info_light_click": "Leichter Klick um fortzufahren",
"app_bell_onboarding_info_rotate": "Drehen um auszuw\u00e4hlen",
- "app_bell_onboarding_shortcuts_question": "M\u00f6chten Sie sich die Anleitung f\u00fcr die Kurzbefehle ansehen?",
- "app_bell_onboarding_shortcuts_skip": "\u00dcberspringen",
- "app_bell_onboarding_shortcuts_start": "Start",
+ "app_bell_onboarding_shortcuts_question": "Lernen Sie, wie man Tastenkombinationen verwendet",
+ "app_bell_onboarding_shortcuts_skip": "Sp\u00e4ter \u00fcberpr\u00fcfen",
+ "app_bell_onboarding_shortcuts_start": "Erfahren Sie, wie",
"app_bell_onboarding_shortcuts_step_battery": "Batteriestatus: R\u00fcckseite im Hauptbildschirm 2 Sek. dr\u00fccken",
"app_bell_onboarding_shortcuts_step_bedside_lamp": "Nachttischleuchte: Vorderlicht 2 Sek. dr\u00fccken",
"app_bell_onboarding_shortcuts_step_deep_press": "Zum Aktivieren oder Deaktivieren des Alarms tief eindr\u00fccken",
@@ 97,6 97,7 @@
"app_bell_settings_frontlight_mode_top_message": "Frontlichtmodus",
"app_bell_settings_frontlight_top_message": "Lichtst\u00e4rke des Frontlichts",
"app_bell_settings_language": "Sprache",
+ "app_bell_settings_shortcuts": "Verkn\u00fcpfungen",
"app_bell_settings_layout": "Zifferblatt",
"app_bell_settings_temp_scale": "Temperaturskala",
"app_bell_settings_time_units": "Zeit",
M image/system_a/data/lang/English.json => image/system_a/data/lang/English.json +4 -3
@@ 72,9 72,9 @@
"app_bell_onboarding_info_deep_click_warning": "You've deep pressed",
"app_bell_onboarding_info_light_click": "Light click to continue",
"app_bell_onboarding_info_rotate": "Rotate to select",
- "app_bell_onboarding_shortcuts_question": "Do you want to see Shortcuts instruction?",
- "app_bell_onboarding_shortcuts_skip": "Skip",
- "app_bell_onboarding_shortcuts_start": "Start",
+ "app_bell_onboarding_shortcuts_question": "Learn how to use button shortcuts",
+ "app_bell_onboarding_shortcuts_skip": "Check later",
+ "app_bell_onboarding_shortcuts_start": "Learn how",
"app_bell_onboarding_shortcuts_step_battery": "Long press back (2s) on the home view to see battery status",
"app_bell_onboarding_shortcuts_step_bedside_lamp": "Long press frontlight (2s) to turn on a bedside lamp",
"app_bell_onboarding_shortcuts_step_deep_press": "Deep press to activate or deactivate the alarm",
@@ 131,6 131,7 @@
"app_bell_settings_frontlight_mode_top_message": "Frontlight mode",
"app_bell_settings_frontlight_top_message": "Frontlight intensity",
"app_bell_settings_language": "Language",
+ "app_bell_settings_shortcuts": "Shortcuts",
"app_bell_settings_layout": "Clock face",
"app_bell_settings_temp_scale": "Temperature scale",
"app_bell_settings_time_units": "Time",
M image/system_a/data/lang/Espanol.json => image/system_a/data/lang/Espanol.json +4 -3
@@ 38,9 38,9 @@
"app_bell_onboarding_info_deep_click_warning": "Has presionado muy profundo",
"app_bell_onboarding_info_light_click": "Click ligeramente para continuar",
"app_bell_onboarding_info_rotate": "Girar para seleccionar",
- "app_bell_onboarding_shortcuts_question": "\u00bfQuieres ver instrucciones de accesos directos?",
- "app_bell_onboarding_shortcuts_skip": "Saltar",
- "app_bell_onboarding_shortcuts_start": "Comenzar",
+ "app_bell_onboarding_shortcuts_question": "Aprende a utilizar los atajos de botones",
+ "app_bell_onboarding_shortcuts_skip": "Ver luego",
+ "app_bell_onboarding_shortcuts_start": "Aprender c\u00f3mo",
"app_bell_onboarding_shortcuts_step_battery": "Mant\u00e9n pulsado Volver atr\u00e1s (2 s) para comprobar bater\u00eda",
"app_bell_onboarding_shortcuts_step_bedside_lamp": "Mant\u00e9n pulsada la luz frontal (2 s) para encenderla",
"app_bell_onboarding_shortcuts_step_deep_press": "Mantener pulsado para activar o desactivar la alarma",
@@ 96,6 96,7 @@
"app_bell_settings_frontlight_mode_top_message": "Modo de luz frontal",
"app_bell_settings_frontlight_top_message": "Intensidad de luz frontal",
"app_bell_settings_language": "Idioma",
+ "app_bell_settings_shortcuts": "Atajos",
"app_bell_settings_layout": "Esfera del reloj",
"app_bell_settings_temp_scale": "Escala de temperatura",
"app_bell_settings_time_units": "Hora",
M image/system_a/data/lang/Francais.json => image/system_a/data/lang/Francais.json +4 -3
@@ 40,9 40,9 @@
"app_bell_onboarding_info_deep_click_warning": "Vous avez appuy\u00e9 fort",
"app_bell_onboarding_info_light_click": "Cliquer doucement pour continuer",
"app_bell_onboarding_info_rotate": "<text>Tourner pour<br />s\u00e9lectionner</text>",
- "app_bell_onboarding_shortcuts_question": "Voulez-vous voir les instructions sur les raccourcis ?",
- "app_bell_onboarding_shortcuts_skip": "Ignorer",
- "app_bell_onboarding_shortcuts_start": "Commencer",
+ "app_bell_onboarding_shortcuts_question": "Apprenez \u00e0 utiliser les raccourcis de boutons",
+ "app_bell_onboarding_shortcuts_skip": "Consulter plus tard",
+ "app_bell_onboarding_shortcuts_start": "Apprendre",
"app_bell_onboarding_shortcuts_step_battery": "Pressez 2 sec Retour pour voir l'\u00e9tat de la batterie",
"app_bell_onboarding_shortcuts_step_bedside_lamp": "Pressez 2 sec l'\u00e9clairage avant pour allumer une lampe",
"app_bell_onboarding_shortcuts_step_deep_press": "Appuyez fort pour activer ou d\u00e9sactiver l'alarme",
@@ 98,6 98,7 @@
"app_bell_settings_frontlight_mode_top_message": "Mode",
"app_bell_settings_frontlight_top_message": "Intensit\u00e9",
"app_bell_settings_language": "Langue",
+ "app_bell_settings_shortcuts": "Raccourcis",
"app_bell_settings_layout": "Cadran",
"app_bell_settings_temp_scale": "\u00c9chelle de temp\u00e9rature",
"app_bell_settings_time_units": "Temps",
M image/system_a/data/lang/Polski.json => image/system_a/data/lang/Polski.json +4 -3
@@ 39,9 39,9 @@
"app_bell_onboarding_info_deep_click_warning": "G\u0142\u0119boko wci\u015bni\u0119ty",
"app_bell_onboarding_info_light_click": "Kliknij lekko, aby kontynuowa\u0107",
"app_bell_onboarding_info_rotate": "Obr\u00f3\u0107, aby wybra\u0107",
- "app_bell_onboarding_shortcuts_question": "Czy chcesz zobaczy\u0107 instrukcj\u0119 Skr\u00f3t\u00f3w?",
- "app_bell_onboarding_shortcuts_skip": "Pomi\u0144",
- "app_bell_onboarding_shortcuts_start": "Start",
+ "app_bell_onboarding_shortcuts_question": "Dowiedz si\u0119 jak u\u017cywa\u0107 skr\u00f3t\u00f3w przycisk\u00f3w",
+ "app_bell_onboarding_shortcuts_skip": "Sprawd\u017a p\u00f3\u017aniej",
+ "app_bell_onboarding_shortcuts_start": "Dowiedz si\u0119, jak",
"app_bell_onboarding_shortcuts_step_battery": "Przytrzymaj wstecz (2s) na ekranie g\u0142\u00f3wnym, aby zobaczy\u0107 status baterii",
"app_bell_onboarding_shortcuts_step_bedside_lamp": "Przytrzymaj przycisk \u015bwiat\u0142a (2s), aby w\u0142\u0105czy\u0107 lampk\u0119 nocn\u0105",
"app_bell_onboarding_shortcuts_step_deep_press": "Kliknij g\u0142\u0119boko, aby aktywowa\u0107 lub dezaktywowa\u0107 alarm",
@@ 97,6 97,7 @@
"app_bell_settings_frontlight_mode_top_message": "Tryb pod\u015bwietlenia",
"app_bell_settings_frontlight_top_message": "Intensywno\u015b\u0107 pod\u015bwietlenia",
"app_bell_settings_language": "J\u0119zyk",
+ "app_bell_settings_shortcuts": "Skr\u00f3ty",
"app_bell_settings_layout": "Tarcza zegara",
"app_bell_settings_temp_scale": "Skala temperatury",
"app_bell_settings_time_units": "Czas",
M products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp => products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp +3 -3
@@ 12,7 12,6 @@
#include <windows/OnBoardingWelcomeWindow.hpp>
#include <windows/OnBoardingInstructionPromptWindow.hpp>
#include <windows/OnBoardingShortcutsOptionWindow.hpp>
-#include <windows/OnBoardingShortcutsWindow.hpp>
#include <service-appmgr/ServiceApplicationManagerName.hpp>
#include <service-appmgr/messages/GetCurrentDisplayLanguageResponse.hpp>
@@ 21,6 20,7 @@
#include <common/BellPowerOffPresenter.hpp>
#include <common/windows/BellFinishedWindow.hpp>
#include <common/windows/BellWelcomeWindow.hpp>
+#include <common/windows/ShortcutsWindow.hpp>
#include <common/models/LayoutModel.hpp>
#include <application-bell-settings/models/TemperatureUnitModel.hpp>
@@ 115,7 115,7 @@ namespace app
windowsFactory.attach(
gui::window::name::onBoardingShortcutsWindow, [this](ApplicationCommon *app, const std::string &name) {
auto presenter = std::make_unique<OnBoarding::OnBoardingShortcutsWindowPresenter>(this);
- return std::make_unique<gui::OnBoardingShortcutsWindow>(app, std::move(presenter), name);
+ return std::make_unique<gui::ShortcutsWindow>(app, std::move(presenter), name);
});
windowsFactory.attach(
@@ 282,7 282,7 @@ namespace app
if (inputEvent.isKeyRelease(gui::KeyCode::KEY_UP) || inputEvent.isKeyRelease(gui::KeyCode::KEY_DOWN)) {
gui::AppWindow *window = getCurrentWindow();
const auto shortcutsWindow = window->getName() == gui::window::name::onBoardingShortcutsWindow
- ? dynamic_cast<gui::OnBoardingShortcutsWindow *>(window)
+ ? dynamic_cast<gui::ShortcutsWindow *>(window)
: nullptr;
if (shortcutsWindow != nullptr) {
if (shortcutsWindow->isOneOfTwoLastShortcuts() && inputEvent.isKeyRelease(gui::KeyCode::KEY_UP))
M products/BellHybrid/apps/application-bell-onboarding/CMakeLists.txt => products/BellHybrid/apps/application-bell-onboarding/CMakeLists.txt +0 -7
@@ 20,12 20,9 @@ target_sources(application-bell-onboarding
windows/OnBoardingInstructionPromptWindow.cpp
windows/OnBoardingWelcomeWindow.cpp
windows/OnBoardingShortcutsOptionWindow.cpp
- windows/OnBoardingShortcutsWindow.cpp
presenter/OnBoardingLanguageWindowPresenter.cpp
presenter/OnBoardingFinalizeWindowPresenter.cpp
presenter/OnBoardingShortcutsWindowPresenter.cpp
- layouts/OnBoardingShortcutsLayouts.cpp
- layouts/OnBoardingShortcutsLayoutClassic.cpp
presenter/OnBoardingLanguageWindowPresenter.hpp
presenter/OnBoardingFinalizeWindowPresenter.hpp
@@ 36,10 33,6 @@ target_sources(application-bell-onboarding
windows/OnBoardingInstructionPromptWindow.hpp
windows/OnBoardingWelcomeWindow.hpp
windows/OnBoardingShortcutsOptionWindow.hpp
- windows/OnBoardingShortcutsWindow.hpp
- layouts/OnBoardingShortcutsLayouts.hpp
- layouts/OnBoardingShortcutsLayoutProvider.hpp
- layouts/OnBoardingShortcutsLayoutClassic.hpp
PUBLIC
include/application-bell-onboarding/ApplicationBellOnBoarding.hpp
M products/BellHybrid/apps/application-bell-onboarding/include/application-bell-onboarding/BellOnBoardingNames.hpp => products/BellHybrid/apps/application-bell-onboarding/include/application-bell-onboarding/BellOnBoardingNames.hpp +4 -2
@@ 1,8 1,10 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
+#include <common/BellCommonNames.hpp>
+
namespace app
{
inline constexpr auto applicationBellOnBoardingName = "ApplicationBellOnBoarding";
@@ 13,7 15,7 @@ namespace gui::window::name
inline constexpr auto onBoardingOnOffWindow = "BellOnBoardingOnOff";
inline constexpr auto onBoardingLanguageWindow = "BellOnBoardingLanguage";
inline constexpr auto onBoardingShortcutsOptionWindow = "BellOnBoardingShortcutsOption";
- inline constexpr auto onBoardingShortcutsWindow = "BellOnBoardingShortcuts";
+ inline constexpr auto onBoardingShortcutsWindow = gui::window::name::shortcutsWindow;
inline constexpr auto onBoardingSettingsWindow = "BellOnBoardingSettings";
inline constexpr auto finalizeOnBoardingWindow = "BellOnBoardingFinalize";
inline constexpr auto informationOnBoardingWindow = "BellOnBoardingInformation";
M products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingShortcutsWindowPresenter.cpp => products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingShortcutsWindowPresenter.cpp +22 -4
@@ 1,12 1,16 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "OnBoardingShortcutsWindowPresenter.hpp"
-#include "layouts/OnBoardingShortcutsLayoutProvider.hpp"
+#include <BellOnBoardingNames.hpp>
+#include <common/layouts/ShortcutsLayoutProvider.hpp>
+#include <common/layouts/ShortcutsLayouts.hpp>
+#include <InputEvent.hpp>
+#include <keymap/KeyMap.hpp>
namespace app::OnBoarding
{
- OnBoardingShortcutsWindowPresenter::OnBoardingShortcutsWindowPresenter(app::ApplicationCommon *app)
+ OnBoardingShortcutsWindowPresenter::OnBoardingShortcutsWindowPresenter(app::ApplicationCommon *app) : app(app)
{
initLayoutOptions();
}
@@ 33,10 37,24 @@ namespace app::OnBoarding
void OnBoardingShortcutsWindowPresenter::initLayoutOptions()
{
- auto layoutsList = gui::factory::getLayouts();
+ const auto layoutsList = gui::factory::getLayouts();
for (auto &layoutEntry : layoutsList) {
layoutOptions.push_back(layoutEntry()->getLayout());
}
}
+
+ bool OnBoardingShortcutsWindowPresenter::onInput(const gui::InputEvent &inputEvent, const gui::Item *currentLayout)
+ {
+ if (inputEvent.isShortRelease()) {
+ const auto key = mapKey(inputEvent.getKeyCode());
+ if (key == KeyMap::LightPress) {
+ if (isLastLayout(currentLayout)) {
+ app->switchWindow(gui::window::name::onBoardingSettingsWindow);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
} // namespace app::OnBoarding
M products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingShortcutsWindowPresenter.hpp => products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingShortcutsWindowPresenter.hpp +5 -24
@@ 1,40 1,20 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
-#include <apps-common/BasePresenter.hpp>
+#include <common/windows/ShortcutsWindowContract.hpp>
#include <apps-common/ApplicationCommon.hpp>
-#include <layouts/OnBoardingShortcutsLayouts.hpp>
#include <vector>
-#include <string>
#include <Item.hpp>
namespace app::OnBoarding
{
- class OnBoardingShortcutsWindowContract
- {
- public:
- class View
- {
- public:
- virtual ~View() = default;
- };
-
- class Presenter : public BasePresenter<OnBoardingShortcutsWindowContract::View>
- {
- public:
- virtual std::vector<gui::Item *> getLayouts() const = 0;
- virtual bool isLastLayout(const gui::Item *layout) const = 0;
- virtual bool isOneOfTwoLastLayouts(const gui::Item *layout) const = 0;
- virtual gui::Item *getFirstLayout() const = 0;
- };
- };
-
- class OnBoardingShortcutsWindowPresenter : public OnBoardingShortcutsWindowContract::Presenter
+ class OnBoardingShortcutsWindowPresenter : public gui::ShortcutsWindowContract::Presenter
{
private:
+ app::ApplicationCommon *app;
std::vector<gui::Item *> layoutOptions;
void initLayoutOptions();
@@ 45,5 25,6 @@ namespace app::OnBoarding
bool isLastLayout(const gui::Item *layout) const override;
bool isOneOfTwoLastLayouts(const gui::Item *layout) const override;
gui::Item *getFirstLayout() const override;
+ bool onInput(const gui::InputEvent &inputEvent, const gui::Item *currentLayout) override;
};
} // namespace app::OnBoarding
M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +8 -0
@@ 16,6 16,7 @@
#include "presenter/AboutYourBellWindowPresenter.hpp"
#include "presenter/alarm_settings/SnoozePresenter.hpp"
#include "presenter/FrontlightPresenter.hpp"
+#include "presenter/ShortcutsWindowPresenter.hpp"
#include "windows/AboutYourBellWindow.hpp"
#include "windows/BellSettingsLanguageWindow.hpp"
#include "windows/BellSettingsLayoutWindow.hpp"
@@ 37,6 38,7 @@
#include <common/models/LayoutModel.hpp>
#include <common/windows/BellFinishedWindow.hpp>
#include <common/windows/BellTurnOffWindow.hpp>
+#include <common/windows/ShortcutsWindow.hpp>
#include <common/popups/BellTurnOffOptionWindow.hpp>
#include <common/models/AudioModel.hpp>
#include <common/models/TimeModel.hpp>
@@ 240,6 242,12 @@ namespace app
return std::make_unique<gui::BellDialogYesNo>(app, name);
});
+ windowsFactory.attach(gui::window::name::bellSettingsShortcuts,
+ [&](ApplicationCommon *app, const std::string &name) {
+ auto presenter = std::make_unique<bell_settings::ShortcutsWindowPresenter>(this);
+ return std::make_unique<gui::ShortcutsWindow>(app, std::move(presenter), name);
+ });
+
attachPopups({gui::popup::ID::AlarmActivated,
gui::popup::ID::AlarmDeactivated,
gui::popup::ID::PowerOff,
M products/BellHybrid/apps/application-bell-settings/CMakeLists.txt => products/BellHybrid/apps/application-bell-settings/CMakeLists.txt +2 -0
@@ 43,6 43,7 @@ target_sources(application-bell-settings
presenter/AboutYourBellWindowPresenter.cpp
presenter/LanguageWindowPresenter.cpp
presenter/LayoutWindowPresenter.cpp
+ presenter/ShortcutsWindowPresenter.cpp
presenter/alarm_settings/AlarmSettingsPresenter.cpp
presenter/alarm_settings/PrewakeUpPresenter.cpp
presenter/alarm_settings/SnoozePresenter.cpp
@@ 84,6 85,7 @@ target_sources(application-bell-settings
presenter/AboutYourBellWindowPresenter.hpp
presenter/LanguageWindowPresenter.hpp
presenter/LayoutWindowPresenter.hpp
+ presenter/ShortcutsWindowPresenter.hpp
presenter/alarm_settings/AlarmSettingsPresenter.hpp
presenter/alarm_settings/PrewakeUpPresenter.hpp
presenter/alarm_settings/SnoozePresenter.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 +2 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 20,6 20,7 @@ namespace gui::window::name
inline constexpr auto bellSettingsLayout = "BellSettingsLayout";
inline constexpr auto bellSettingsBedtimeTone = "BellSettingsBedtimeTone";
inline constexpr auto bellSettingsFactoryReset = "BellSettingsFactoryReset";
+ inline constexpr auto bellSettingsShortcuts = "BellSettingsShortcuts";
} // namespace gui::window::name
namespace app
A products/BellHybrid/apps/application-bell-settings/presenter/ShortcutsWindowPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/ShortcutsWindowPresenter.cpp +48 -0
@@ 0,0 1,48 @@
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "ShortcutsWindowPresenter.hpp"
+#include <common/layouts/ShortcutsLayoutProvider.hpp>
+#include <common/layouts/ShortcutsLayouts.hpp>
+
+namespace app::bell_settings
+{
+ ShortcutsWindowPresenter::ShortcutsWindowPresenter(app::ApplicationCommon *app)
+ {
+ initLayoutOptions();
+ }
+
+ std::vector<gui::Item *> ShortcutsWindowPresenter::getLayouts() const
+ {
+ return layoutOptions;
+ }
+
+ gui::Item *ShortcutsWindowPresenter::getFirstLayout() const
+ {
+ return layoutOptions.empty() ? nullptr : layoutOptions.front();
+ }
+
+ bool ShortcutsWindowPresenter::isLastLayout(const gui::Item *layout) const
+ {
+ return !layoutOptions.empty() && layoutOptions.back() == layout;
+ }
+
+ bool ShortcutsWindowPresenter::isOneOfTwoLastLayouts(const gui::Item *layout) const
+ {
+ return isLastLayout(layout) || (layoutOptions.size() >= 2 && layoutOptions[layoutOptions.size() - 2] == layout);
+ }
+
+ void ShortcutsWindowPresenter::initLayoutOptions()
+ {
+ const auto layoutsList = gui::factory::getLayouts();
+
+ for (auto &layoutEntry : layoutsList) {
+ layoutOptions.push_back(layoutEntry()->getLayout());
+ }
+ }
+
+ bool ShortcutsWindowPresenter::onInput(const gui::InputEvent &inputEvent, const gui::Item *currentLayout)
+ {
+ return false;
+ }
+} // namespace app::bell_settings
A products/BellHybrid/apps/application-bell-settings/presenter/ShortcutsWindowPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/ShortcutsWindowPresenter.hpp +29 -0
@@ 0,0 1,29 @@
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include <common/windows/ShortcutsWindowContract.hpp>
+#include <apps-common/ApplicationCommon.hpp>
+
+#include <vector>
+#include <Item.hpp>
+
+namespace app::bell_settings
+{
+ class ShortcutsWindowPresenter : public gui::ShortcutsWindowContract::Presenter
+ {
+ private:
+ std::vector<gui::Item *> layoutOptions;
+ void initLayoutOptions();
+
+ public:
+ explicit ShortcutsWindowPresenter(app::ApplicationCommon *app);
+
+ std::vector<gui::Item *> getLayouts() const override;
+ bool isLastLayout(const gui::Item *layout) const override;
+ bool isOneOfTwoLastLayouts(const gui::Item *layout) const override;
+ gui::Item *getFirstLayout() const override;
+ bool onInput(const gui::InputEvent &inputEvent, const gui::Item *currentLayout) override;
+ };
+} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/BellSettingsWindow.cpp +2 -0
@@ 88,6 88,8 @@ namespace gui
addWinSettings(
utils::translate("app_bell_settings_language"), gui::window::name::bellSettingsLanguage, defaultCallback);
addWinSettings(
+ utils::translate("app_bell_settings_shortcuts"), window::name::bellSettingsShortcuts, defaultCallback);
+ addWinSettings(
utils::translate("app_bell_settings_frontlight"), gui::BellSettingsFrontlightWindow::name, defaultCallback);
addWinSettings(utils::translate("app_bell_settings_about"), gui::AboutYourBellWindow::name, defaultCallback);
addWinSettings(
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +8 -0
@@ 26,6 26,7 @@ target_sources(application-bell-common
src/windows/BellTurnOffWindow.cpp
src/windows/BellWelcomeWindow.cpp
src/windows/SessionPausedWindow.cpp
+ src/windows/ShortcutsWindow.cpp
src/BellSideListItemWithCallbacks.cpp
src/TimeUtils.cpp
src/TimeUtils.cpp
@@ 65,6 66,8 @@ target_sources(application-bell-common
src/layouts/HomeScreenLayoutVerticalSimple.cpp
src/layouts/HomeScreenLayoutVerticalWithAmPm.cpp
src/layouts/HomeScreenLayoutVerticalWithDate.cpp
+ src/layouts/ShortcutsLayouts.cpp
+ src/layouts/ShortcutsLayoutClassic.cpp
PUBLIC
include/common/BellListItemProvider.hpp
@@ 76,6 79,8 @@ target_sources(application-bell-common
include/common/windows/BellTurnOffWindow.hpp
include/common/windows/BellWelcomeWindow.hpp
include/common/windows/SessionPausedWindow.hpp
+ include/common/windows/ShortcutsWindowContract.hpp
+ include/common/windows/ShortcutsWindow.hpp
include/common/TimeUtils.hpp
include/common/data/BatteryUtils.hpp
include/common/data/FrontlightUtils.hpp
@@ 126,6 131,9 @@ target_sources(application-bell-common
include/common/layouts/HomeScreenLayoutVerticalWithAmPm.hpp
include/common/layouts/HomeScreenLayoutVerticalWithDate.hpp
include/common/layouts/HomeScreenLayoutNames.hpp
+ include/common/layouts/ShortcutsLayouts.hpp
+ include/common/layouts/ShortcutsLayoutProvider.hpp
+ include/common/layouts/ShortcutsLayoutClassic.hpp
)
target_link_libraries(application-bell-common
A products/BellHybrid/apps/common/include/common/BellCommonNames.hpp => products/BellHybrid/apps/common/include/common/BellCommonNames.hpp +10 -0
@@ 0,0 1,10 @@
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+namespace gui::window::name
+{
+ inline constexpr auto shortcutsWindow = "BellShortcuts";
+
+} // namespace gui::window::name
R products/BellHybrid/apps/application-bell-onboarding/layouts/OnBoardingShortcutsLayoutClassic.hpp => products/BellHybrid/apps/common/include/common/layouts/ShortcutsLayoutClassic.hpp +7 -7
@@ 1,9 1,9 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
-#include "OnBoardingShortcutsLayoutProvider.hpp"
+#include "ShortcutsLayoutProvider.hpp"
#include <BoxLayout.hpp>
@@ 11,7 11,7 @@ namespace gui
{
class BellBaseLayout;
- class OnBoardingShortcutsLayoutClassic : public OnBoardingShortcutsLayoutProvider, VBox
+ class ShortcutsLayoutClassic : public ShortcutsLayoutProvider, VBox
{
private:
const UTF8 image;
@@ 23,10 23,10 @@ namespace gui
void buildInterface();
public:
- OnBoardingShortcutsLayoutClassic(const UTF8 &image,
- const UTF8 &description,
- bool leftArrowVisible = true,
- bool rightArrowVisible = true);
+ ShortcutsLayoutClassic(const UTF8 &image,
+ const UTF8 &description,
+ bool leftArrowVisible = true,
+ bool rightArrowVisible = true);
auto getLayout() -> Item * override;
};
R products/BellHybrid/apps/application-bell-onboarding/layouts/OnBoardingShortcutsLayoutProvider.hpp => products/BellHybrid/apps/common/include/common/layouts/ShortcutsLayoutProvider.hpp +7 -7
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 9,7 9,7 @@ namespace gui
{
class Item;
- class OnBoardingShortcutsLayoutProvider
+ class ShortcutsLayoutProvider
{
private:
const UTF8 image;
@@ 18,12 18,12 @@ namespace gui
const bool rightArrow;
public:
- OnBoardingShortcutsLayoutProvider(const UTF8 &image,
- const UTF8 &description,
- bool leftArrow = true,
- bool rightArrow = true)
+ ShortcutsLayoutProvider(const UTF8 &image,
+ const UTF8 &description,
+ bool leftArrow = true,
+ bool rightArrow = true)
: image{image}, description{description}, leftArrow{leftArrow}, rightArrow{rightArrow} {};
- virtual ~OnBoardingShortcutsLayoutProvider() noexcept = default;
+ virtual ~ShortcutsLayoutProvider() noexcept = default;
virtual Item *getLayout() = 0;
};
R products/BellHybrid/apps/application-bell-onboarding/layouts/OnBoardingShortcutsLayouts.hpp => products/BellHybrid/apps/common/include/common/layouts/ShortcutsLayouts.hpp +3 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 9,8 9,8 @@
namespace gui
{
- class OnBoardingShortcutsLayoutProvider;
- using LayoutGenerator = std::function<OnBoardingShortcutsLayoutProvider *()>;
+ class ShortcutsLayoutProvider;
+ using LayoutGenerator = std::function<ShortcutsLayoutProvider *()>;
namespace factory
{
M => +1 -1
@@ 1,4 1,4 @@
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
R products/BellHybrid/apps/application-bell-onboarding/windows/OnBoardingShortcutsWindow.hpp => products/BellHybrid/apps/common/include/common/windows/ShortcutsWindow.hpp +7 -8
@@ 1,9 1,9 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
-#include "presenter/OnBoardingShortcutsWindowPresenter.hpp"
+#include "ShortcutsWindowContract.hpp"
#include <ApplicationCommon.hpp>
#include <AppWindow.hpp>
#include <apps-common/widgets/spinners/Spinners.hpp>
@@ 11,9 11,9 @@
namespace gui
{
class SideListView;
- class OnBoardingShortcutsWindow : public AppWindow, public app::OnBoarding::OnBoardingShortcutsWindowContract::View
+ class ShortcutsWindow : public AppWindow, public ShortcutsWindowContract::View
{
- std::unique_ptr<app::OnBoarding::OnBoardingShortcutsWindowContract::Presenter> presenter;
+ std::unique_ptr<ShortcutsWindowContract::Presenter> presenter;
SideListView *sideListView = nullptr;
WidgetSpinner *spinner = nullptr;
@@ 23,10 23,9 @@ namespace gui
void onValueChanged(const std::uint32_t currentValue);
public:
- OnBoardingShortcutsWindow(
- app::ApplicationCommon *app,
- std::unique_ptr<app::OnBoarding::OnBoardingShortcutsWindowContract::Presenter> &&presenter,
- const std::string &name);
+ ShortcutsWindow(app::ApplicationCommon *app,
+ std::unique_ptr<ShortcutsWindowContract::Presenter> &&presenter,
+ const std::string &name);
bool isOneOfTwoLastShortcuts() const;
};
A products/BellHybrid/apps/common/include/common/windows/ShortcutsWindowContract.hpp => products/BellHybrid/apps/common/include/common/windows/ShortcutsWindowContract.hpp +31 -0
@@ 0,0 1,31 @@
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include <apps-common/BasePresenter.hpp>
+#include <vector>
+#include <Item.hpp>
+
+namespace gui
+{
+ class ShortcutsWindowContract
+ {
+ public:
+ class View
+ {
+ public:
+ virtual ~View() = default;
+ };
+
+ class Presenter : public app::BasePresenter<ShortcutsWindowContract::View>
+ {
+ public:
+ virtual std::vector<gui::Item *> getLayouts() const = 0;
+ virtual bool isLastLayout(const gui::Item *layout) const = 0;
+ virtual bool isOneOfTwoLastLayouts(const gui::Item *layout) const = 0;
+ virtual gui::Item *getFirstLayout() const = 0;
+ virtual bool onInput(const gui::InputEvent &inputEvent, const gui::Item *currentLayout) = 0;
+ };
+ };
+} // namespace gui
R products/BellHybrid/apps/application-bell-onboarding/layouts/OnBoardingShortcutsLayoutClassic.cpp => products/BellHybrid/apps/common/src/layouts/ShortcutsLayoutClassic.cpp +9 -9
@@ 1,7 1,7 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-#include "OnBoardingShortcutsLayoutClassic.hpp"
+#include "layouts/ShortcutsLayoutClassic.hpp"
#include <apps-common/widgets/BellBaseLayout.hpp>
#include <i18n/i18n.hpp>
#include <Style.hpp>
@@ 38,18 38,18 @@ namespace
namespace gui
{
- OnBoardingShortcutsLayoutClassic::OnBoardingShortcutsLayoutClassic(const UTF8 &image,
- const UTF8 &description,
- bool leftArrowVisible,
- bool rightArrowVisible)
- : OnBoardingShortcutsLayoutProvider(image, description),
+ ShortcutsLayoutClassic::ShortcutsLayoutClassic(const UTF8 &image,
+ const UTF8 &description,
+ bool leftArrowVisible,
+ bool rightArrowVisible)
+ : ShortcutsLayoutProvider(image, description),
VBox(nullptr, 0, 0, style::bell_base_layout::w, style::bell_base_layout::h), image{image},
description{description}, leftArrowVisible{leftArrowVisible}, rightArrowVisible{rightArrowVisible}
{
buildInterface();
}
- void OnBoardingShortcutsLayoutClassic::buildInterface()
+ void ShortcutsLayoutClassic::buildInterface()
{
setAlignment(Alignment::Horizontal::Center);
@@ 117,7 117,7 @@ namespace gui
this->resizeItems();
}
- auto OnBoardingShortcutsLayoutClassic::getLayout() -> Item *
+ auto ShortcutsLayoutClassic::getLayout() -> Item *
{
return this;
}
R products/BellHybrid/apps/application-bell-onboarding/layouts/OnBoardingShortcutsLayouts.cpp => products/BellHybrid/apps/common/src/layouts/ShortcutsLayouts.cpp +17 -17
@@ 1,43 1,43 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-#include "OnBoardingShortcutsLayouts.hpp"
-#include "OnBoardingShortcutsLayoutClassic.hpp"
+#include "layouts/ShortcutsLayouts.hpp"
+#include "layouts/ShortcutsLayoutClassic.hpp"
namespace gui::factory
{
std::vector<LayoutGenerator> getLayouts()
{
return {{[]() {
- return new OnBoardingShortcutsLayoutClassic(
+ return new ShortcutsLayoutClassic(
"shortcuts_step_rotate", "app_bell_onboarding_shortcuts_step_rotate", false, true);
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic("shortcuts_step_light_click",
- "app_bell_onboarding_shortcuts_step_light_click");
+ return new ShortcutsLayoutClassic("shortcuts_step_light_click",
+ "app_bell_onboarding_shortcuts_step_light_click");
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic("shortcuts_step_deep_press",
- "app_bell_onboarding_shortcuts_step_deep_press");
+ return new ShortcutsLayoutClassic("shortcuts_step_deep_press",
+ "app_bell_onboarding_shortcuts_step_deep_press");
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic("shortcuts_step_home_and_battery",
- "app_bell_onboarding_shortcuts_step_home");
+ return new ShortcutsLayoutClassic("shortcuts_step_home_and_battery",
+ "app_bell_onboarding_shortcuts_step_home");
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic("shortcuts_step_home_and_battery",
- "app_bell_onboarding_shortcuts_step_battery");
+ return new ShortcutsLayoutClassic("shortcuts_step_home_and_battery",
+ "app_bell_onboarding_shortcuts_step_battery");
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic("shortcuts_step_turn_off",
- "app_bell_onboarding_shortcuts_step_turn_off");
+ return new ShortcutsLayoutClassic("shortcuts_step_turn_off",
+ "app_bell_onboarding_shortcuts_step_turn_off");
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic("shortcuts_step_restart",
- "app_bell_onboarding_shortcuts_step_restart");
+ return new ShortcutsLayoutClassic("shortcuts_step_restart",
+ "app_bell_onboarding_shortcuts_step_restart");
}},
{[]() {
- return new OnBoardingShortcutsLayoutClassic(
+ return new ShortcutsLayoutClassic(
"shortcuts_step_bedside_lamp", "app_bell_onboarding_shortcuts_step_bedside_lamp", true, false);
}}};
}
R products/BellHybrid/apps/application-bell-onboarding/windows/OnBoardingShortcutsWindow.cpp => products/BellHybrid/apps/common/src/windows/ShortcutsWindow.cpp +10 -20
@@ 1,27 1,24 @@
-// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-#include "OnBoardingShortcutsWindow.hpp"
-#include "BellOnBoardingNames.hpp"
+#include "windows/ShortcutsWindow.hpp"
#include <Style.hpp>
#include <SideListView.hpp>
#include <gui/input/InputEvent.hpp>
-#include <keymap/KeyMap.hpp>
namespace gui
{
- OnBoardingShortcutsWindow::OnBoardingShortcutsWindow(
- app::ApplicationCommon *app,
- std::unique_ptr<app::OnBoarding::OnBoardingShortcutsWindowContract::Presenter> &&presenter,
- const std::string &name)
+ ShortcutsWindow::ShortcutsWindow(app::ApplicationCommon *app,
+ std::unique_ptr<ShortcutsWindowContract::Presenter> &&presenter,
+ const std::string &name)
: AppWindow(app, name), presenter{std::move(presenter)}
{
this->presenter->attach(this);
buildInterface();
}
- void OnBoardingShortcutsWindow::buildInterface()
+ void ShortcutsWindow::buildInterface()
{
AppWindow::buildInterface();
@@ 44,27 41,20 @@ namespace gui
setFocusItem(spinner);
}
- bool OnBoardingShortcutsWindow::isOneOfTwoLastShortcuts() const
+ bool ShortcutsWindow::isOneOfTwoLastShortcuts() const
{
auto currentLayout = spinner->getCurrentValue();
return presenter->isOneOfTwoLastLayouts(currentLayout);
}
- bool OnBoardingShortcutsWindow::onInput(const gui::InputEvent &inputEvent)
+ bool ShortcutsWindow::onInput(const gui::InputEvent &inputEvent)
{
if (spinner->onInput(inputEvent)) {
return true;
}
- if (inputEvent.isShortRelease()) {
- const auto key = mapKey(inputEvent.getKeyCode());
- if (key == KeyMap::LightPress) {
- auto currentLayout = spinner->getCurrentValue();
- if (presenter->isLastLayout(currentLayout)) {
- getApplication()->switchWindow(window::name::onBoardingSettingsWindow);
- }
- return true;
- }
+ if (presenter->onInput(inputEvent, spinner->getCurrentValue())) {
+ return true;
}
return AppWindow::onInput(inputEvent);