From 6528d2a9463c456e0c4026787bd7dcf3e354a658 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Tue, 10 May 2022 18:19:37 +0200 Subject: [PATCH] Fix crash on removing participant. Add more IMDN in message. Fix dialogs top bar/margins. Fix Video deconding with some devices. --- linphone-app/resources.qrc | 4 +- linphone-app/src/components/camera/Camera.cpp | 7 ++++ linphone-app/src/components/camera/Camera.hpp | 1 + .../ParticipantImdnStateListModel.cpp | 5 +++ .../ui/modules/Common/Dialog/DialogPlus.qml | 3 ++ .../ui/modules/Common/Dialog/DialogTitle.qml | 4 +- .../Common/Styles/Dialog/DialogStyle.qml | 1 + .../Linphone/Chat/ChatCalendarMessage.qml | 5 +++ .../Linphone/Menus}/VideoConferenceMenu.qml | 6 +-- .../Menus}/VideoConferenceMenuStyle.qml | 0 .../ui/modules/Linphone/Styles/qmldir | 1 + linphone-app/ui/modules/Linphone/qmldir | 1 + .../App/Calls/Dialogs/ConferenceManager.qml | 2 +- .../ui/views/App/Main/Dialogs/About.qml | 3 +- .../views/App/Main/Dialogs/InfoChatRoom.qml | 1 - .../views/App/Main/Dialogs/InfoEncryption.qml | 1 - .../views/App/Main/Dialogs/ManageAccounts.qml | 3 +- .../views/App/Main/Dialogs/NewConference.qml | 8 +++- .../App/Main/Dialogs/ParticipantsDevices.qml | 1 - .../Dialogs/SettingsSipAccountsEdit.qml | 3 ++ .../Settings/Dialogs/SettingsVideoPreview.qml | 42 +------------------ linphone-app/ui/views/App/Styles/qmldir | 1 - linphone-sdk | 2 +- 23 files changed, 46 insertions(+), 59 deletions(-) rename linphone-app/ui/{views/App/Calls => modules/Linphone/Menus}/VideoConferenceMenu.qml (95%) rename linphone-app/ui/{views/App/Styles/Calls => modules/Linphone/Styles/Menus}/VideoConferenceMenuStyle.qml (100%) diff --git a/linphone-app/resources.qrc b/linphone-app/resources.qrc index 480825098..5a27ffd0b 100644 --- a/linphone-app/resources.qrc +++ b/linphone-app/resources.qrc @@ -339,6 +339,7 @@ ui/modules/Linphone/History/History.js ui/modules/Linphone/History/Event.qml ui/modules/Linphone/Menus/SipAddressesMenu.qml + ui/modules/Linphone/Menus/VideoConferenceMenu.qml ui/modules/Linphone/Misc/MessageCounter.qml ui/modules/Linphone/Notifications/NotificationBasic.qml ui/modules/Linphone/Notifications/NotificationNewVersionAvailable.qml @@ -376,6 +377,7 @@ ui/modules/Linphone/Styles/Dialog/SipAddressDialogStyle.qml ui/modules/Linphone/Styles/History/HistoryStyle.qml ui/modules/Linphone/Styles/Menus/SipAddressesMenuStyle.qml + ui/modules/Linphone/Styles/Menus/VideoConferenceMenuStyle.qml ui/modules/Linphone/Styles/Misc/MessageCounterStyle.qml ui/modules/Linphone/Styles/Notifications/NotificationBasicStyle.qml ui/modules/Linphone/Styles/Notifications/NotificationReceivedCallStyle.qml @@ -410,7 +412,6 @@ ui/views/App/Calls/VideoConferenceActiveSpeaker.qml ui/views/App/Calls/VideoConferenceFullscreen.qml ui/views/App/Calls/VideoConferenceGrid.qml - ui/views/App/Calls/VideoConferenceMenu.qml ui/views/App/Calls/Dialogs/CallSipAddress.qml ui/views/App/Calls/Dialogs/CallTransfer.qml ui/views/App/Calls/Dialogs/ConferenceManager.qml @@ -484,7 +485,6 @@ ui/views/App/Styles/Calls/CallsWindowStyle.qml ui/views/App/Styles/Calls/ConferenceStyle.qml ui/views/App/Styles/Calls/VideoConferenceStyle.qml - ui/views/App/Styles/Calls/VideoConferenceMenuStyle.qml ui/views/App/Styles/Calls/WaitingRoomStyle.qml ui/views/App/Styles/Calls/Dialogs/CallSipAddressStyle.qml ui/views/App/Styles/Calls/Dialogs/CallTransferStyle.qml diff --git a/linphone-app/src/components/camera/Camera.cpp b/linphone-app/src/components/camera/Camera.cpp index 02dcd969f..5b0ab8cf9 100644 --- a/linphone-app/src/components/camera/Camera.cpp +++ b/linphone-app/src/components/camera/Camera.cpp @@ -132,6 +132,10 @@ void Camera::updateWindowIdLocation(){ } } +void Camera::removeParticipantDeviceModel(){ + mParticipantDeviceModel = nullptr; +} + QQuickFramebufferObject::Renderer *Camera::createRenderer () const { resetWindowId(); @@ -229,7 +233,10 @@ void Camera::setIsReady(bool status) { void Camera::setParticipantDeviceModel(ParticipantDeviceModel * participantDeviceModel){ if (mParticipantDeviceModel != participantDeviceModel) { + if( mParticipantDeviceModel) + disconnect(mParticipantDeviceModel, &QObject::destroyed, this, &Camera::removeParticipantDeviceModel); mParticipantDeviceModel = participantDeviceModel; + connect(mParticipantDeviceModel, &QObject::destroyed, this, &Camera::removeParticipantDeviceModel); updateWindowIdLocation(); update(); emit participantDeviceModelChanged(mParticipantDeviceModel); diff --git a/linphone-app/src/components/camera/Camera.hpp b/linphone-app/src/components/camera/Camera.hpp index 6b0d79542..ed5631ec6 100644 --- a/linphone-app/src/components/camera/Camera.hpp +++ b/linphone-app/src/components/camera/Camera.hpp @@ -89,6 +89,7 @@ private: void activatePreview(); void deactivatePreview(); void updateWindowIdLocation(); + void removeParticipantDeviceModel(); bool mIsPreview = false; bool mIsReady = false; diff --git a/linphone-app/src/components/participant-imdn/ParticipantImdnStateListModel.cpp b/linphone-app/src/components/participant-imdn/ParticipantImdnStateListModel.cpp index 24a169cf1..1a3009be3 100644 --- a/linphone-app/src/components/participant-imdn/ParticipantImdnStateListModel.cpp +++ b/linphone-app/src/components/participant-imdn/ParticipantImdnStateListModel.cpp @@ -37,6 +37,11 @@ ParticipantImdnStateListModel::ParticipantImdnStateListModel (std::shared_ptr
  • > imdns = message->getParticipantsByImdnState(states[i]); for(auto imdn : imdns){ diff --git a/linphone-app/ui/modules/Common/Dialog/DialogPlus.qml b/linphone-app/ui/modules/Common/Dialog/DialogPlus.qml index 8600922f9..17551010d 100644 --- a/linphone-app/ui/modules/Common/Dialog/DialogPlus.qml +++ b/linphone-app/ui/modules/Common/Dialog/DialogPlus.qml @@ -16,9 +16,11 @@ Rectangle { property alias descriptionText: description.text // Optionnal. property int buttonsAlignment : Qt.AlignLeft property bool flat : false + property bool showMargins: !flat property bool expandHeight: flat property alias showCloseCross : titleBar.showCloseCross + property alias showTitleBar: titleBar.showBar property int buttonsLeftMargin :(buttonsAlignment & Qt.AlignLeft )== Qt.AlignLeft ? DialogStyle.buttons.leftMargin @@ -91,6 +93,7 @@ Rectangle { Layout.fillHeight: (expandHeight ? true : !dialog.contentIsEmpty) Layout.fillWidth: true + Layout.topMargin: (showMargins ? DialogStyle.content.topMargin : 0) Layout.leftMargin: (showMargins ? DialogStyle.content.leftMargin : 0) Layout.rightMargin: (showMargins ? DialogStyle.content.rightMargin : 0) } diff --git a/linphone-app/ui/modules/Common/Dialog/DialogTitle.qml b/linphone-app/ui/modules/Common/Dialog/DialogTitle.qml index f7d253785..48e751f97 100644 --- a/linphone-app/ui/modules/Common/Dialog/DialogTitle.qml +++ b/linphone-app/ui/modules/Common/Dialog/DialogTitle.qml @@ -19,7 +19,7 @@ Item { property bool flat: false signal close() - height: showBar || showCloseCross ? (flat ? 60 : 30) : 0 + height: showBar || showCloseCross ? (flat && text != '' ? 60 : 30) : 0 Rectangle{ anchors.fill:parent @@ -27,7 +27,7 @@ Item { GradientStop { position: 0.0; color: DialogStyle.title.lowGradient } GradientStop { position: 1.0; color: DialogStyle.title.highGradient } } - visible:showBar && !flat + visible: showBar && !flat } Text { id: title diff --git a/linphone-app/ui/modules/Common/Styles/Dialog/DialogStyle.qml b/linphone-app/ui/modules/Common/Styles/Dialog/DialogStyle.qml index b36ccb900..86795159e 100644 --- a/linphone-app/ui/modules/Common/Styles/Dialog/DialogStyle.qml +++ b/linphone-app/ui/modules/Common/Styles/Dialog/DialogStyle.qml @@ -31,6 +31,7 @@ QtObject { property QtObject content: QtObject { property int leftMargin: 25 property int rightMargin: 25 + property int topMargin: 25 } property QtObject description: QtObject { diff --git a/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml b/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml index f86c78e63..ad7e1bb11 100644 --- a/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml +++ b/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml @@ -259,6 +259,11 @@ Loader{ isCustom: true colorSet: ChatCalendarMessageStyle.editButton backgroundRadius: width/2 + onClicked: { + window.detachVirtualWindow() + window.attachVirtualWindow(Qt.resolvedUrl('../../../views/App/Main/Dialogs/NewConference.qml') + ,{conferenceInfoModel: mainItem.conferenceInfoModel}) + } } ActionButton{ isCustom: true diff --git a/linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml b/linphone-app/ui/modules/Linphone/Menus/VideoConferenceMenu.qml similarity index 95% rename from linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml rename to linphone-app/ui/modules/Linphone/Menus/VideoConferenceMenu.qml index c8d6eb9b0..bcd2943b5 100644 --- a/linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml +++ b/linphone-app/ui/modules/Linphone/Menus/VideoConferenceMenu.qml @@ -6,6 +6,7 @@ import QtQuick.Controls 2.12 import Common 1.0 import Common.Styles 1.0 import Linphone 1.0 +import Linphone.Styles 1.0 import LinphoneUtils 1.0 import LinphoneEnums 1.0 @@ -14,11 +15,6 @@ import UtilsCpp 1.0 import App.Styles 1.0 - -// Temp -import 'Incall.js' as Logic -import 'qrc:/ui/scripts/Utils/utils.js' as Utils - // ============================================================================= Rectangle{ diff --git a/linphone-app/ui/views/App/Styles/Calls/VideoConferenceMenuStyle.qml b/linphone-app/ui/modules/Linphone/Styles/Menus/VideoConferenceMenuStyle.qml similarity index 100% rename from linphone-app/ui/views/App/Styles/Calls/VideoConferenceMenuStyle.qml rename to linphone-app/ui/modules/Linphone/Styles/Menus/VideoConferenceMenuStyle.qml diff --git a/linphone-app/ui/modules/Linphone/Styles/qmldir b/linphone-app/ui/modules/Linphone/Styles/qmldir index 8697c1dfe..57d355143 100644 --- a/linphone-app/ui/modules/Linphone/Styles/qmldir +++ b/linphone-app/ui/modules/Linphone/Styles/qmldir @@ -38,6 +38,7 @@ singleton SipAddressDialogStyle 1.0 Dialog/SipAddressDialogStyle. singleton HistoryStyle 1.0 History/HistoryStyle.qml singleton SipAddressesMenuStyle 1.0 Menus/SipAddressesMenuStyle.qml +singleton VideoConferenceMenuStyle 1.0 Menus/VideoConferenceMenuStyle.qml singleton MessageCounterStyle 1.0 Misc/MessageCounterStyle.qml diff --git a/linphone-app/ui/modules/Linphone/qmldir b/linphone-app/ui/modules/Linphone/qmldir index 23ff039da..3916fe6c8 100644 --- a/linphone-app/ui/modules/Linphone/qmldir +++ b/linphone-app/ui/modules/Linphone/qmldir @@ -41,6 +41,7 @@ FileView 1.0 File/FileView.qml History 1.0 History/History.qml SipAddressesMenu 1.0 Menus/SipAddressesMenu.qml +VideoConferenceMenu 1.0 Menus/VideoConferenceMenu.qml MessageCounter 1.0 Misc/MessageCounter.qml diff --git a/linphone-app/ui/views/App/Calls/Dialogs/ConferenceManager.qml b/linphone-app/ui/views/App/Calls/Dialogs/ConferenceManager.qml index dd1b603b7..e8602113c 100644 --- a/linphone-app/ui/views/App/Calls/Dialogs/ConferenceManager.qml +++ b/linphone-app/ui/views/App/Calls/Dialogs/ConferenceManager.qml @@ -34,7 +34,7 @@ DialogPlus { } } ] - + buttonsAlignment: Qt.AlignCenter descriptionText: qsTr('conferenceManagerDescription') diff --git a/linphone-app/ui/views/App/Main/Dialogs/About.qml b/linphone-app/ui/views/App/Main/Dialogs/About.qml index bd00b4d76..da45c7e0a 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/About.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/About.qml @@ -20,7 +20,8 @@ DialogPlus { buttonsAlignment: Qt.AlignCenter objectName: '__about' - + flat: true + showMargins: true height: AboutStyle.height + 30 width: AboutStyle.width diff --git a/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml b/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml index a7853a9b9..bdb0ded52 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml @@ -44,7 +44,6 @@ DialogPlus { } } ] - flat : true showCloseCross: true //: "Group information" : Popup title. //~ This popup display data about the current chat room diff --git a/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml b/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml index c3d8c0070..a6730cab5 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml @@ -39,7 +39,6 @@ DialogPlus { } } ] - flat : true //: 'End-to-end encrypted' Popup title about encryption information. title: qsTr('infoEncryptionTitle') showCloseCross:false diff --git a/linphone-app/ui/views/App/Main/Dialogs/ManageAccounts.qml b/linphone-app/ui/views/App/Main/Dialogs/ManageAccounts.qml index 116b096bb..d7d5c026d 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/ManageAccounts.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/ManageAccounts.qml @@ -21,7 +21,8 @@ DialogPlus { buttonsAlignment: Qt.AlignCenter objectName: '__manageAccounts' - + flat: true + showMargins: true height: SettingsModel.rlsUriEnabled ? ManageAccountsStyle.height : ManageAccountsStyle.heightWithoutPresence width: ManageAccountsStyle.width diff --git a/linphone-app/ui/views/App/Main/Dialogs/NewConference.qml b/linphone-app/ui/views/App/Main/Dialogs/NewConference.qml index 5562d143c..9262736df 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/NewConference.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/NewConference.qml @@ -19,6 +19,10 @@ import 'qrc:/ui/scripts/Utils/utils.js' as Utils DialogPlus { id: conferenceManager property ConferenceInfoModel conferenceInfoModel: ConferenceInfoModel{ + property bool isNew: true + } + Connections{ + target: conferenceInfoModel onConferenceCreated: { console.log("Conference has been created.") creationStatus.icon = 'led_green' @@ -103,7 +107,7 @@ DialogPlus { TextButtonB { enabled: selectedParticipants.count >= conferenceManager.minParticipants && subject.text != '' && AccountSettingsModel.conferenceURI != '' //: 'Launch' : Start button - text: qsTr('startButton') + text: conferenceInfoModel.isNew ? qsTr('startButton') : 'Mettre à jour' capitalization: Font.AllUppercase function getInviteMode(){ @@ -162,7 +166,7 @@ DialogPlus { buttonsAlignment: Qt.AlignRight buttonsLeftMargin: 15 //: 'Start a video conference' : Title of a popup about creation of a video conference - title:qsTr('newConferenceTitle') + title: conferenceInfoModel.isNew ? qsTr('newConferenceTitle') : 'Changer la conférence' height: window.height - 100 width: window.width - 100 diff --git a/linphone-app/ui/views/App/Main/Dialogs/ParticipantsDevices.qml b/linphone-app/ui/views/App/Main/Dialogs/ParticipantsDevices.qml index 653f32015..35a416d06 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/ParticipantsDevices.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/ParticipantsDevices.qml @@ -19,7 +19,6 @@ import '../Conversation.js' as Logic DialogPlus { id:dialog buttons: [] - flat : true //: 'Conversation's devices' : Title of window that show all devices title: qsTr('conversationDevicesTitle') showCloseCross:true diff --git a/linphone-app/ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.qml b/linphone-app/ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.qml index b1a8e51a2..f6b7ff0e5 100644 --- a/linphone-app/ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.qml +++ b/linphone-app/ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.qml @@ -19,6 +19,9 @@ DialogPlus { property bool _conferenceUriOk: true property bool _videoConferenceUriOk: true + flat: true + showMargins: true + buttons: [ TextButtonA { text: qsTr('cancel') diff --git a/linphone-app/ui/views/App/Settings/Dialogs/SettingsVideoPreview.qml b/linphone-app/ui/views/App/Settings/Dialogs/SettingsVideoPreview.qml index c27c3451d..f9121d593 100644 --- a/linphone-app/ui/views/App/Settings/Dialogs/SettingsVideoPreview.qml +++ b/linphone-app/ui/views/App/Settings/Dialogs/SettingsVideoPreview.qml @@ -20,6 +20,8 @@ DialogPlus { ] buttonsAlignment: Qt.AlignCenter + flat: true + showMargins: true height: SettingsVideoPreviewStyle.height width: SettingsVideoPreviewStyle.width @@ -34,44 +36,4 @@ DialogPlus { showCloseButton: false } } - - - /* - Loader{ - id: previewLoader - anchors.fill: parent - sourceComponent: Item{ - anchors.fill: parent - Rectangle{ - id: showArea - anchors.fill: parent - radius: 10 - visible:false - color: 'red' - } - CameraPreview { - id: camera - anchors.fill: parent - onRequestNewRenderer: {previewLoader.active = false;previewLoader.active = true} - visible: false - } - - OpacityMask{ - anchors.fill: parent - source: camera - maskSource: showArea - transform: Matrix4x4 {// 180 rotation + mirror - matrix: Qt.matrix4x4(-Math.cos(Math.PI), -Math.sin(Math.PI), 0, 0, - Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height, - 0, 0, 1, 0, - 0, 0, 0, 1) - } - } - } - active: true - onActiveChanged: { - console.log("Active changed : " +active) - if(!active) active = true - } - }*/ } diff --git a/linphone-app/ui/views/App/Styles/qmldir b/linphone-app/ui/views/App/Styles/qmldir index 6f9a447b5..0862d1391 100644 --- a/linphone-app/ui/views/App/Styles/qmldir +++ b/linphone-app/ui/views/App/Styles/qmldir @@ -12,7 +12,6 @@ singleton CallsWindowStyle 1.0 Calls/CallsWindowSt singleton WaitingRoomStyle 1.0 Calls/WaitingRoomStyle.qml singleton ConferenceStyle 1.0 Calls/ConferenceStyle.qml singleton VideoConferenceStyle 1.0 Calls/VideoConferenceStyle.qml -singleton VideoConferenceMenuStyle 1.0 Calls/VideoConferenceMenuStyle.qml singleton CallSipAddressStyle 1.0 Calls/Dialogs/CallSipAddressStyle.qml singleton CallTransferStyle 1.0 Calls/Dialogs/CallTransferStyle.qml diff --git a/linphone-sdk b/linphone-sdk index 438e41d95..9c69668a4 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit 438e41d95550c5fb9dc1bb7385cafcd323fd0698 +Subproject commit 9c69668a42189b54530a83b9263cfa2ad4149cf9