diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10e23800d..8efb9a1c5 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-30
diff --git a/linphone-app/assets/languages/da.ts b/linphone-app/assets/languages/da.ts
index b97fc3918..647b83f5f 100644
--- a/linphone-app/assets/languages/da.ts
+++ b/linphone-app/assets/languages/da.ts
@@ -1483,6 +1483,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 a227f29d9..bcd2f58df 100644
--- a/linphone-app/assets/languages/de.ts
+++ b/linphone-app/assets/languages/de.ts
@@ -1483,6 +1483,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 2b6e9ea7c..f80f92236 100644
--- a/linphone-app/assets/languages/en.ts
+++ b/linphone-app/assets/languages/en.ts
@@ -1483,6 +1483,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 fea36ac50..b69b6a0bf 100644
--- a/linphone-app/assets/languages/es.ts
+++ b/linphone-app/assets/languages/es.ts
@@ -1483,6 +1483,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 c800c0525..4976aa8b2 100644
--- a/linphone-app/assets/languages/fr_FR.ts
+++ b/linphone-app/assets/languages/fr_FR.ts
@@ -1483,6 +1483,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 32e6d1c33..d600fffad 100644
--- a/linphone-app/assets/languages/hu.ts
+++ b/linphone-app/assets/languages/hu.ts
@@ -1473,6 +1473,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 5522db170..1239175f1 100644
--- a/linphone-app/assets/languages/it.ts
+++ b/linphone-app/assets/languages/it.ts
@@ -1483,6 +1483,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 952b857d5..72a77af55 100644
--- a/linphone-app/assets/languages/ja.ts
+++ b/linphone-app/assets/languages/ja.ts
@@ -1473,6 +1473,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 ade294354..71bbadfe6 100644
--- a/linphone-app/assets/languages/lt.ts
+++ b/linphone-app/assets/languages/lt.ts
@@ -1493,6 +1493,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 59c7cc682..e8f47c712 100644
--- a/linphone-app/assets/languages/pt_BR.ts
+++ b/linphone-app/assets/languages/pt_BR.ts
@@ -1483,6 +1483,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 c5a1fc4f9..34b03c92e 100644
--- a/linphone-app/assets/languages/ru.ts
+++ b/linphone-app/assets/languages/ru.ts
@@ -1493,6 +1493,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 29946ef18..f551c6364 100644
--- a/linphone-app/assets/languages/sv.ts
+++ b/linphone-app/assets/languages/sv.ts
@@ -1483,6 +1483,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 ca4a4fbea..34b853025 100644
--- a/linphone-app/assets/languages/tr.ts
+++ b/linphone-app/assets/languages/tr.ts
@@ -1473,6 +1473,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 bd25ac939..f563393ce 100644
--- a/linphone-app/assets/languages/uk.ts
+++ b/linphone-app/assets/languages/uk.ts
@@ -1493,6 +1493,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 ca3b009d1..1db885050 100644
--- a/linphone-app/assets/languages/zh_CN.ts
+++ b/linphone-app/assets/languages/zh_CN.ts
@@ -1473,6 +1473,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 8fcf48c4a..86433bf2c 100644
--- a/linphone-app/src/components/notifier/Notifier.cpp
+++ b/linphone-app/src/components/notifier/Notifier.cpp
@@ -331,6 +331,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 48f8fa7b4..0b5ae2457 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 f8b8934bc..236dfc8ca 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 987502f66..762b69900 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
}
}
@@ -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
}