From d0200de5d5d456b09310a95bf53bc804c6a0c23c Mon Sep 17 00:00:00 2001 From: Przemyslaw Brudny Date: Mon, 8 Feb 2021 15:38:13 +0100 Subject: [PATCH] [EGD-5398] Added onBoarding application first version Created first version of onBoarding application. Added welcome window, configuration start window and adopted language window. Small Icon GUI refactor. AppManager language copy removed. --- image/assets/images/logo_no_text.vpi | Bin 0 -> 4973 bytes image/assets/lang/English.json | 73 ++++++------- image/assets/lang/Polski.json | 1 + module-apps/CMakeLists.txt | 1 + .../application-notes/ApplicationNotes.cpp | 6 +- .../ApplicationOnBoarding.cpp | 99 ++++++++++++++++++ .../ApplicationOnBoarding.hpp | 41 ++++++++ .../application-onboarding/CMakeLists.txt | 28 +++++ .../data/OnBoardingSwitchData.hpp | 19 ++++ .../windows/OnBoardingLanguagesWindow.cpp | 30 ++++++ .../windows/OnBoardingLanguagesWindow.hpp | 19 ++++ .../windows/OnBoardingMainWindow.cpp | 52 +++++++++ .../windows/OnBoardingMainWindow.hpp | 23 ++++ .../windows/StartConfigurationWindow.cpp | 53 ++++++++++ .../windows/StartConfigurationWindow.hpp | 22 ++++ .../application-settings-new/CMakeLists.txt | 1 - .../models/LanguagesModel.cpp | 12 --- .../models/LanguagesModel.hpp | 18 ---- .../windows/LanguagesWindow.cpp | 24 ++--- .../windows/LanguagesWindow.hpp | 8 +- module-gui/gui/widgets/Icon.cpp | 33 +++--- module-gui/gui/widgets/Icon.hpp | 9 +- module-gui/gui/widgets/Image.cpp | 8 +- module-gui/gui/widgets/Image.hpp | 3 +- module-gui/gui/widgets/InputMode.cpp | 2 +- .../model/ApplicationManager.cpp | 25 ++--- .../model/ApplicationManager.hpp | 2 - module-utils/i18n/i18n.cpp | 13 ++- module-utils/i18n/i18n.hpp | 4 +- source/main.cpp | 4 + 30 files changed, 490 insertions(+), 143 deletions(-) create mode 100644 image/assets/images/logo_no_text.vpi create mode 100644 module-apps/application-onboarding/ApplicationOnBoarding.cpp create mode 100644 module-apps/application-onboarding/ApplicationOnBoarding.hpp create mode 100644 module-apps/application-onboarding/CMakeLists.txt create mode 100644 module-apps/application-onboarding/data/OnBoardingSwitchData.hpp create mode 100644 module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.cpp create mode 100644 module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp create mode 100644 module-apps/application-onboarding/windows/OnBoardingMainWindow.cpp create mode 100644 module-apps/application-onboarding/windows/OnBoardingMainWindow.hpp create mode 100644 module-apps/application-onboarding/windows/StartConfigurationWindow.cpp create mode 100644 module-apps/application-onboarding/windows/StartConfigurationWindow.hpp delete mode 100644 module-apps/application-settings-new/models/LanguagesModel.cpp delete mode 100644 module-apps/application-settings-new/models/LanguagesModel.hpp diff --git a/image/assets/images/logo_no_text.vpi b/image/assets/images/logo_no_text.vpi new file mode 100644 index 0000000000000000000000000000000000000000..2a4374e5a42414ab32afc82622d8ff4d4e27528b GIT binary patch literal 4973 zcmd6r*>c=A6hvv+Nxair;?Zu&OWARj@=}$2o-(*%jZWvclaDl(-G!xgUS6ZZtTzaJw6Yo>F=4F z>1!D7^T`OvXN~xYHmqM~Zl+H`MdOEQIthYn+Mi}br$6ctjZVebl&Q5I@N%Zt-^%_4rIX{mm36lGzwP&QEE52qWFeh@hngi3kJrdR#wg zrymw^sS|M@=5W4WeWgx1PJWpDrR+o+MgRLb?%#C;T}&=@2XdDFI3N4*@lKt$86`g> zK;-^aBX9=&qK~P!a}?jKquU7F_CX;Fpf@u#)9WDV5}CTH$`!kDV?WWaT@BYk)79Qz zZ?vyfzgpEvfAi%GqiQ7AE7i>c8zPe#s;-vI4Vl@`{i`{v`7*q;?9EKz)mp=FloiLA z?bSP7i$3j387{&=RJa|DW?85L1#k^)EXARAIRl(zAoO3+n9>)u>ipX#;S1;fJlbS# zFOEb(<9zUCyS3nYuAVDnbPR(?Xt;IN*oL8=&eb!rPC*w%kz7Hx$;&9B&#cgCT;i@= zqUtI&r((_E=M`%kkEioib45g&s1MzsITfV&&m2u*qSYc5<{6~g89VV<9PJMka}GyiOzWEqnUAab%7gL zimIQs$^ULxh*BF5dV$?GzK{1_$W?B>T5VBi-5b4vtJmTemfeV|R=uEgKjY+o;H7OU zymRfyvi2V6p!*;UAZ4h}t}_&NW+Ou@MGbD|{BZQqniUWA-~+8Y-47TsU+VE_%oMM! zSFrK7^ThfBN~a(^3ka71tuO9`pTpDHAXZdY3Ot|pC^)JjBj)$off8Lwi7x zfn3Cj0$pDV%9FSX_!0%W4nCV-&+Fv)G-@Etm&oPJ7P00dqMTHHK$Mvoeg=;maDAGu zVfM5j&Qleqee=)@5eIJ^!Nm!yt{H8N)Op)6P~6V;a8MC0%RWDH;ysnV_SyI3hyv`{ z!MOFhRhepUYRDg85<|eHXPdh?HOL#z%do7GyWG>4UF2M(`(QN5{CL%ihVMtI24kn5 zg6?t2kz5?*+M1sxl6KbG$$Uo3-G?eHL#SM+KXEA%nbkM-VD1e#O-_%&8AV*K^E9VaqT&gIjFvv z){NMts(B8q12ZXt+Sta+!Fff5{;bggn$}o<-9VQ`~P=l%COER?=L#X3fgPy^*;0eF6sCtXIc7U*LxKo1$8i`dgWOzoC*0yHm*oZ9Ohb z?p(};y)cMsCg}Ulh5q)Obj?(a*yZg_CVJIF*VRp=Z5X#*y=q)lt4Fe5-YR{Yt%qd8 zvm;yTlWf9PmT^4$4Q+D)bLM--_EtSc)E_nE*1fa}8w2>v(AoZt9)8kye-TZCg!gS` z+;MQ{?gsvX0Aeq;l8HMHl?Ch`Y&*_zEDrpI&OOO+D3ZkE#vKUDL93lw(C*HZ-CjI# zmvc_7{_aX%jwFK7uyyr&hTw^=W!DE7uiJR=#2KH8GZU}ooL5)bA>*EE=_gf-Lb4?t znRAW*^b?)m`MKIo|ANjhT literal 0 HcmV?d00001 diff --git a/image/assets/lang/English.json b/image/assets/lang/English.json index fba05c574317365cf29ed6c19f32c3596958c05a..3adbcf6018c7673d13d2f30735797f5bc1d2256b 100644 --- a/image/assets/lang/English.json +++ b/image/assets/lang/English.json @@ -77,28 +77,28 @@ "home_modes_connected": "CONNECTED", "home_modes_notdisturb": "DO NOT DISTURB", "home_modes_offline": "OFFLINE", - "app_alarm_clock_title_main" : "Alarm clock", - "app_alarm_clock_repeat_never" : "Never", - "app_alarm_clock_repeat_everyday" : "Everyday", - "app_alarm_clock_repeat_week_days" : "Week Days", - "app_alarm_clock_repeat_custom" : "Custom", - "app_alarm_clock_no_alarms_information" : "No alarms yet.

Press left arrow to add new.

", + "app_alarm_clock_title_main": "Alarm clock", + "app_alarm_clock_repeat_never": "Never", + "app_alarm_clock_repeat_everyday": "Everyday", + "app_alarm_clock_repeat_week_days": "Week Days", + "app_alarm_clock_repeat_custom": "Custom", + "app_alarm_clock_no_alarms_information": "No alarms yet.

Press left arrow to add new.

", "app_alarm_clock_options_title": "Options", "app_alarm_clock_options_edit": "Edit", "app_alarm_clock_options_delete": "Delete", "app_alarm_clock_options_turn_off_all_alarms": "Turn off all alarms", "app_alarm_clock_delete_confirmation": "Delete this alarm?", - "app_alarm_clock_new_alarm_title" : "New alarm", - "app_alarm_clock_edit_alarm_title" : "Edit alarm", - "app_alarm_clock_sound" : "Sound", - "app_alarm_clock_snooze" : "Snooze", - "app_alarm_clock_repeat" :"Repeat", - "app_alarm_clock_snooze_5_min" : "5 min", - "app_alarm_clock_snooze_10_min" : "10 min", - "app_alarm_clock_snooze_15_min" : "15 min", - "app_alarm_clock_snooze_30_min" : "30 min", - "app_alarm_clock_play_pause" : "PLAY/PAUSE", - "app_alarm_clock_edit" : "EDIT", + "app_alarm_clock_new_alarm_title": "New alarm", + "app_alarm_clock_edit_alarm_title": "Edit alarm", + "app_alarm_clock_sound": "Sound", + "app_alarm_clock_snooze": "Snooze", + "app_alarm_clock_repeat": "Repeat", + "app_alarm_clock_snooze_5_min": "5 min", + "app_alarm_clock_snooze_10_min": "10 min", + "app_alarm_clock_snooze_15_min": "15 min", + "app_alarm_clock_snooze_30_min": "30 min", + "app_alarm_clock_play_pause": "PLAY/PAUSE", + "app_alarm_clock_edit": "EDIT", "app_calendar_title_main": "Calendar", "app_calendar_options_title": "Options", "app_calendar_options_edit": "Edit", @@ -136,17 +136,14 @@ "app_calendar_all_day": "All day", "app_calendar_new_edit_event_start": "Start", "app_calendar_new_edit_event_end": "End", - "app_calculator_title_main": "Calculator", "app_calculator_equals": "EQUALS", "app_calculator_decimal_separator": ".", "app_calculator_error": "Error", - "app_options_invalid_option": " ", "app_options_contact_details": "Contact details", "app_options_contact_add": "Add to contacts", "app_options_contact_edit": "Edit Contact", - "app_notes_title_main": "Notes", "app_notes_edit_new_note": "Edit/New Note", "app_notes_copy_text": "Copy text", @@ -157,7 +154,6 @@ "app_notes_note_delete_confirmation": "Do you really want to delete this note?", "app_notes_no_notes": "No notes yet.

Press left arrow to add new.

", "app_notes_search_no_results": "No notes found.", - "app_calllog_title_main": "Calls", "app_calllog_new_note": "New Note", "app_calllog_save": "SAVE", @@ -173,7 +169,6 @@ "app_calllog_options_title": "Options", "app_calllog_options_delete_call": "Delete call", "app_calllog_delete_call_confirmation": "Do you really want to delete this call from the list?", - "app_desktop_unlock": "UNLOCK", "app_desktop_lock": "LOCK", "app_desktop_menu": "MENU", @@ -182,7 +177,7 @@ "app_desktop_info_mmi_none_specified_failed": "Operation failed", "app_desktop_info_mmi_none_specified_success": "Operation successful", "app_desktop_info_mmi_common_failed": "failed", - "app_desktop_info_mmi_common_no_meassage" :"not", + "app_desktop_info_mmi_common_no_meassage": "not", "app_desktop_info_mmi_common_mmi_not_supported": "not supported", "app_desktop_info_mmi_common_enabled": "enabled", "app_desktop_info_mmi_common_disabled": "disabled", @@ -192,7 +187,7 @@ "app_desktop_info_mmi_common_sync": "sync", "app_desktop_info_mmi_common_async": "async", "app_desktop_info_mmi_common_all_disabled": "all disabled", - "app_desktop_info_mmi_common_deactivated":"deactivated", + "app_desktop_info_mmi_common_deactivated": "deactivated", "app_desktop_info_mmi_common_activated": "activated", "app_desktop_info_mmi_common_query": "query", "app_desktop_info_mmi_clir_according_to_subscription": "CLIR according to subscription", @@ -221,12 +216,12 @@ "app_desktop_info_mmi_clip_unknown": "CLIP unknown", "app_desktop_info_mmi_call_waiting_activated": " call waiting activated", "app_desktop_info_mmi_call_waiting_deactivated": "call waiting deactivated", - "app_desktop_info_mmi_call_forwarding" : "Call forwarding", - "app_desktop_info_mmi_call_barring" : "Call barring", - "app_desktop_info_mmi_call_waiting" : "Call waiting", - "app_desktop_info_mmi_clip" : "Caller ID displayed (CLIP)", - "app_desktop_info_mmi_clir" : "Caller ID suppressed (CLIR)", - "app_desktop_info_mmi_imei" : "IMEI (MEID)", + "app_desktop_info_mmi_call_forwarding": "Call forwarding", + "app_desktop_info_mmi_call_barring": "Call barring", + "app_desktop_info_mmi_call_waiting": "Call waiting", + "app_desktop_info_mmi_clip": "Caller ID displayed (CLIP)", + "app_desktop_info_mmi_clir": "Caller ID suppressed (CLIR)", + "app_desktop_info_mmi_imei": "IMEI (MEID)", "app_desktop_info_mmi_result_success": "Success", "app_desktop_info_mmi_result_failed": "Failed", "app_desktop_header_sim_setup": "$SIM setup", @@ -275,7 +270,6 @@ "app_desktop_clear": "CLEAR", "app_desktop_clear_all": "CLEAR ALL", "app_desktop_replay": "REPLY", - "app_call_call": "CALL", "app_call_clear": "CLEAR", "app_call_reject": "REJECT", @@ -310,6 +304,7 @@ "app_messages_thread_not_sent": "Not sent: ", "app_messages_thread_from_this": "From this message", "app_messages_thread_you": "You: ", + "app_onboarding_start_configuration": "

Hello!



Let's configure your Mudita Pure.", "app_settings_title_main": "Settings", "app_settings_title_main_new": "Settings New", "app_settings_bt": "Bluetooth", @@ -390,8 +385,8 @@ "app_settings_network_sim1": "Sim1", "app_settings_network_sim2": "Sim2", "app_settings_network_sim_none": "No Sim", - "app_settings_network_voice_over_lte" : "VoLTE (experimental)", - "app_settings_network_apn_settings" : "APN settings", + "app_settings_network_voice_over_lte": "VoLTE (experimental)", + "app_settings_network_apn_settings": "APN settings", "app_settings_toggle_on": "ON", "app_settings_toggle_off": "OFF", "app_settings_security_lock_screen_passcode": "Lock screen passcode", @@ -402,11 +397,11 @@ "app_settings_security_wrong_passcode": "Wrong passcode!", "app_settings_security_passcode_changed_successfully": "Passcode changed successfully!", "app_settings_security_passcode_disabled": "Passcode disabled!", - "app_settings_apn_settings_no_apns" : "No APNs yet.

Press left arrow to add new.

", - "app_settings_apn_options" : "Options", - "app_settings_apn_options_delete" : "Delete", - "app_settings_apn_options_edit" : "Edit", - "app_settings_apn_options_set_as_default" : "Set as default", + "app_settings_apn_settings_no_apns": "No APNs yet.

Press left arrow to add new.

", + "app_settings_apn_options": "Options", + "app_settings_apn_options_delete": "Delete", + "app_settings_apn_options_edit": "Edit", + "app_settings_apn_options_set_as_default": "Set as default", "app_settings_new_edit_apn": "New/Edit APN", "app_settings_apn_name": "Name", "app_settings_apn_APN": "APN", @@ -414,7 +409,7 @@ "app_settings_apn_password": "Password", "app_settings_apn_authtype": "Authentication type", "app_settings_apn_apntype": "APN Type", - "app_settings_apn_apnprotocol" : "APN Protocol", + "app_settings_apn_apnprotocol": "APN Protocol", "app_settings_title_color_test": "Display available colors", "app_settings_toolbar_reset": "RESET", "app_phonebook_title_main": "Contacts", diff --git a/image/assets/lang/Polski.json b/image/assets/lang/Polski.json index 73c3eded6bd07014e6174169fcb0948f25468f9f..46a7e791dd46319d7b41b997dca6181eb67e4206 100644 --- a/image/assets/lang/Polski.json +++ b/image/assets/lang/Polski.json @@ -102,6 +102,7 @@ "app_call_is_calling": "dzwoni", "app_call_call_ended": "zakończono", "app_call_contact": "KONTAKT", + "app_onboarding_start_configuration": "

Witaj!



Zacznijmy konfigurację Mudita Pure.", "app_settings_title_main": "Ustawienia", "app_settings_bt": "Bluetooth", "app_settings_date_and_time": "Data i Czas", diff --git a/module-apps/CMakeLists.txt b/module-apps/CMakeLists.txt index dc701c1de8e88a2485ce2766408d42c052e73e27..c3fec373bd1afd7136b18da862bdd5ca485eac3c 100644 --- a/module-apps/CMakeLists.txt +++ b/module-apps/CMakeLists.txt @@ -51,6 +51,7 @@ set(APPLICATIONS settings-new call notes + onboarding phonebook messages calllog diff --git a/module-apps/application-notes/ApplicationNotes.cpp b/module-apps/application-notes/ApplicationNotes.cpp index f5ca5050dee29e220a344c647507689c19e7428d..a50b75f4c3e1060398eacea3181f51dfc78a08e0 100644 --- a/module-apps/application-notes/ApplicationNotes.cpp +++ b/module-apps/application-notes/ApplicationNotes.cpp @@ -19,6 +19,7 @@ #include #include #include +#include namespace app { @@ -28,7 +29,7 @@ namespace app } // namespace ApplicationNotes::ApplicationNotes(std::string name, std::string parent, StartInBackground startInBackground) - : Application(name, parent, startInBackground, NotesStackSize) + : Application(std::move(name), std::move(parent), startInBackground, NotesStackSize) { bus.channels.push_back(sys::BusChannel::ServiceDBNotifications); } @@ -43,8 +44,7 @@ namespace app } if (msgl->messageType == MessageType::DBServiceNotification) { - auto msg = dynamic_cast(msgl); - if (msg != nullptr) { + if (auto msg = dynamic_cast(msgl); msg != nullptr) { // window-specific actions if (msg->interface == db::Interface::Name::Notes) { for (auto &[name, window] : windowsStack) { diff --git a/module-apps/application-onboarding/ApplicationOnBoarding.cpp b/module-apps/application-onboarding/ApplicationOnBoarding.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5f18b099bd36c2e1a41b02b4dda2655de4f7f14e --- /dev/null +++ b/module-apps/application-onboarding/ApplicationOnBoarding.cpp @@ -0,0 +1,99 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include + +#include "ApplicationOnBoarding.hpp" + +#include "windows/OnBoardingMainWindow.hpp" +#include "windows/StartConfigurationWindow.hpp" +#include "windows/OnBoardingLanguagesWindow.hpp" + +#include +#include +#include + +namespace app +{ + namespace + { + constexpr auto OnBoardingStackSize = 4096U; + } // namespace + + ApplicationOnBoarding::ApplicationOnBoarding(std::string name, + std::string parent, + StartInBackground startInBackground) + : Application(std::move(name), std::move(parent), startInBackground, OnBoardingStackSize) + { + using namespace gui::top_bar; + topBarManager->enableIndicators({Indicator::Signal, + Indicator::Time, + Indicator::Battery, + Indicator::SimCard, + Indicator::NetworkAccessTechnology}); + + bus.channels.push_back(sys::BusChannel::ServiceDBNotifications); + } + + // Invoked upon receiving data message + sys::MessagePointer ApplicationOnBoarding::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) + { + auto retMsg = Application::DataReceivedHandler(msgl); + // if message was handled by application's template there is no need to process further. + if (reinterpret_cast(retMsg.get())->retCode == sys::ReturnCodes::Success) { + return retMsg; + } + + return msgNotHandled(); + } + + sys::ReturnCodes ApplicationOnBoarding::InitHandler() + { + const auto ret = Application::InitHandler(); + if (ret != sys::ReturnCodes::Success) { + return ret; + } + + createUserInterface(); + setActiveWindow(gui::name::window::main_window); + + connect(typeid(manager::GetCurrentDisplayLanguageResponse), [&](sys::Message *msg) { + if (gui::window::name::onBoarding_languages == getCurrentWindow()->getName()) { + switchWindow(gui::window::name::onBoarding_start_configuration, nullptr); + return msgHandled(); + } + else { + return msgNotHandled(); + } + }); + + return ret; + } + + sys::ReturnCodes ApplicationOnBoarding::DeinitHandler() + { + return sys::ReturnCodes::Success; + } + + sys::ReturnCodes ApplicationOnBoarding::SwitchPowerModeHandler(const sys::ServicePowerMode mode) + { + return sys::ReturnCodes::Success; + } + + void ApplicationOnBoarding::createUserInterface() + { + windowsFactory.attach(gui::name::window::main_window, [](Application *app, const std::string &name) { + return std::make_unique(app); + }); + windowsFactory.attach(gui::window::name::onBoarding_languages, [](Application *app, const std::string &name) { + return std::make_unique(app); + }); + windowsFactory.attach(gui::window::name::onBoarding_start_configuration, + [](Application *app, const std::string &name) { + return std::make_unique(app); + }); + } + + void ApplicationOnBoarding::destroyUserInterface() + {} +} // namespace app diff --git a/module-apps/application-onboarding/ApplicationOnBoarding.hpp b/module-apps/application-onboarding/ApplicationOnBoarding.hpp new file mode 100644 index 0000000000000000000000000000000000000000..97ea91544b086642bc4c8b8d67b6a45809feb290 --- /dev/null +++ b/module-apps/application-onboarding/ApplicationOnBoarding.hpp @@ -0,0 +1,41 @@ +// 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 "Application.hpp" + +namespace gui::window::name +{ + inline constexpr auto onBoarding_languages = "OnBoardingLanguages"; + inline constexpr auto onBoarding_start_configuration = "OnBoardingStartingConfiguration"; +} // namespace gui::window::name + +namespace app +{ + inline constexpr auto name_onboarding = "ApplicationOnBoarding"; + + class ApplicationOnBoarding : public Application + { + public: + explicit ApplicationOnBoarding(std::string name = name_onboarding, + std::string parent = {}, + StartInBackground startInBackground = {false}); + + sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) override; + sys::ReturnCodes InitHandler() override; + sys::ReturnCodes DeinitHandler() override; + sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) override; + + void createUserInterface() override; + void destroyUserInterface() override; + }; + + template <> struct ManifestTraits + { + static auto GetManifest() -> manager::ApplicationManifest + { + return {{manager::actions::Launch}}; + } + }; +} // namespace app diff --git a/module-apps/application-onboarding/CMakeLists.txt b/module-apps/application-onboarding/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..a31755e5c5b229b5368e36a0a224d09302ede328 --- /dev/null +++ b/module-apps/application-onboarding/CMakeLists.txt @@ -0,0 +1,28 @@ +include_directories( ${CMAKE_PROJECT_NAME} + PUBLIC + "${CMAKE_CURRENT_LIST_DIR}" +) + +include_directories( ${PROJECT_NAME} + PUBLIC + "${CMAKE_CURRENT_LIST_DIR}" +) + +target_sources( ${PROJECT_NAME} + + PRIVATE + "${CMAKE_CURRENT_LIST_DIR}/ApplicationOnBoarding.cpp" + "${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingMainWindow.cpp" + "${CMAKE_CURRENT_LIST_DIR}/windows/StartConfigurationWindow.cpp" + "${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingLanguagesWindow.cpp" + PUBLIC + "${CMAKE_CURRENT_LIST_DIR}/ApplicationOnBoarding.hpp" + "${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingMainWindow.hpp" + "${CMAKE_CURRENT_LIST_DIR}/windows/StartConfigurationWindow.hpp" + "${CMAKE_CURRENT_LIST_DIR}/windows/OnBoardingLanguagesWindow.hpp" + "${CMAKE_CURRENT_LIST_DIR}/data/OnBoardingSwitchData.hpp" +) +target_include_directories(${PROJECT_NAME} + PRIVATE + service-db +) diff --git a/module-apps/application-onboarding/data/OnBoardingSwitchData.hpp b/module-apps/application-onboarding/data/OnBoardingSwitchData.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c1b4ffb4b5fe658615b95d8eb2556c96631708f9 --- /dev/null +++ b/module-apps/application-onboarding/data/OnBoardingSwitchData.hpp @@ -0,0 +1,19 @@ +// 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 +#include + +namespace gui +{ + + class OnBoardingSwitchData : public gui::SwitchData + { + public: + OnBoardingSwitchData() : SwitchData("onBoardingSwitchData") + {} + }; +} // namespace gui diff --git a/module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.cpp b/module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3ba8af78282c3a0a10569feb2419c52d6bbb4b38 --- /dev/null +++ b/module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.cpp @@ -0,0 +1,30 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "application-onboarding/ApplicationOnBoarding.hpp" +#include "OnBoardingLanguagesWindow.hpp" +#include + +namespace gui +{ + OnBoardingLanguagesWindow::OnBoardingLanguagesWindow(app::Application *app) + : LanguagesWindow(app, window::name::onBoarding_languages) + {} + + void OnBoardingLanguagesWindow::onBeforeShow(ShowMode mode, SwitchData *data) + { + bottomBar->setActive(gui::BottomBar::Side::RIGHT, false); + + LanguagesWindow::onBeforeShow(mode, data); + } + + bool OnBoardingLanguagesWindow::onInput(const gui::InputEvent &inputEvent) + { + if (inputEvent.isShortPress() && inputEvent.is(KeyCode::KEY_RF)) { + return true; + } + else { + return LanguagesWindow::onInput(inputEvent); + } + } +} /* namespace gui */ diff --git a/module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp b/module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp new file mode 100644 index 0000000000000000000000000000000000000000..587aaea5385135f38715447a3c445f1891ff13e5 --- /dev/null +++ b/module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp @@ -0,0 +1,19 @@ +// 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 +{ + class OnBoardingLanguagesWindow : public LanguagesWindow + { + public: + explicit OnBoardingLanguagesWindow(app::Application *app); + + private: + void onBeforeShow(ShowMode mode, SwitchData *data) override; + bool onInput(const gui::InputEvent &inputEvent) override; + }; +} /* namespace gui */ diff --git a/module-apps/application-onboarding/windows/OnBoardingMainWindow.cpp b/module-apps/application-onboarding/windows/OnBoardingMainWindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..84a3d3a48f3efd61d3ab562252beb30073e177bb --- /dev/null +++ b/module-apps/application-onboarding/windows/OnBoardingMainWindow.cpp @@ -0,0 +1,52 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include +#include + +#include + +#include + +#include "module-apps/application-onboarding/data/OnBoardingSwitchData.hpp" +#include "OnBoardingMainWindow.hpp" + +namespace gui +{ + OnBoardingMainWindow::OnBoardingMainWindow(app::Application *app) : AppWindow(app, gui::name::window::main_window) + { + buildInterface(); + } + + void OnBoardingMainWindow::buildInterface() + { + AppWindow::buildInterface(); + + bottomBar->setActive(gui::BottomBar::Side::CENTER, true); + bottomBar->setText(gui::BottomBar::Side::CENTER, utils::localize.get(::style::strings::common::start)); + + new Image(this, 0, 0, 0, 0, "logo"); + } + + top_bar::Configuration OnBoardingMainWindow::configureTopBar(top_bar::Configuration appConfiguration) + { + appConfiguration.set(top_bar::Indicator::Time, false); + appConfiguration.set(top_bar::Indicator::Battery, false); + appConfiguration.set(top_bar::Indicator::SimCard, false); + appConfiguration.set(top_bar::Indicator::Signal, false); + return appConfiguration; + } + + bool OnBoardingMainWindow::onInput(const gui::InputEvent &inputEvent) + { + if (inputEvent.isShortPress() && inputEvent.is(KeyCode::KEY_ENTER)) { + application->switchWindow(gui::window::name::onBoarding_languages, + gui::ShowMode::GUI_SHOW_INIT, + std::make_unique()); + + return true; + } + return AppWindow::onInput(inputEvent); + } + +} // namespace gui diff --git a/module-apps/application-onboarding/windows/OnBoardingMainWindow.hpp b/module-apps/application-onboarding/windows/OnBoardingMainWindow.hpp new file mode 100644 index 0000000000000000000000000000000000000000..ed21f783071c43f214b61a62a9524ad61b7ddb8f --- /dev/null +++ b/module-apps/application-onboarding/windows/OnBoardingMainWindow.hpp @@ -0,0 +1,23 @@ +// 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 +#include + +namespace gui +{ + class OnBoardingMainWindow : public gui::AppWindow + { + public: + explicit OnBoardingMainWindow(app::Application *app); + + bool onInput(const gui::InputEvent &inputEvent) override; + + void buildInterface() override; + top_bar::Configuration configureTopBar(top_bar::Configuration appConfiguration) override; + }; +} // namespace gui diff --git a/module-apps/application-onboarding/windows/StartConfigurationWindow.cpp b/module-apps/application-onboarding/windows/StartConfigurationWindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..48282ee8b1c72e51d46eefa1f2dbc821cd175e5e --- /dev/null +++ b/module-apps/application-onboarding/windows/StartConfigurationWindow.cpp @@ -0,0 +1,53 @@ +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include +#include + +#include + +#include +#include "module-apps/application-onboarding/data/OnBoardingSwitchData.hpp" + +#include "StartConfigurationWindow.hpp" + +namespace gui +{ + StartConfigurationWindow::StartConfigurationWindow(app::Application *app) + : AppWindow(app, gui::window::name::onBoarding_start_configuration) + { + buildInterface(); + } + + void StartConfigurationWindow::buildInterface() + { + AppWindow::buildInterface(); + + bottomBar->setActive(gui::BottomBar::Side::CENTER, true); + bottomBar->setText(gui::BottomBar::Side::CENTER, utils::localize.get(::style::strings::common::start)); + bottomBar->setActive(gui::BottomBar::Side::RIGHT, true); + bottomBar->setText(gui::BottomBar::Side::RIGHT, utils::localize.get(::style::strings::common::back)); + + new Icon(this, + 0, + 0, + style::window_width, + style::window::default_body_height, + "logo_no_text", + utils::localize.get("app_onboarding_start_configuration")); + } + + bool StartConfigurationWindow::onInput(const gui::InputEvent &inputEvent) + { + if (inputEvent.isShortPress()) { + if (inputEvent.is(KeyCode::KEY_RF)) { + application->switchWindow(gui::window::name::onBoarding_languages, + gui::ShowMode::GUI_SHOW_INIT, + std::make_unique()); + } + return true; + } + return AppWindow::onInput(inputEvent); + } + +} // namespace gui diff --git a/module-apps/application-onboarding/windows/StartConfigurationWindow.hpp b/module-apps/application-onboarding/windows/StartConfigurationWindow.hpp new file mode 100644 index 0000000000000000000000000000000000000000..55c26e54cf827f075e3015caa37a7e2de9cd82e0 --- /dev/null +++ b/module-apps/application-onboarding/windows/StartConfigurationWindow.hpp @@ -0,0 +1,22 @@ +// 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 +#include + +namespace gui +{ + class StartConfigurationWindow : public gui::AppWindow + { + public: + explicit StartConfigurationWindow(app::Application *app); + + bool onInput(const gui::InputEvent &inputEvent) override; + + void buildInterface() override; + }; +} // namespace gui diff --git a/module-apps/application-settings-new/CMakeLists.txt b/module-apps/application-settings-new/CMakeLists.txt index 0f2967a0558df0ee5c8354658675a8693e786521..3369233f767206aae4338f7c9dbcc81d70ad241c 100644 --- a/module-apps/application-settings-new/CMakeLists.txt +++ b/module-apps/application-settings-new/CMakeLists.txt @@ -16,7 +16,6 @@ target_sources( ${PROJECT_NAME} PRIVATE ApplicationSettings.cpp models/ApnSettingsModel.cpp - models/LanguagesModel.cpp models/NewApnModel.cpp widgets/timeWidget.cpp widgets/ChangePasscodeLockHandler.cpp diff --git a/module-apps/application-settings-new/models/LanguagesModel.cpp b/module-apps/application-settings-new/models/LanguagesModel.cpp deleted file mode 100644 index 91afdd2389ac3391451a87bc7a2106a51644f290..0000000000000000000000000000000000000000 --- a/module-apps/application-settings-new/models/LanguagesModel.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. -// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md - -#include -#include -#include "LanguagesModel.hpp" - -void LanguagesModel::requestCurrentDisplayLanguage() -{ - application->bus.sendUnicast(std::make_shared(), - app::manager::ApplicationManager::ServiceName); -} diff --git a/module-apps/application-settings-new/models/LanguagesModel.hpp b/module-apps/application-settings-new/models/LanguagesModel.hpp deleted file mode 100644 index 80243a1f97becca9b1a93d7886b1fa447bf5e3b7..0000000000000000000000000000000000000000 --- a/module-apps/application-settings-new/models/LanguagesModel.hpp +++ /dev/null @@ -1,18 +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 - -class LanguagesModel -{ - public: - explicit LanguagesModel(app::Application *application) : application(application) - {} - - void requestCurrentDisplayLanguage(); - - private: - app::Application *application = nullptr; -}; diff --git a/module-apps/application-settings-new/windows/LanguagesWindow.cpp b/module-apps/application-settings-new/windows/LanguagesWindow.cpp index a07add7a0a66a6d50ffb65d0cb96d5238b268a2b..f71174869e7f9db7f05a6f52ecb3cf0b9eb41cbf 100644 --- a/module-apps/application-settings-new/windows/LanguagesWindow.cpp +++ b/module-apps/application-settings-new/windows/LanguagesWindow.cpp @@ -4,21 +4,24 @@ #include "application-settings-new/ApplicationSettings.hpp" #include "application-settings-new/data/LanguagesData.hpp" #include "LanguagesWindow.hpp" + +#include #include "OptionSetting.hpp" #include "service-appmgr/Controller.hpp" namespace gui { - LanguagesWindow::LanguagesWindow(app::Application *app) - : BaseSettingsWindow(app, window::name::languages), langList(loader.getAvailableDisplayLanguages()), - languagesModel(app) + LanguagesWindow::LanguagesWindow(app::Application *app, std::string name) + : BaseSettingsWindow(app, std::move(name)), langList(loader.getAvailableDisplayLanguages()) { setTitle(utils::localize.get("app_settings_title_languages")); - languagesModel.requestCurrentDisplayLanguage(); } void LanguagesWindow::onBeforeShow(ShowMode mode, SwitchData *data) { + selectedLanguage = utils::localize.getDisplayLanguage(); + setLanguageIndex(); + refreshOptionsList(selectedLanguageIndex); } @@ -42,19 +45,6 @@ namespace gui return options; } - auto LanguagesWindow::handleSwitchData(SwitchData *data) -> bool - { - auto *languagesData = dynamic_cast(data); - if (languagesData == nullptr) { - return false; - } - - selectedLanguage = languagesData->getCurrentDisplayLanguage(); - setLanguageIndex(); - - return true; - } - void LanguagesWindow::setLanguageIndex() { for (unsigned int langIndex = 0; langIndex < langList.size(); ++langIndex) { diff --git a/module-apps/application-settings-new/windows/LanguagesWindow.hpp b/module-apps/application-settings-new/windows/LanguagesWindow.hpp index 6b85dcdea50c630d6bcf31a7ab5574c965aa58ed..f0f6c7d7d08d3d53df8491a3f43ba0a16f48aa91 100644 --- a/module-apps/application-settings-new/windows/LanguagesWindow.hpp +++ b/module-apps/application-settings-new/windows/LanguagesWindow.hpp @@ -3,7 +3,7 @@ #pragma once -#include "application-settings-new/models/LanguagesModel.hpp" +#include "application-settings-new/ApplicationSettings.hpp" #include "BaseSettingsWindow.hpp" #include @@ -12,17 +12,15 @@ namespace gui class LanguagesWindow : public BaseSettingsWindow { public: - explicit LanguagesWindow(app::Application *app); + explicit LanguagesWindow(app::Application *app, std::string name = window::name::languages); - private: + protected: auto buildOptionsList() -> std::list