diff --git a/CHANGELOG.md b/CHANGELOG.md
index 701386a8d..fa04a0ff6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## 5.0.10 - undefined
### Fixed
-- Blank notification when declining incoming call.
+- Remove blank notification when declining incoming call.
+- Remove blank page when opening calls window and add a waiting step while connecting to call.
+- Camera activation issue based on call status.
## 5.0.9 - 2023-01-31
diff --git a/linphone-app/assets/languages/da.ts b/linphone-app/assets/languages/da.ts
index 2653ee8a1..7e04c9639 100644
--- a/linphone-app/assets/languages/da.ts
+++ b/linphone-app/assets/languages/da.ts
@@ -1499,6 +1499,11 @@ Server url ikke konfigureret.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/de.ts b/linphone-app/assets/languages/de.ts
index 5d570dc60..9223919d9 100644
--- a/linphone-app/assets/languages/de.ts
+++ b/linphone-app/assets/languages/de.ts
@@ -1499,6 +1499,11 @@ Server URL ist nicht konfiguriert.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/en.ts b/linphone-app/assets/languages/en.ts
index 76c9ff20c..8af08363b 100644
--- a/linphone-app/assets/languages/en.ts
+++ b/linphone-app/assets/languages/en.ts
@@ -1499,6 +1499,11 @@ Server URL not configured.
''You are alone in this conference' : Text in message banner when the user is the only participant.You are alone in this meeting
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+ The call is not ready. Please Wait…
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/es.ts b/linphone-app/assets/languages/es.ts
index 1fcb2751d..621113025 100644
--- a/linphone-app/assets/languages/es.ts
+++ b/linphone-app/assets/languages/es.ts
@@ -1499,6 +1499,11 @@ URL del servidor no configurada.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/fr_FR.ts b/linphone-app/assets/languages/fr_FR.ts
index 12304cc39..df47c4a56 100644
--- a/linphone-app/assets/languages/fr_FR.ts
+++ b/linphone-app/assets/languages/fr_FR.ts
@@ -1499,6 +1499,11 @@ URL du serveur non configurée.
''You are alone in this conference' : Text in message banner when the user is the only participant.Vous êtes actuellement seul dans cette réunion
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/hu.ts b/linphone-app/assets/languages/hu.ts
index 12c25972e..ac77084df 100644
--- a/linphone-app/assets/languages/hu.ts
+++ b/linphone-app/assets/languages/hu.ts
@@ -1489,6 +1489,11 @@ A kiszolgáló URL-je nincs konfigurálva.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/it.ts b/linphone-app/assets/languages/it.ts
index 3a3112d40..6f5ddef3b 100644
--- a/linphone-app/assets/languages/it.ts
+++ b/linphone-app/assets/languages/it.ts
@@ -1499,6 +1499,11 @@ URL del server non configurato.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/ja.ts b/linphone-app/assets/languages/ja.ts
index 6ec2b9fdb..1a1fa4755 100644
--- a/linphone-app/assets/languages/ja.ts
+++ b/linphone-app/assets/languages/ja.ts
@@ -1489,6 +1489,11 @@
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/lt.ts b/linphone-app/assets/languages/lt.ts
index 5c3393c05..b13939615 100644
--- a/linphone-app/assets/languages/lt.ts
+++ b/linphone-app/assets/languages/lt.ts
@@ -1509,6 +1509,11 @@ Nesukonfigūruotas serverio url.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/pt_BR.ts b/linphone-app/assets/languages/pt_BR.ts
index df35aacb9..cbcf9f645 100644
--- a/linphone-app/assets/languages/pt_BR.ts
+++ b/linphone-app/assets/languages/pt_BR.ts
@@ -1499,6 +1499,11 @@ URL do servidor não configurado.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/ru.ts b/linphone-app/assets/languages/ru.ts
index 5c8b54612..d50896e16 100644
--- a/linphone-app/assets/languages/ru.ts
+++ b/linphone-app/assets/languages/ru.ts
@@ -1509,6 +1509,11 @@
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/sv.ts b/linphone-app/assets/languages/sv.ts
index a82309876..c08cfaa65 100644
--- a/linphone-app/assets/languages/sv.ts
+++ b/linphone-app/assets/languages/sv.ts
@@ -1499,6 +1499,11 @@ Serverwebbadressen är inte konfigurerad.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/tr.ts b/linphone-app/assets/languages/tr.ts
index 2e59bf7cd..a7c2d008c 100644
--- a/linphone-app/assets/languages/tr.ts
+++ b/linphone-app/assets/languages/tr.ts
@@ -1489,6 +1489,11 @@ Sunucu url'si yapılandırılmadı.
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/uk.ts b/linphone-app/assets/languages/uk.ts
index e59644f4f..3a93d6823 100644
--- a/linphone-app/assets/languages/uk.ts
+++ b/linphone-app/assets/languages/uk.ts
@@ -1509,6 +1509,11 @@
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/assets/languages/zh_CN.ts b/linphone-app/assets/languages/zh_CN.ts
index e74252866..838ba8d1a 100644
--- a/linphone-app/assets/languages/zh_CN.ts
+++ b/linphone-app/assets/languages/zh_CN.ts
@@ -1489,6 +1489,11 @@
''You are alone in this conference' : Text in message banner when the user is the only participant.
+
+ incallWaitConnectedMessage
+ 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+
+ IncallFullscreen
diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp
index f000c5453..784df5f96 100644
--- a/linphone-app/src/components/call/CallModel.cpp
+++ b/linphone-app/src/components/call/CallModel.cpp
@@ -134,7 +134,6 @@ CallModel::~CallModel () {
}
void CallModel::removeCall(){
- emit statusChanged(getStatus());
if(mCall){
mCall->removeListener(mCallListener);
mConferenceModel = nullptr;// Ordering deletion.
@@ -623,27 +622,32 @@ void CallModel::stopAutoAnswerTimer () const {
// -----------------------------------------------------------------------------
CallModel::CallStatus CallModel::getStatus () const {
+ CallModel::CallStatus status;
if(mCall){
switch (mCall->getState()) {
case linphone::Call::State::Connected:
case linphone::Call::State::StreamsRunning:
- return CallStatusConnected;
+ status = CallStatusConnected;
+ break;
case linphone::Call::State::End:
case linphone::Call::State::Error:
case linphone::Call::State::Referred:
case linphone::Call::State::Released:
- return CallStatusEnded;
+ status = CallStatusEnded;
+ break;
case linphone::Call::State::Paused:
case linphone::Call::State::PausedByRemote:
case linphone::Call::State::Pausing:
case linphone::Call::State::Resuming:
- return CallStatusPaused;
+ status = CallStatusPaused;
+ break;
case linphone::Call::State::Updating:
case linphone::Call::State::UpdatedByRemote:
- return mPausedByRemote ? CallStatusPaused : CallStatusConnected;
+ status = mPausedByRemote ? CallStatusPaused : CallStatusConnected;
+ break;
case linphone::Call::State::EarlyUpdatedByRemote:
case linphone::Call::State::EarlyUpdating:
@@ -654,12 +658,13 @@ CallModel::CallStatus CallModel::getStatus () const {
case linphone::Call::State::OutgoingInit:
case linphone::Call::State::OutgoingProgress:
case linphone::Call::State::OutgoingRinging:
- break;
+ default:{
+ status = mCall->getDir() == linphone::Call::Dir::Incoming ? CallStatusIncoming : CallStatusOutgoing;
+ }
}
-
- return mCall->getDir() == linphone::Call::Dir::Incoming ? CallStatusIncoming : CallStatusOutgoing;
}else
- return CallStatusIdle;
+ status = CallStatusIdle;
+ return status;
}
// -----------------------------------------------------------------------------
diff --git a/linphone-app/src/components/calls/CallsListModel.cpp b/linphone-app/src/components/calls/CallsListModel.cpp
index 3157b87c4..1d9a9e1c8 100644
--- a/linphone-app/src/components/calls/CallsListModel.cpp
+++ b/linphone-app/src/components/calls/CallsListModel.cpp
@@ -524,6 +524,7 @@ static void joinConference (const shared_ptr &call) {
addModel->update();
}
+// Global handler on core (is call before call model receive it). Used for model creation.
void CallsListModel::handleCallStateChanged (const shared_ptr &call, linphone::Call::State state) {
switch (state) {
case linphone::Call::State::IncomingReceived:
@@ -534,30 +535,39 @@ void CallsListModel::handleCallStateChanged (const shared_ptr &c
case linphone::Call::State::OutgoingInit:
addCall(call);
break;
-
- case linphone::Call::State::End:
- case linphone::Call::State::Error:{
- if(call->dataExists("call-model")) {
- CallModel * model = &call->getData("call-model");
- model->endCall();
- if(model->getCallError() == "")
- removeCall(call);
- }
- } break;
- case linphone::Call::State::Released:
- removeCall(call);
- break;
-
- case linphone::Call::State::StreamsRunning: {
- int index = findCallIndex(mList, call);
- emit callRunning(index, &call->getData("call-model"));
- } break;
-
default:
break;
}
}
+// Call handler
+void CallsListModel::handleCallStatusChanged () {
+ auto callModel = qobject_cast(sender());
+ auto call = callModel->getCall();
+ if( call){
+ auto state = call->getState();
+ switch (state) {
+ case linphone::Call::State::End:
+ case linphone::Call::State::Error:{
+ callModel->endCall();
+ if(callModel->getCallError() == "")
+ removeCall(call);
+ } break;
+ case linphone::Call::State::Released:
+ removeCall(call);
+ break;
+
+ case linphone::Call::State::StreamsRunning: {
+ int index = findCallIndex(mList, call);
+ emit callRunning(index, callModel);
+ } break;
+
+ default:
+ break;
+ }
+ }
+}
+
// -----------------------------------------------------------------------------
void CallsListModel::addCall (const shared_ptr &call) {
@@ -568,6 +578,7 @@ void CallsListModel::addCall (const shared_ptr &call) {
App::getInstance()->getEngine()->setObjectOwnership(callModel.get(), QQmlEngine::CppOwnership);
connect(callModel.get(), &CallModel::meAdminChanged, this, &CallsListModel::canMergeCallsChanged);
+ connect(callModel.get(), &CallModel::statusChanged, this, &CallsListModel::handleCallStatusChanged);
add(callModel);
emit layoutChanged();
@@ -602,6 +613,7 @@ void CallsListModel::addDummyCall () {
emit dataChanged(index(id, 0), index(id, 0));
});
connect(callModel.get(), &CallModel::meAdminChanged, this, &CallsListModel::canMergeCallsChanged);
+ connect(callModel.get(), &CallModel::statusChanged, this, &CallsListModel::handleCallStatusChanged);
add(callModel);
emit layoutChanged();
@@ -618,7 +630,6 @@ void CallsListModel::removeCall (const shared_ptr &call) {
removeCallCb(callModel);
});
}else{
- callModel->removeCall();
remove(callModel);
}
}
diff --git a/linphone-app/src/components/calls/CallsListModel.hpp b/linphone-app/src/components/calls/CallsListModel.hpp
index 1c774c039..cca14239b 100644
--- a/linphone-app/src/components/calls/CallsListModel.hpp
+++ b/linphone-app/src/components/calls/CallsListModel.hpp
@@ -70,6 +70,8 @@ public:
Q_INVOKABLE void terminateCall (const QString& sipAddress) const;
static std::list> getCallHistory(const QString& peerAddress, const QString& localAddress);
+
+ void handleCallStatusChanged ();
signals:
void callRunning (int index, CallModel *callModel);
diff --git a/linphone-app/src/components/notifier/Notifier.cpp b/linphone-app/src/components/notifier/Notifier.cpp
index 0e2f1d95e..75a707824 100644
--- a/linphone-app/src/components/notifier/Notifier.cpp
+++ b/linphone-app/src/components/notifier/Notifier.cpp
@@ -328,6 +328,9 @@ void Notifier::notifyReceivedCall (const shared_ptr &call) {
if (status == CallModel::CallStatusEnded || status == CallModel::CallStatusConnected)
deleteNotification(QVariant::fromValue(notification));
});
+ QObject::connect(callModel, &CallModel::destroyed, notification, [this, notification]() {
+ deleteNotification(QVariant::fromValue(notification));
+ });
}
diff --git a/linphone-app/ui/modules/Linphone/Menus/IncallMenu.qml b/linphone-app/ui/modules/Linphone/Menus/IncallMenu.qml
index 2e1058e15..0a538292f 100644
--- a/linphone-app/ui/modules/Linphone/Menus/IncallMenu.qml
+++ b/linphone-app/ui/modules/Linphone/Menus/IncallMenu.qml
@@ -53,7 +53,7 @@ Rectangle{
property bool _activateCamera: false
Connections{// Enable camera only when status is ok
target: mainItem.callModel
- onStatusChanged: if( mainItem._activateCamera && (status == LinphoneEnums.CallStatusConnected || status == LinphoneEnums.CallStatusIdle)){
+ onStatusChanged: if( mainItem._activateCamera && (status == CallModel.CallStatusConnected || status == CallModel.CallStatusIdle)){
camera._activateCamera = false
callModel.cameraEnabled = true
}
diff --git a/linphone-app/ui/views/App/Calls/CallsWindow.js b/linphone-app/ui/views/App/Calls/CallsWindow.js
index f92f96e68..ef92493c2 100644
--- a/linphone-app/ui/views/App/Calls/CallsWindow.js
+++ b/linphone-app/ui/views/App/Calls/CallsWindow.js
@@ -82,7 +82,7 @@ function getContent (call, conferenceInfoModel) {
}
var CallModel = Linphone.CallModel
if (status === CallModel.CallStatusIncoming) {
- return null;
+ return incall;
}
if( window.conferenceInfoModel != call.conferenceInfoModel) {
Qt.callLater(function(){window.conferenceInfoModel = call.conferenceInfoModel})
diff --git a/linphone-app/ui/views/App/Calls/CallsWindow.qml b/linphone-app/ui/views/App/Calls/CallsWindow.qml
index d66112701..bb4176ba3 100644
--- a/linphone-app/ui/views/App/Calls/CallsWindow.qml
+++ b/linphone-app/ui/views/App/Calls/CallsWindow.qml
@@ -282,7 +282,6 @@ Window {
window.close()
lastComponent = sourceComponent
}
-
}// Force update when loading a new Content. It's just to be sure
active: window.call || window.conferenceInfoModel
}
diff --git a/linphone-app/ui/views/App/Calls/Incall.qml b/linphone-app/ui/views/App/Calls/Incall.qml
index 487ff99b3..9f06e7e22 100644
--- a/linphone-app/ui/views/App/Calls/Incall.qml
+++ b/linphone-app/ui/views/App/Calls/Incall.qml
@@ -42,7 +42,7 @@ Rectangle {
// States
property bool isAudioOnly: callModel && callModel.conferenceVideoLayout == LinphoneEnums.ConferenceLayoutAudioOnly
- property bool isReady : mainItem.callModel
+ property bool isReady : mainItem.callModel && mainItem.callModel.status != CallModel.CallStatusIdle
&& (!mainItem.callModel.isConference
|| (mainItem.conferenceModel && mainItem.conferenceModel.isReady)
)
@@ -399,8 +399,11 @@ Rectangle {
text: false //mainItem.needMoreParticipants
//: 'Waiting for another participant...' : Waiting message for more participant.
? qsTr('incallWaitParticipantMessage')
+ : mainItem.callModel && mainItem.callModel.isConference
//: 'The meeting is not ready. Please Wait...' : Waiting message for starting a meeting.
- : qsTr('incallWaitMessage')
+ ? qsTr('incallWaitMessage')
+ //: 'The call is not ready. Please Wait...' : Waiting message for starting a call.
+ : qsTr('incallWaitConnectedMessage')
color: IncallStyle.buzyColor.color
}
}
@@ -552,7 +555,7 @@ Rectangle {
}
Connections{// Enable camera only when status is ok
target: callModel
- onStatusChanged: if( camera._activateCamera && (status == LinphoneEnums.CallStatusConnected || status == LinphoneEnums.CallStatusIdle)){
+ onStatusChanged: if( camera._activateCamera && (status == CallModel.CallStatusConnected || status == CallModel.CallStatusIdle)){
camera._activateCamera = false
callModel.cameraEnabled = true
}