M module-apps/application-messages/ApplicationMessages.cpp => module-apps/application-messages/ApplicationMessages.cpp +11 -10
@@ 1,4 1,4 @@
-// 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
#include "ApplicationMessages.hpp"
@@ 31,6 31,8 @@
#include <module-db/queries/messages/threads/QueryThreadRemove.hpp>
#include <module-db/queries/phonebook/QueryContactGetByID.hpp>
+#include <service-cellular/CellularMessage.hpp>
+
#include <cassert>
#include <time/time_conversion.hpp>
#include <messages/OptionsWindow.hpp>
@@ 49,6 51,14 @@ namespace app
switchWindow(gui::name::window::sms_templates, std::move(data));
return msgHandled();
});
+ addActionReceiver(manager::actions::SmsRejectNoSim, [this](auto &&data) {
+ auto action = [this]() {
+ returnToPreviousWindow();
+ return true;
+ };
+ showNotification(action);
+ return msgHandled();
+ });
}
// Invoked upon receiving data message
@@ 59,7 69,6 @@ namespace app
if (reinterpret_cast<sys::ResponseMessage *>(retMsg.get())->retCode == sys::ReturnCodes::Success) {
return retMsg;
}
-
if (msgl->messageType == MessageType::DBServiceNotification) {
auto msg = dynamic_cast<db::NotificationMessage *>(msgl);
if (msg != nullptr) {
@@ 369,14 378,6 @@ namespace app
return false;
}
- if (!Store::GSM::get()->simCardInserted()) {
- auto action = [=]() -> bool {
- returnToPreviousWindow();
- return true;
- };
- return showNotification(action);
- }
-
return true;
}
M module-apps/application-messages/ApplicationMessages.hpp => module-apps/application-messages/ApplicationMessages.hpp +5 -2
@@ 1,4 1,4 @@
-// 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
@@ 81,7 81,10 @@ namespace app
{
static auto GetManifest() -> manager::ApplicationManifest
{
- return {{manager::actions::Launch, manager::actions::CreateSms, manager::actions::ShowSmsTemplates}};
+ return {{manager::actions::Launch,
+ manager::actions::CreateSms,
+ manager::actions::ShowSmsTemplates,
+ manager::actions::SmsRejectNoSim}};
}
};
} /* namespace app */
M module-apps/application-messages/windows/NewMessage.cpp => module-apps/application-messages/windows/NewMessage.cpp +0 -10
@@ 126,16 126,6 @@ namespace gui
LOG_ERROR("Failed to send the SMS.");
return false;
}
- if (!Store::GSM::get()->simCardInserted()) {
- auto action = [this, number]() {
- if (!switchToThreadWindow(number.getView())) {
- LOG_ERROR("switchToThreadWindow failed");
- }
- return true;
- };
- app->showNotification(action, true);
- return true;
- }
return switchToThreadWindow(number.getView());
}
M module-services/service-appmgr/model/ApplicationManager.cpp => module-services/service-appmgr/model/ApplicationManager.cpp +1 -0
@@ 299,6 299,7 @@ namespace app::manager
connect(typeid(CellularNotAnEmergencyNotification), convertibleToActionHandler);
connect(typeid(sys::CriticalBatteryLevelNotification), convertibleToActionHandler);
connect(typeid(sys::SystemBrownoutMesssage), convertibleToActionHandler);
+ connect(typeid(CellularSmsNoSimRequestMessage), convertibleToActionHandler);
}
sys::ReturnCodes ApplicationManager::SwitchPowerModeHandler(const sys::ServicePowerMode mode)
M module-services/service-appmgr/service-appmgr/Actions.hpp => module-services/service-appmgr/service-appmgr/Actions.hpp +1 -0
@@ 50,6 50,7 @@ namespace app::manager
ShowMMIResult,
ShowMMIResponse,
ShowMMIPush,
+ SmsRejectNoSim,
DisplayCMEError,
DisplayLowBatteryNotification,
SystemBrownout,
M module-services/service-cellular/ServiceCellular.cpp => module-services/service-cellular/ServiceCellular.cpp +14 -0
@@ 730,6 730,20 @@ auto ServiceCellular::handle(db::query::SMSSearchByTypeResult *response) -> bool
{
if (response->getResults().size() > 0) {
LOG_DEBUG("sending %ud last queued message(s)", static_cast<unsigned int>(response->getResults().size()));
+ if (Store::GSM::get()->simCardInserted() == false) {
+ auto message = std::make_shared<CellularSmsNoSimRequestMessage>();
+ bus.sendUnicast(std::move(message), app::manager::ApplicationManager::ServiceName);
+ auto records = response->getResults();
+
+ for (auto &record : response->getResults()) {
+ if (record.type == SMSType::QUEUED) {
+ record.type = SMSType::FAILED;
+ DBServiceAPI::GetQuery(
+ this, db::Interface::Name::SMS, std::make_unique<db::query::SMSUpdate>(std::move(record)));
+ }
+ }
+ return true;
+ }
for (auto &rec : response->getResults()) {
if (rec.type == SMSType::QUEUED) {
sendSMS(rec);
M module-services/service-cellular/service-cellular/CellularMessage.hpp => module-services/service-cellular/service-cellular/CellularMessage.hpp +14 -1
@@ 27,7 27,7 @@
class CellularMessage : public sys::DataMessage
{
public:
- CellularMessage(MessageType messageType) : sys::DataMessage(messageType){};
+ explicit CellularMessage(MessageType messageType) : sys::DataMessage(messageType){};
};
class CellularCallMessage : public CellularMessage
@@ 300,6 300,19 @@ class CellularCallRequestMessage : public CellularMessage
RequestMode requestMode = RequestMode::Normal;
};
+class CellularSmsNoSimRequestMessage : public CellularMessage, public app::manager::actions::ConvertibleToAction
+{
+ public:
+ CellularSmsNoSimRequestMessage() : CellularMessage{MessageType::MessageTypeUninitialized}
+ {}
+
+ [[nodiscard]] auto toAction() const -> std::unique_ptr<app::manager::ActionRequest>
+ {
+ return std::make_unique<app::manager::ActionRequest>(
+ sender, app::manager::actions::SmsRejectNoSim, std::make_unique<app::manager::actions::ActionParams>());
+ }
+};
+
class CellularSimMessage : public CellularMessage
{
public: