From fc3e4f73d7db965210b7343f4e66cee59332e2c0 Mon Sep 17 00:00:00 2001 From: Wojtek Rzepecki Date: Thu, 1 Jul 2021 12:16:25 +0200 Subject: [PATCH] [EGD-6956] Add offline calls notifications Changed calls notifications for offline mode --- .../notifications/NotificationsHandler.cpp | 2 +- .../policies/CallNotificationPolicy.cpp | 8 ++++++++ .../policies/CallNotificationPolicy.hpp | 2 ++ module-apps/tests/test-PhoneModesPolicies.cpp | 12 ++++++++++++ .../service-cellular/CellularServiceAPI.cpp | 4 ++-- module-services/service-cellular/ServiceCellular.cpp | 5 ++++- .../service-cellular/CellularMessage.hpp | 11 ++++++++++- .../service-cellular/CellularServiceAPI.hpp | 2 +- 8 files changed, 40 insertions(+), 6 deletions(-) diff --git a/module-apps/apps-common/notifications/NotificationsHandler.cpp b/module-apps/apps-common/notifications/NotificationsHandler.cpp index 7c70a0c748527fab65dc307b0eafc74d6b212f6e..b02ea1df3a89101ff87683991dbbe3c394798b66 100644 --- a/module-apps/apps-common/notifications/NotificationsHandler.cpp +++ b/module-apps/apps-common/notifications/NotificationsHandler.cpp @@ -61,7 +61,7 @@ void NotificationsHandler::callerIdHandler(sys::Message *request) playbackCallRingtone(); } else { - CellularServiceAPI::DismissCall(parentService); + CellularServiceAPI::DismissCall(parentService, currentCallPolicy.isDismissedCallNotificationAllowed()); } } diff --git a/module-apps/apps-common/notifications/policies/CallNotificationPolicy.cpp b/module-apps/apps-common/notifications/policies/CallNotificationPolicy.cpp index 7c78fa4c0176c265e0cd5d273a9a71bc8fa7c5ba..905993df651461cf4087cc959049d3c5753667e9 100644 --- a/module-apps/apps-common/notifications/policies/CallNotificationPolicy.cpp +++ b/module-apps/apps-common/notifications/policies/CallNotificationPolicy.cpp @@ -10,6 +10,7 @@ void CallNotificationPolicy::updateCurrentCall(sys::phone_modes::PhoneMode phone popupOn = false; ringtoneOn = false; numberCheckNeeded = false; + dismissedCallNotification = false; switch (phoneMode) { case sys::phone_modes::PhoneMode::Connected: @@ -17,9 +18,11 @@ void CallNotificationPolicy::updateCurrentCall(sys::phone_modes::PhoneMode phone ringtoneOn = true; break; case sys::phone_modes::PhoneMode::DoNotDisturb: + dismissedCallNotification = true; numberCheckNeeded = true; break; case sys::phone_modes::PhoneMode::Offline: + dismissedCallNotification = false; break; } } @@ -34,6 +37,11 @@ bool CallNotificationPolicy::isRingtoneAllowed() const noexcept return ringtoneOn; } +bool CallNotificationPolicy::isDismissedCallNotificationAllowed() const noexcept +{ + return dismissedCallNotification; +} + bool CallNotificationPolicy::isNumberCheckRequired() const noexcept { return numberCheckNeeded; diff --git a/module-apps/apps-common/notifications/policies/CallNotificationPolicy.hpp b/module-apps/apps-common/notifications/policies/CallNotificationPolicy.hpp index 9f1c1c8f203dbab07ec66c2eda8d44fafb21ef62..694993f290297b6d075ddb115666dbcebc7ebfbf 100644 --- a/module-apps/apps-common/notifications/policies/CallNotificationPolicy.hpp +++ b/module-apps/apps-common/notifications/policies/CallNotificationPolicy.hpp @@ -14,12 +14,14 @@ namespace notifications void updateCurrentCall(sys::phone_modes::PhoneMode phoneMode); bool isPopupAllowed() const noexcept; bool isRingtoneAllowed() const noexcept; + bool isDismissedCallNotificationAllowed() const noexcept; bool isNumberCheckRequired() const noexcept; void numberCheck(bool callsFromFavouritesSetting, bool isNumberInFavourites); private: bool popupOn; bool ringtoneOn; + bool dismissedCallNotification; bool numberCheckNeeded; }; } // namespace notifications diff --git a/module-apps/tests/test-PhoneModesPolicies.cpp b/module-apps/tests/test-PhoneModesPolicies.cpp index 3904e7d3ecf0cb08660486b79429ca61adb10368..1b112b43cf48cf547e197876cdc1e0af384bac1c 100644 --- a/module-apps/tests/test-PhoneModesPolicies.cpp +++ b/module-apps/tests/test-PhoneModesPolicies.cpp @@ -64,6 +64,7 @@ TEST_CASE("DoNotDisturb Mode notifications - calls policy test") REQUIRE(!callPolicy.isPopupAllowed()); REQUIRE(!callPolicy.isRingtoneAllowed()); REQUIRE(callPolicy.isNumberCheckRequired()); + REQUIRE(callPolicy.isDismissedCallNotificationAllowed()); SECTION("Number in/not in Favourites") { @@ -137,3 +138,14 @@ TEST_CASE("Offline Mode notifications - sms policy test") callPolicy.updateCurrentSMS(sys::phone_modes::PhoneMode::Offline); REQUIRE(callPolicy.isRingtoneAllowed()); } + +TEST_CASE("Offline Mode notifications - calls policy test") +{ + CallNotificationPolicy callPolicy; + + callPolicy.updateCurrentCall(sys::phone_modes::PhoneMode::Offline); + REQUIRE(!callPolicy.isPopupAllowed()); + REQUIRE(!callPolicy.isRingtoneAllowed()); + REQUIRE(!callPolicy.isNumberCheckRequired()); + REQUIRE(!callPolicy.isDismissedCallNotificationAllowed()); +} diff --git a/module-services/service-cellular/CellularServiceAPI.cpp b/module-services/service-cellular/CellularServiceAPI.cpp index ecb385210275eedb071700adbaa24fa6e175ebb8..90bc919207e45bc86d5724c40ea9dae3acf844b6 100644 --- a/module-services/service-cellular/CellularServiceAPI.cpp +++ b/module-services/service-cellular/CellularServiceAPI.cpp @@ -47,9 +47,9 @@ bool CellularServiceAPI::HangupCall(sys::Service *serv) return true; } -bool CellularServiceAPI::DismissCall(sys::Service *serv) +bool CellularServiceAPI::DismissCall(sys::Service *serv, bool addNotificationToDB) { - auto msg = std::make_shared(); + auto msg = std::make_shared(addNotificationToDB); return serv->bus.sendUnicast(msg, ServiceCellular::serviceName); } diff --git a/module-services/service-cellular/ServiceCellular.cpp b/module-services/service-cellular/ServiceCellular.cpp index 60a52e89b0a6569cddcca71ff2b9d47fae1c0bb7..aa8f868edff330be12aeca59341952087e5fb26c 100644 --- a/module-services/service-cellular/ServiceCellular.cpp +++ b/module-services/service-cellular/ServiceCellular.cpp @@ -1934,8 +1934,11 @@ void ServiceCellular::handleCellularHangupCallMessage(CellularHangupCallMessage void ServiceCellular::handleCellularDismissCallMessage(sys::Message *msg) { + auto message = static_cast(msg); hangUpCall(); - handleCallAbortedNotification(msg); + if (message->addNotificationRequired()) { + handleCallAbortedNotification(msg); + } } auto ServiceCellular::handleDBQueryResponseMessage(db::QueryResponse *msg) -> std::shared_ptr diff --git a/module-services/service-cellular/service-cellular/CellularMessage.hpp b/module-services/service-cellular/service-cellular/CellularMessage.hpp index b39339d3a68f21e68ebd672c768508624a6e2380..3e6c24066698a68d0f6a91b8a481d6f3d6cd30cd 100644 --- a/module-services/service-cellular/service-cellular/CellularMessage.hpp +++ b/module-services/service-cellular/service-cellular/CellularMessage.hpp @@ -589,8 +589,17 @@ class CellularHangupCallMessage : public CellularMessage, public app::manager::a class CellularDismissCallMessage : public CellularMessage { public: - CellularDismissCallMessage() : CellularMessage(Type::DismissCall) + CellularDismissCallMessage(bool addNotificationToDB) + : CellularMessage(Type::DismissCall), addNotificationToDB{addNotificationToDB} {} + + auto addNotificationRequired() const noexcept -> bool + { + return addNotificationToDB; + } + + private: + const bool addNotificationToDB; }; class CellularListCallsMessage : public CellularMessage diff --git a/module-services/service-cellular/service-cellular/CellularServiceAPI.hpp b/module-services/service-cellular/service-cellular/CellularServiceAPI.hpp index 8343ef8ea16b242e13d4b24dd19a04e0641b1ad4..d58bcd88c9b931281e4478333cab01defad0488d 100644 --- a/module-services/service-cellular/service-cellular/CellularServiceAPI.hpp +++ b/module-services/service-cellular/service-cellular/CellularServiceAPI.hpp @@ -27,7 +27,7 @@ namespace CellularServiceAPI bool AnswerIncomingCall(sys::Service *serv); bool HangupCall(sys::Service *serv); - bool DismissCall(sys::Service *serv); + bool DismissCall(sys::Service *serv, bool addNotificationToDB); /* * @brief Its calls sercive-cellular for selected SIM IMSI number. * @param serv pointer to caller service.