M changelog.md => changelog.md +1 -0
@@ 8,6 8,7 @@
* `[notes]` MMI/USSD communication window
* `[notes]` Notes application implemented.
* `[notes]` Notes search engine implemented.
+* `[desktop]` info window for incoming MMI messages.
### Changed
M module-apps/CMakeLists.txt => module-apps/CMakeLists.txt +1 -1
@@ 30,7 30,7 @@ set( SOURCES
"widgets/BrightnessBox.cpp"
"widgets/ModesBox.cpp"
"widgets/BarGraph.cpp"
- )
+ )
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${BOARD_SOURCES})
M module-apps/application-desktop/ApplicationDesktop.cpp => module-apps/application-desktop/ApplicationDesktop.cpp +10 -0
@@ 12,6 12,8 @@
#include "windows/Reboot.hpp"
#include "windows/Update.hpp"
#include "windows/MmiPullWindow.hpp"
+#include "windows/MmiPushWindow.hpp"
+
#include "AppWindow.hpp"
#include "data/LockPhoneData.hpp"
@@ 69,6 71,11 @@ namespace app
switchWindow(app::window::name::desktop_mmi_pull, std::move(data));
return msgHandled();
});
+
+ addActionReceiver(app::manager::actions::ShowMMIPush, [this](auto &&data) {
+ switchWindow(app::window::name::desktop_mmi_push, std::move(data));
+ return msgHandled();
+ });
}
ApplicationDesktop::~ApplicationDesktop()
@@ 336,6 343,9 @@ namespace app
windowsFactory.attach(desktop_mmi_pull, [](Application *app, const std::string newname) {
return std::make_unique<gui::MmiPullWindow>(app, desktop_mmi_pull);
});
+ windowsFactory.attach(desktop_mmi_push, [](Application *app, const std::string newname) {
+ return std::make_unique<gui::MmiPushWindow>(app, desktop_mmi_push);
+ });
}
void ApplicationDesktop::destroyUserInterface()
M module-apps/application-desktop/ApplicationDesktop.hpp => module-apps/application-desktop/ApplicationDesktop.hpp +1 -0
@@ 101,6 101,7 @@ namespace app
manager::actions::UnlockSim,
manager::actions::BlockSim,
manager::actions::ShowMMIResponse,
+ manager::actions::ShowMMIPush,
manager::actions::DisplayCMEError}};
}
};
M module-apps/application-desktop/CMakeLists.txt => module-apps/application-desktop/CMakeLists.txt +3 -0
@@ 31,10 31,12 @@ target_sources( ${PROJECT_NAME}
"${CMAKE_CURRENT_LIST_DIR}/windows/Reboot.cpp"
"${CMAKE_CURRENT_LIST_DIR}/windows/Update.cpp"
"${CMAKE_CURRENT_LIST_DIR}/windows/MmiPullWindow.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/windows/MmiPushWindow.cpp"
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/ApplicationDesktop.hpp"
"${CMAKE_CURRENT_LIST_DIR}/data/LockPhoneData.hpp"
"${CMAKE_CURRENT_LIST_DIR}/data/Style.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/data/Mmi.hpp"
"${CMAKE_CURRENT_LIST_DIR}/widgets/PinHash.hpp"
"${CMAKE_CURRENT_LIST_DIR}/widgets/PinLock.hpp"
"${CMAKE_CURRENT_LIST_DIR}/widgets/DesktopInputWidget.hpp"
@@ 54,6 56,7 @@ target_sources( ${PROJECT_NAME}
"${CMAKE_CURRENT_LIST_DIR}/windows/Update.hpp"
"${CMAKE_CURRENT_LIST_DIR}/windows/Names.hpp"
"${CMAKE_CURRENT_LIST_DIR}/windows/MmiPullWindow.hpp"
+ "${CMAKE_CURRENT_LIST_DIR}/windows/MmiPushWindow.hpp"
)
target_link_libraries(${PROJECT_NAME}
A module-apps/application-desktop/data/Mmi.hpp => module-apps/application-desktop/data/Mmi.hpp +17 -0
@@ 0,0 1,17 @@
+// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+namespace mmi
+{
+ static inline std::string removePhrase(std::string str, std::string phrase)
+ {
+ auto find_pos = str.find(phrase);
+ while (find_pos != std::string::npos) {
+ str.replace(find_pos, phrase.size(), "");
+ find_pos = str.find(phrase, find_pos);
+ }
+ return str;
+ }
+} // namespace mmi
M module-apps/application-desktop/windows/MmiPullWindow.cpp => module-apps/application-desktop/windows/MmiPullWindow.cpp +3 -12
@@ 2,7 2,8 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "MmiPullWindow.hpp"
-#include "application-desktop/widgets/DesktopInputWidget.hpp"
+#include <application-desktop/widgets/DesktopInputWidget.hpp>
+#include <application-desktop/data/Mmi.hpp>
#include <service-appmgr/model/ApplicationManager.hpp>
#include <service-appmgr/data/MmiActionsParams.hpp>
@@ 65,21 66,11 @@ MmiPullWindow::MmiPullWindow(app::Application *app, const std::string &name) : g
addWidget(InputBox);
}
-std::string MmiPullWindow::removePhrase(std::string str, std::string phrase)
-{
- auto find_pos = str.find(phrase);
- while (find_pos != std::string::npos) {
- str.replace(find_pos, phrase.size(), "");
- find_pos = str.find(phrase, find_pos);
- }
- return str;
-}
-
void MmiPullWindow::onBeforeShow(ShowMode mode, SwitchData *data)
{
auto metadata = dynamic_cast<app::manager::actions::MMIParams *>(data);
if (metadata != nullptr) {
- text->setText(removePhrase(metadata->getData(), "\r"));
+ text->setText(mmi::removePhrase(metadata->getData(), "\r"));
}
InputBox->setVisible(true);
setFocusItem(InputBox->inputText);
M module-apps/application-desktop/windows/MmiPullWindow.hpp => module-apps/application-desktop/windows/MmiPullWindow.hpp +0 -1
@@ 26,7 26,6 @@ namespace gui
void onBeforeShow(ShowMode mode, SwitchData *data) override;
bool onInput(const InputEvent &inputEvent) override;
void destroyInterface() override;
- std::string removePhrase(std::string str, std::string phrase);
};
}; // namespace gui
A module-apps/application-desktop/windows/MmiPushWindow.cpp => module-apps/application-desktop/windows/MmiPushWindow.cpp +82 -0
@@ 0,0 1,82 @@
+// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "MmiPushWindow.hpp"
+#include <service-appmgr/model/ApplicationManager.hpp>
+#include <service-appmgr/data/MmiActionsParams.hpp>
+#include <application-desktop/data/Mmi.hpp>
+#include <i18n/i18n.hpp>
+
+using namespace gui;
+
+// move to style
+namespace style::desktop
+{
+ namespace image
+ {
+ constexpr uint32_t x = 176;
+ constexpr uint32_t y = 135;
+ } // namespace image
+ namespace text
+ {
+ constexpr uint32_t x = 40;
+ constexpr uint32_t y = 260;
+ constexpr uint32_t w = 400;
+ constexpr uint32_t h = 135;
+ } // namespace text
+
+} // namespace style::desktop
+
+MmiPushWindow::MmiPushWindow(app::Application *app, const std::string &name) : gui::AppWindow(app, name)
+{
+ AppWindow::buildInterface();
+
+ topBar->setActive(TopBar::Elements::TIME, true);
+ topBar->setActive(TopBar::Elements::SIM, false);
+ bottomBar->setText(BottomBar::Side::CENTER, utils::localize.get(style::strings::common::ok));
+ icon = new Image(this, style::desktop::image::x, style::desktop::image::y, "");
+ icon->set("info_big_circle_W_G");
+ text = new Text(
+ this, style::desktop::text::x, style::desktop::text::y, style::desktop::text::w, style::desktop::text::h);
+ text->setTextType(TextType::MULTI_LINE);
+ text->setEditMode(EditMode::BROWSE);
+ text->setEdges(RectangleEdge::None);
+ text->setFont(style::window::font::medium);
+ text->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
+ setTitle(utils::localize.get("app_desktop_info"));
+}
+
+void MmiPushWindow::onBeforeShow(ShowMode mode, SwitchData *data)
+{
+ if (auto metadata = dynamic_cast<app::manager::actions::MMIParams *>(data); metadata != nullptr) {
+ text->setText(mmi::removePhrase(metadata->getData(), "\r"));
+ }
+}
+
+bool MmiPushWindow::onInput(const InputEvent &inputEvent)
+{
+ if (inputEvent.isShortPress()) {
+ switch (inputEvent.keyCode) {
+ case KeyCode::KEY_ENTER: {
+ application->returnToPreviousWindow();
+ return true;
+ }
+ case KeyCode::KEY_RF: {
+ return true;
+ }
+ default:
+ break;
+ }
+ }
+ return AppWindow::onInput(inputEvent);
+}
+
+void MmiPushWindow::destroyInterface()
+{
+ erase();
+}
+
+MmiPushWindow::~MmiPushWindow()
+{
+ destroyInterface();
+}
A module-apps/application-desktop/windows/MmiPushWindow.hpp => module-apps/application-desktop/windows/MmiPushWindow.hpp +27 -0
@@ 0,0 1,27 @@
+// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include <AppWindow.hpp>
+#include <Text.hpp>
+#include <functional>
+#include <DialogMetadata.hpp>
+
+namespace gui
+{
+ class MmiPushWindow : public AppWindow
+ {
+ protected:
+ Text *text = nullptr;
+ Image *icon = nullptr;
+
+ public:
+ MmiPushWindow(app::Application *app, const std::string &name);
+ ~MmiPushWindow() override;
+ void onBeforeShow(ShowMode mode, SwitchData *data) override;
+ bool onInput(const InputEvent &inputEvent) override;
+ void destroyInterface() override;
+ };
+
+}; // namespace gui
M module-apps/application-desktop/windows/Names.hpp => module-apps/application-desktop/windows/Names.hpp +1 -0
@@ 14,4 14,5 @@ namespace app::window::name
inline constexpr auto desktop_locked = "LockedInfoWindow";
inline constexpr auto desktop_update = "Update";
inline constexpr auto desktop_mmi_pull = "MmiPullWindow";
+ inline constexpr auto desktop_mmi_push = "MmiPushWindow";
}; // namespace app::window::name