M module-apps/apps-common/notifications/NotificationsHandler.cpp => module-apps/apps-common/notifications/NotificationsHandler.cpp +1 -1
@@ 61,7 61,7 @@ void NotificationsHandler::callerIdHandler(sys::Message *request)
playbackCallRingtone();
}
else {
- CellularServiceAPI::DismissCall(parentService);
+ CellularServiceAPI::DismissCall(parentService, currentCallPolicy.isDismissedCallNotificationAllowed());
}
}
M module-apps/apps-common/notifications/policies/CallNotificationPolicy.cpp => module-apps/apps-common/notifications/policies/CallNotificationPolicy.cpp +8 -0
@@ 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;
M module-apps/apps-common/notifications/policies/CallNotificationPolicy.hpp => module-apps/apps-common/notifications/policies/CallNotificationPolicy.hpp +2 -0
@@ 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
M module-apps/tests/test-PhoneModesPolicies.cpp => module-apps/tests/test-PhoneModesPolicies.cpp +12 -0
@@ 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());
+}
M module-services/service-cellular/CellularServiceAPI.cpp => module-services/service-cellular/CellularServiceAPI.cpp +2 -2
@@ 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<CellularDismissCallMessage>();
+ auto msg = std::make_shared<CellularDismissCallMessage>(addNotificationToDB);
return serv->bus.sendUnicast(msg, ServiceCellular::serviceName);
}
M module-services/service-cellular/ServiceCellular.cpp => module-services/service-cellular/ServiceCellular.cpp +4 -1
@@ 1934,8 1934,11 @@ void ServiceCellular::handleCellularHangupCallMessage(CellularHangupCallMessage
void ServiceCellular::handleCellularDismissCallMessage(sys::Message *msg)
{
+ auto message = static_cast<CellularDismissCallMessage *>(msg);
hangUpCall();
- handleCallAbortedNotification(msg);
+ if (message->addNotificationRequired()) {
+ handleCallAbortedNotification(msg);
+ }
}
auto ServiceCellular::handleDBQueryResponseMessage(db::QueryResponse *msg) -> std::shared_ptr<sys::ResponseMessage>
M module-services/service-cellular/service-cellular/CellularMessage.hpp => module-services/service-cellular/service-cellular/CellularMessage.hpp +10 -1
@@ 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
M module-services/service-cellular/service-cellular/CellularServiceAPI.hpp => module-services/service-cellular/service-cellular/CellularServiceAPI.hpp +1 -1
@@ 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.