diff --git a/Linphone/core/conference/ConferenceInfoList.cpp b/Linphone/core/conference/ConferenceInfoList.cpp index 9042c22f0..d79b60033 100644 --- a/Linphone/core/conference/ConferenceInfoList.cpp +++ b/Linphone/core/conference/ConferenceInfoList.cpp @@ -94,6 +94,7 @@ void ConferenceInfoList::setSelf(QSharedPointer me) { connectItem(item); mList << item.template objectCast(); } + updateHaveCurrentDate(); endResetModel(); delete items; }); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 42a8eb485..320b9256d 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -894,42 +894,42 @@ CallLayout - + meeting_event_conference_destroyed "Vous avez quitté la conférence" Sie haben die Besprechung verlassen - + call_ended_by_user "Vous avez terminé l'appel" Sie haben den Anruf beendet - + call_ended_by_remote "Votre correspondant a terminé l'appel" Der Anrufer hat das Gespräch beendet - + conference_call_empty "En attente d'autres participants…" Warten auf weitere Teilnehmer… - + conference_share_link_title "Partager le lien" Link teilen - + copied Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert @@ -2284,23 +2284,41 @@ Error - - + + + information_popup_error_title - + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + information_popup_codec_install_error_text + "La création a échoué" + Der Codec konnte nicht installiert werden. + + + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden + + + chat_creation_in_progress + Creation de la conversation en cours … + + ChatSettingsLayout @@ -5041,13 +5059,13 @@ Pour les activer dans un projet commercial, merci de nous contacter. Bildschirm %1 - + stop "Stop Stopp - + share "Partager" Teilen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 222bc4219..34fbbf7f5 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -874,42 +874,42 @@ CallLayout - + meeting_event_conference_destroyed "Vous avez quitté la conférence" You have left the meeting - + call_ended_by_user "Vous avez terminé l'appel" You have ended the call - + call_ended_by_remote "Votre correspondant a terminé l'appel" Your caller has ended the call - + conference_call_empty "En attente d'autres participants…" Waiting for other participants… - + conference_share_link_title "Partager le lien" Share link - + copied Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier The meeting link has been copied to the clipboard @@ -2247,23 +2247,41 @@ Only your correspondent can decrypt them. Create - - + + + information_popup_error_title Error - + + information_popup_chat_creation_failed_message + "La création a échoué" + Creation failed + + + information_popup_codec_install_error_text + "La création a échoué" + The codec could not be installed. + + + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected + + + chat_creation_in_progress + Creation de la conversation en cours … + Chat creation pending… + ChatSettingsLayout @@ -4930,13 +4948,13 @@ To enable them in a commercial project, please contact us. Screen %1 - + stop "Stop Stop - + share "Partager" Share diff --git a/Linphone/data/languages/fr_FR.ts b/Linphone/data/languages/fr_FR.ts index 402527289..6719451da 100644 --- a/Linphone/data/languages/fr_FR.ts +++ b/Linphone/data/languages/fr_FR.ts @@ -874,42 +874,42 @@ CallLayout - + meeting_event_conference_destroyed "Vous avez quitté la conférence" Vous avez quitté la conférence - + call_ended_by_user "Vous avez terminé l'appel" Vous avez terminé l'appel - + call_ended_by_remote "Votre correspondant a terminé l'appel" Votre correspondant a terminé l'appel - + conference_call_empty "En attente d'autres participants…" En attente d'autres participants… - + conference_share_link_title "Partager le lien" Partager le lien - + copied Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier @@ -2247,23 +2247,36 @@ en bout. Seul votre correspondant peut les déchiffrer. Créer - - + + + information_popup_error_title Erreur - + + information_popup_chat_creation_failed_message + "La création a échoué" + La création a échoué + + + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté + + + chat_creation_in_progress + Creation de la conversation en cours … + Création de la conversation en cours… + ChatSettingsLayout @@ -4930,13 +4943,13 @@ Pour les activer dans un projet commercial, merci de nous contacter.Écran %1 - + stop "Stop Stop - + share "Partager" Partager diff --git a/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml b/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml index ee5a1638c..43f45b548 100644 --- a/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml +++ b/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml @@ -25,10 +25,10 @@ Item { property string activeSpeakerAddress property ParticipantDeviceProxy participantDevices : ParticipantDeviceProxy { - id: allDevices - qmlName: "AS" - onCountChanged: console.log("Device count changed : " +count) - Component.onCompleted: console.log("Loaded : " +allDevices) + id: allDevices + qmlName: "AS" + onCountChanged: console.log("Device count changed : " +count) + Component.onCompleted: console.log("Loaded : " +allDevices) } RowLayout{ diff --git a/Linphone/view/Control/Container/Call/CallLayout.qml b/Linphone/view/Control/Container/Call/CallLayout.qml index 259ae76f2..19c233e6a 100644 --- a/Linphone/view/Control/Container/Call/CallLayout.qml +++ b/Linphone/view/Control/Container/Call/CallLayout.qml @@ -19,6 +19,7 @@ Item { onCallStateChanged: if (callState === LinphoneEnums.CallState.End || callState === LinphoneEnums.CallState.Released) preview.visible = false property int conferenceLayout: call ? call.core.conferenceVideoLayout : LinphoneEnums.ConferenceLayout.ActiveSpeaker property int participantDeviceCount: conference ? conference.core.participantDeviceCount : -1 + property int lastConfLayoutBeforeSharing: -1 onParticipantDeviceCountChanged: { setConferenceLayout() } @@ -33,10 +34,21 @@ Item { function onIsScreenSharingEnabledChanged() { setConferenceLayout() } + function onIsLocalScreenSharingChanged() { + if (mainItem.conference.core.isLocalScreenSharing) { + mainItem.lastConfLayoutBeforeSharing = mainItem.conferenceLayout + } + setConferenceLayout() + } } function setConferenceLayout() { callLayout.sourceComponent = undefined // unload old view before opening the new view to avoid conflicts in Video UI. + // If stop sharing screen, reset conference layout to the previous one + if (mainItem.conference && !mainItem.conference.core.isLocalScreenSharing && mainItem.lastConfLayoutBeforeSharing !== -1) { + mainItem.conferenceLayout = mainItem.lastConfLayoutBeforeSharing + mainItem.lastConfLayoutBeforeSharing = -1 + } callLayout.sourceComponent = conference ? conference.core.isScreenSharingEnabled || (mainItem.conferenceLayout == LinphoneEnums.ConferenceLayout.ActiveSpeaker && participantDeviceCount > 1) ? activeSpeakerComponent @@ -86,6 +98,8 @@ Item { && mainItem.callState !== LinphoneEnums.CallState.OutgoingProgress && mainItem.callState !== LinphoneEnums.CallState.OutgoingRinging && mainItem.callState !== LinphoneEnums.CallState.OutgoingInit + && !mainItem.conference?.core.isScreenSharingEnabled + && mainItem.participantDeviceCount <= 2 height: Math.round(180 * DefaultStyle.dp) width: Math.round(300 * DefaultStyle.dp) anchors.right: mainItem.right @@ -178,12 +192,6 @@ Item { Layout.fillHeight: true call: mainItem.call - Binding { - target: preview - property: "visible" - when: activeSpeaker.sideStickersVisible - value: false - } } } Component{ diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 1f788a378..090c5d986 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -184,7 +184,7 @@ ListView { Avatar { property var contactObj: modelData ? UtilsCpp.findFriendByAddress(modelData.core.peerAddress) : null contact: contactObj?.value || null - displayNameVal: modelData.core.avatarUri + displayNameVal: modelData && modelData.core.avatarUri || "" secured: modelData?.core.isSecured || false Layout.preferredWidth: Math.round(45 * DefaultStyle.dp) Layout.preferredHeight: Math.round(45 * DefaultStyle.dp) diff --git a/Linphone/view/Control/Form/Settings/ScreencastSettings.qml b/Linphone/view/Control/Form/Settings/ScreencastSettings.qml index 1b7ef6553..2f0270c16 100644 --- a/Linphone/view/Control/Form/Settings/ScreencastSettings.qml +++ b/Linphone/view/Control/Form/Settings/ScreencastSettings.qml @@ -109,10 +109,6 @@ ColumnLayout { Layout.fillWidth: true height: visible ? contentHeight : 0 currentIndex: -1 - onCurrentIndexChanged: { - mainItem.desc.core.screenSharingIndex = currentIndex - } - //property int selectedIndex model: ScreenProxy{ id: screensList mode: ScreenList.SCREENS @@ -128,8 +124,9 @@ ColumnLayout { screenIndex: index onClicked: {//screensLayout.selectedIndex = index screensLayout.currentIndex = index + mainItem.desc.core.screenSharingIndex = index if( mainItem.conference.core.isLocalScreenSharing) - mainItem.call.core.videoSourceDescriptor = mainItem.desc + mainItem.call.core.videoSourceDescriptor = mainItem.desc } selected: mainItem.desc.core.screenSharingIndex === index } @@ -145,9 +142,6 @@ ColumnLayout { mode: ScreenList.WINDOWS } currentIndex: -1 - onCurrentIndexChanged: { - mainItem.desc.core.windowId = model.getAt(currentIndex)? model.getAt(currentIndex).windowId : -1 - } onVisibleChanged: { if(visible) windowsList.update() else currentIndex = -1 @@ -165,8 +159,9 @@ ColumnLayout { screenIndex: index onClicked: { windowsLayout.currentIndex = index + mainItem.desc.core.windowId = $modelData.windowId if( mainItem.conference.core.isLocalScreenSharing) - mainItem.call.core.videoSourceDescriptor = mainItem.desc + mainItem.call.core.videoSourceDescriptor = mainItem.desc } selected: mainItem.desc.core.windowId == $modelData.windowId } diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index ec18bb007..89b25087d 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -297,7 +297,14 @@ AbstractMainPage { target: groupChat?.core || null function onChatRoomStateChanged() { if (chatCreationLayout.groupChat.core.state === LinphoneEnums.ChatRoomState.Created) { + mainWindow.closeLoadingPopup() mainItem.selectedChatGui = chatCreationLayout.groupChat + } else if (chatCreationLayout.groupChat.core.state === LinphoneEnums.ChatRoomState.CreationFailed) { + mainWindow.closeLoadingPopup() + mainWindow.showInformationPopup(qsTr("information_popup_error_title"), + //: "La création a échoué" + qsTr("information_popup_chat_creation_failed_message"), false) + chatCreationLayout.groupChat.core.lDelete() } } } @@ -309,6 +316,7 @@ AbstractMainPage { listStackView.pop() listStackView.currentItem?.forceActiveFocus() } + onGroupCreationRequested: { if (groupName.text.length === 0) { UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), @@ -320,6 +328,10 @@ AbstractMainPage { qsTr("group_call_error_not_connected"), false) } else { console.log("create group chat") + //: Creation de la conversation en cours … + mainWindow.showLoadingPopup(qsTr("chat_creation_in_progress"), true, function () { + if (chatCreationLayout.groupChat) chatCreationLayout.groupChat.core.lDelete() + }) chatCreationLayout.groupChatObj = UtilsCpp.createGroupChat(chatCreationLayout.groupName.text, addParticipantsLayout.selectedParticipants) } } @@ -344,7 +356,7 @@ AbstractMainPage { } SelectedChatView { id: selectedChatView - visible: chat && (chat.core.isBasic || chat.core.conferenceJoined) + visible: chat != undefined //&& (chat.core.isBasic || chat.core.conferenceJoined) anchors.fill: parent chat: mainItem.selectedChatGui ? mainItem.selectedChatGui : null onChatChanged: {