From d70b08c36efd3c104ff5a8bd0891a4992ba1ceb5 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 26 Mar 2024 16:08:42 +0100 Subject: [PATCH] ui fixes --- Linphone/tool/thread/Thread.cpp | 2 +- Linphone/view/App/CallsWindow.qml | 106 +++++------ Linphone/view/App/Layout/MainLayout.qml | 166 ++++++++++-------- Linphone/view/App/Main.qml | 11 +- Linphone/view/Item/Button.qml | 50 +++++- Linphone/view/Item/CheckableButton.qml | 6 +- Linphone/view/Item/Contact/ContactsList.qml | 46 ++++- Linphone/view/Item/EffectImage.qml | 10 +- Linphone/view/Layout/Call/CallLayout.qml | 20 +++ .../Layout/Meeting/AddParticipantsLayout.qml | 3 + Linphone/view/Page/Main/MeetingPage.qml | 9 +- 11 files changed, 261 insertions(+), 168 deletions(-) diff --git a/Linphone/tool/thread/Thread.cpp b/Linphone/tool/thread/Thread.cpp index 274865f7..8184821a 100644 --- a/Linphone/tool/thread/Thread.cpp +++ b/Linphone/tool/thread/Thread.cpp @@ -34,7 +34,7 @@ void Thread::run() { } } bool Thread::isInLinphoneThread() { - return QThread::currentThread() == CoreModel::getInstance()->thread(); + return CoreModel::getInstance() && QThread::currentThread() == CoreModel::getInstance()->thread(); } bool Thread::mustBeInLinphoneThread(const QString &context) { diff --git a/Linphone/view/App/CallsWindow.qml b/Linphone/view/App/CallsWindow.qml index 9bd0c81f..de8f504a 100644 --- a/Linphone/view/App/CallsWindow.qml +++ b/Linphone/view/App/CallsWindow.qml @@ -16,9 +16,10 @@ Window { property CallGui call property ConferenceInfoGui conferenceInfo - onConferenceInfoChanged: console.log("CONFERENCE INFO", conferenceInfo) property ConferenceGui conference: call && call.core.conference || null + onConferenceChanged: console.log ("CONFERENCE CHANGED", conference) + property bool callTerminatedByUser: false onCallChanged: { @@ -56,7 +57,10 @@ Window { onCallStateChanged: { console.log("State:", callState) if (callState === LinphoneEnums.CallState.Connected) { - if (conferenceInfo) middleItemStackView.replace(inCallItem) + if (conferenceInfo) { + middleItemStackView.replace(inCallItem) + bottomButtonsLayout.visible = true + } if(!call.core.isSecured && call.core.encryption === LinphoneEnums.MediaEncryption.Zrtp) { zrtpValidation.open() } @@ -642,19 +646,17 @@ Window { Layout.alignment: Qt.AlignHCenter layoutDirection: Qt.LeftToRight columnSpacing: 20 * DefaultStyle.dp - visible: mainWindow.conferenceUri ? mainWindow.conferenceJoined : mainWindow.call + visible: mainWindow.call && !mainWindow.conferenceInfo function refreshLayout() { if (mainWindow.callState === LinphoneEnums.CallState.Connected || mainWindow.callState === LinphoneEnums.CallState.StreamsRunning) { bottomButtonsLayout.layoutDirection = Qt.RightToLeft - connectedCallButtons.visible = true - videoCameraButton.enabled = true - moreOptionsButton.visible = true - } + connectedCallButtons.visible = bottomButtonsLayout.visible + moreOptionsButton.visible = bottomButtonsLayout.visible + } else if (mainWindow.callState === LinphoneEnums.CallState.OutgoingInit) { connectedCallButtons.visible = false bottomButtonsLayout.layoutDirection = Qt.LeftToRight - videoCameraButton.enabled = false moreOptionsButton.visible = false } } @@ -669,9 +671,12 @@ Window { children[i].enabled = false } } - BottomButton { + Button { Layout.row: 0 - enabledIcon: AppIcons.endCall + icon.source: AppIcons.endCall + icon.width: 32 * DefaultStyle.dp + icon.height: 32 * DefaultStyle.dp + contentImageColor: DefaultStyle.grey_0 checkable: false Layout.column: mainWindow.callState == LinphoneEnums.CallState.OutgoingInit || mainWindow.callState == LinphoneEnums.CallState.OutgoingProgress @@ -696,7 +701,7 @@ Window { visible: false Layout.row: 0 Layout.column: 1 - BottomButton { + CheckableButton { id: pauseButton Layout.preferredWidth: 55 * DefaultStyle.dp Layout.preferredHeight: 55 * DefaultStyle.dp @@ -712,17 +717,20 @@ Window { : DefaultStyle.grey_600 } enabled: mainWindow.callState != LinphoneEnums.CallState.PausedByRemote - enabledIcon: enabled && checked ? AppIcons.play : AppIcons.pause + icon.source: enabled && checked ? AppIcons.play : AppIcons.pause checked: mainWindow.call && mainWindow.call.core.paused - onClicked: { - mainWindow.call.core.lSetPaused(!callsModel.currentCall.core.paused) + onCheckedChanged: { + mainWindow.call.core.lSetPaused(!mainWindow.call.core.paused) } } - BottomButton { + CheckableButton { id: transferCallButton - enabledIcon: AppIcons.transferCall + icon.source: AppIcons.transferCall Layout.preferredWidth: 55 * DefaultStyle.dp Layout.preferredHeight: 55 * DefaultStyle.dp + contentImageColor: enabled ? DefaultStyle.grey_0 : DefaultStyle.grey_500 + onEnabledChanged: console.log("===================enable change", enabled) + onContentImageColorChanged: console.log("===================================== content image color", contentImageColor) onCheckedChanged: { if (checked) { rightPanel.visible = true @@ -736,10 +744,10 @@ Window { onVisibleChanged: if(!rightPanel.visible) transferCallButton.checked = false } } - BottomButton { + CheckableButton { id: newCallButton checkable: false - enabledIcon: AppIcons.newCall + icon.source: AppIcons.newCall Layout.preferredWidth: 55 * DefaultStyle.dp Layout.preferredHeight: 55 * DefaultStyle.dp onClicked: { @@ -757,41 +765,42 @@ Window { || mainWindow.callState == LinphoneEnums.CallState.OutgoingEarlyMedia || mainWindow.callState == LinphoneEnums.CallState.IncomingReceived ? bottomButtonsLayout.columns - 1 : 0 - BottomButton { + CheckableButton { id: videoCameraButton - enabledIcon: AppIcons.videoCamera - disabledIcon: AppIcons.videoCameraSlash + enabled: mainWindow.conferenceInfo || (mainWindow.callState === LinphoneEnums.CallState.Connected || mainWindow.callState === LinphoneEnums.CallState.StreamsRunning) + iconUrl: AppIcons.videoCamera + checkedIconUrl: AppIcons.videoCameraSlash checked: mainWindow.call && !mainWindow.call.core.cameraEnabled Layout.preferredWidth: 55 * DefaultStyle.dp Layout.preferredHeight: 55 * DefaultStyle.dp - onClicked: mainWindow.call.core.lSetCameraEnabled(!mainWindow.call.core.cameraEnabled) + onCheckedChanged: mainWindow.call.core.lSetCameraEnabled(!mainWindow.call.core.cameraEnabled) } - BottomButton { - enabledIcon: AppIcons.microphone - disabledIcon: AppIcons.microphoneSlash + CheckableButton { + iconUrl: AppIcons.microphone + checkedIconUrl: AppIcons.microphoneSlash checked: mainWindow.call && mainWindow.call.core.microphoneMuted Layout.preferredWidth: 55 * DefaultStyle.dp Layout.preferredHeight: 55 * DefaultStyle.dp - onClicked: mainWindow.call.core.lSetMicrophoneMuted(!mainWindow.call.core.microphoneMuted) + onCheckedChanged: mainWindow.call.core.lSetMicrophoneMuted(!mainWindow.call.core.microphoneMuted) } PopupButton { id: moreOptionsButton Layout.preferredWidth: 55 * DefaultStyle.dp Layout.preferredHeight: 55 * DefaultStyle.dp + onEnabledChanged: console.log("========== enabled changed", enabled) + contentImageColor: enabled && !checked ? DefaultStyle.grey_0 : DefaultStyle.grey_500 + icon.width: 24 * DefaultStyle.dp + icon.height: 24 * DefaultStyle.dp + icon.source: AppIcons.more background: Rectangle { anchors.fill: moreOptionsButton - color: moreOptionsButton.checked ? DefaultStyle.grey_0 : DefaultStyle.grey_500 + color: moreOptionsButton.enabled + ? moreOptionsButton.checked + ? DefaultStyle.grey_0 + : DefaultStyle.grey_500 + : DefaultStyle.grey_600 radius: 40 * DefaultStyle.dp } - contentItem: Item { - EffectImage { - imageSource: AppIcons.more - width: 24 * DefaultStyle.dp - height: 24 * DefaultStyle.dp - anchors.centerIn: parent - colorizationColor: moreOptionsButton.checked ? DefaultStyle.grey_500 : DefaultStyle.grey_0 - } - } popup.x: width/2 popup.y: y - popup.height + height/4 popup.contentItem: ColumnLayout { @@ -864,30 +873,7 @@ Window { mainWindow.call && mainWindow.call.core.recording ? mainWindow.call.core.lStopRecording() : mainWindow.call.core.lStartRecording() } } - Control.Button { - id: speakerButton - Layout.fillWidth: true - checkable: true - background: Item {} - contentItem: RowLayout { - EffectImage { - Layout.preferredWidth: 24 * DefaultStyle.dp - Layout.preferredHeight: 24 * DefaultStyle.dp - fillMode: Image.PreserveAspectFit - imageSource: AppIcons.recordFill - colorizationColor: mainWindow.call && mainWindow.call.core.recording ? DefaultStyle.danger_500main : undefined - } - Text { - color: mainWindow.call && mainWindow.call.core.recording ? DefaultStyle.danger_500main : DefaultStyle.main2_600 - text: mainWindow.call && mainWindow.call.core.recording ? qsTr("Terminer l'enregistrement") : qsTr("Enregistrer l'appel") - } - - } - onClicked: { - mainWindow.call.core.recording ? mainWindow.call.core.lStopRecording() : mainWindow.call.core.lStartRecording() - } - } - Control.Button { + Button { id: settingsButton Layout.fillWidth: true background: Item{} diff --git a/Linphone/view/App/Layout/MainLayout.qml b/Linphone/view/App/Layout/MainLayout.qml index b81b1749..5c4a894e 100644 --- a/Linphone/view/App/Layout/MainLayout.qml +++ b/Linphone/view/App/Layout/MainLayout.qml @@ -138,21 +138,21 @@ Item { } Popup { id: listPopup - width: magicSearchList.width + listPopup.rightPadding + listPopup.leftPadding - height: Math.min(magicSearchList.contentHeight, 300 * DefaultStyle.dp + topPadding + bottomPadding) + width: magicSearchBar.width + height: Math.min(magicSearchList.contentHeight + topPadding + bottomPadding, 400 * DefaultStyle.dp) y: magicSearchBar.height closePolicy: Popup.NoAutoClose topPadding: 10 * DefaultStyle.dp bottomPadding: 10 * DefaultStyle.dp rightPadding: 10 * DefaultStyle.dp leftPadding: 10 * DefaultStyle.dp + background: Item { anchors.fill: parent Rectangle { id: popupBg radius: 15 * DefaultStyle.dp anchors.fill: parent - // width: magicSearchList.width + listPopup.rightPadding + listPopup.leftPadding } MultiEffect { source: popupBg @@ -166,101 +166,115 @@ Item { Control.ScrollBar { id: scrollbar height: parent.height - anchors.right: parent.right + anchors.right: listPopup.right } - ContactsList { + contentItem: ContactsList { id: magicSearchList visible: magicSearchBar.text.length != 0 - height: Math.min(contentHeight, listPopup.height) + height: contentHeight width: magicSearchBar.width + headerPositioning: ListView.OverlayHeader + rightMargin: 15 * DefaultStyle.dp initialHeadersVisible: false contactMenuVisible: false + actionMenuVisible: true model: MagicSearchProxy { searchText: magicSearchBar.text.length === 0 ? "*" : magicSearchBar.text aggregationFlag: LinphoneEnums.MagicSearchAggregation.Friend } Control.ScrollBar.vertical: scrollbar - header: ColumnLayout { + header: Control.Control { + z: 2 width: magicSearchList.width - RowLayout { - Layout.fillWidth: true - spacing: 10 * DefaultStyle.dp - Avatar { - Layout.preferredWidth: 45 * DefaultStyle.dp - Layout.preferredHeight: 45 * DefaultStyle.dp - address: sipAddr.text - } - ColumnLayout { - Text { - text: magicSearchBar.text - font { - pixelSize: 14 * DefaultStyle.dp - weight: 700 * DefaultStyle.dp + leftPadding: 10 * DefaultStyle.dp + rightPadding: 10 * DefaultStyle.dp + background: Rectangle { + color: DefaultStyle.grey_0 + } + contentItem: ColumnLayout { + RowLayout { + Layout.fillWidth: true + spacing: 10 * DefaultStyle.dp + Avatar { + Layout.preferredWidth: 45 * DefaultStyle.dp + Layout.preferredHeight: 45 * DefaultStyle.dp + address: sipAddr.text + } + ColumnLayout { + Text { + text: magicSearchBar.text + font { + pixelSize: 14 * DefaultStyle.dp + weight: 700 * DefaultStyle.dp + } + } + Text { + id: sipAddr + text: UtilsCpp.generateLinphoneSipAddress(magicSearchBar.text) } } - Text { - id: sipAddr - text: UtilsCpp.generateLinphoneSipAddress(magicSearchBar.text) + Item { + Layout.fillWidth: true + } + Button { + background: Item{} + Layout.preferredWidth: 24 * DefaultStyle.dp + Layout.preferredHeight: 24 * DefaultStyle.dp + property var callObj + contentItem: Image { + anchors.fill: parent + width: 24 * DefaultStyle.dp + height: 24 * DefaultStyle.dp + source: AppIcons.phone + } + onClicked: { + callObj = UtilsCpp.createCall(sipAddr.text) + } + } + Button { + Layout.preferredWidth: 24 * DefaultStyle.dp + Layout.preferredHeight: 24 * DefaultStyle.dp + background: Item{} + contentItem: Image { + anchors.fill: parent + width: 24 * DefaultStyle.dp + height: 24 * DefaultStyle.dp + source: AppIcons.videoCamera + } + onClicked: callObj = UtilsCpp.createCall(sipAddr.text, true) } - } - Item { - Layout.fillWidth: true } Button { - background: Item{} - Layout.preferredWidth: 24 * DefaultStyle.dp - Layout.preferredHeight: 24 * DefaultStyle.dp - property var callObj - contentItem: Image { - width: 24 * DefaultStyle.dp - height: 24 * DefaultStyle.dp - source: AppIcons.phone + Layout.fillWidth: true + Layout.preferredHeight: 30 * DefaultStyle.dp + color: DefaultStyle.main2_200 + pressedColor: DefaultStyle.main2_400 + background: Rectangle { + anchors.fill: parent + color: DefaultStyle.main2_200 + } + contentItem: RowLayout { + spacing: 10 * DefaultStyle.dp + Image { + source: AppIcons.userPlus + } + Text { + text: qsTr("Ajouter ce contact") + font { + pixelSize: 14 * DefaultStyle.dp + weight: 700 * DefaultStyle.dp + capitalization: Font.AllUppercase + } + } + Item {Layout.fillWidth: true} } onClicked: { - callObj = UtilsCpp.createCall(sipAddr.text) + var currentItem = mainStackLayout.children[mainStackLayout.currentIndex] + listPopup.close() + currentItem.createContact(magicSearchBar.text, sipAddr.text) } } } - Button { - Layout.fillWidth: true - color: DefaultStyle.main2_200 - pressedColor: DefaultStyle.main2_400 - background: Rectangle { - anchors.fill: parent - color: DefaultStyle.main2_200 - } - contentItem: RowLayout { - spacing: 10 * DefaultStyle.dp - Image { - source: AppIcons.userPlus - } - Text { - text: qsTr("Ajouter ce contact") - font { - pixelSize: 14 * DefaultStyle.dp - weight: 700 * DefaultStyle.dp - capitalization: Font.AllUppercase - } - } - Item {Layout.fillWidth: true} - } - onClicked: { - var currentItem = mainStackLayout.children[mainStackLayout.currentIndex] - listPopup.close() - currentItem.createContact(magicSearchBar.text, sipAddr.text) - } - } - } - delegateButtons: Button { - Layout.preferredWidth: 24 * DefaultStyle.dp - Layout.preferredHeight: 24 * DefaultStyle.dp - background: Item{} - contentItem: Image { - anchors.fill: parent - width: 24 * DefaultStyle.dp - height: 24 * DefaultStyle.dp - source: AppIcons.phone - } } } } diff --git a/Linphone/view/App/Main.qml b/Linphone/view/App/Main.qml index 9609b6f3..6fe1c971 100644 --- a/Linphone/view/App/Main.qml +++ b/Linphone/view/App/Main.qml @@ -5,7 +5,7 @@ import Linphone import UtilsCpp 1.0 import SettingsCpp 1.0 -Window { +ApplicationWindow { id: mainWindow width: 1512 * DefaultStyle.dp height: 982 * DefaultStyle.dp @@ -15,6 +15,15 @@ Window { property bool firstConnection: true color: "transparent" + + // TODO : use this to make the border transparent + // flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowTitleHint + // menuBar: Rectangle { + // width: parent.width + // height: 40 * DefaultStyle.dp + // color: DefaultStyle.grey_100 + // } + function goToNewCall() { mainWindowStackView.replace(mainPage, StackView.Immediate) mainWindowStackView.currentItem.goToNewCall() diff --git a/Linphone/view/Item/Button.qml b/Linphone/view/Item/Button.qml index e4cfeb63..c0c2087a 100644 --- a/Linphone/view/Item/Button.qml +++ b/Linphone/view/Item/Button.qml @@ -8,6 +8,7 @@ Control.Button { id: mainItem property int capitalization property color color: DefaultStyle.main1_500_main + property color borderColor: "transparent" property color pressedColor: DefaultStyle.main1_500_main_darker property bool inversedColors: false property int textSize: 18 * DefaultStyle.dp @@ -15,7 +16,6 @@ Control.Button { property bool underline: false property bool shadowEnabled: false property var contentImageColor - property alias contentText: contentText hoverEnabled: true icon.width: width icon.height: height @@ -44,7 +44,7 @@ Control.Button { ? mainItem.pressedColor : mainItem.color radius: 48 * DefaultStyle.dp - border.color: inversedColors ? mainItem.color : "transparent" + border.color: inversedColors ? mainItem.color : mainItem.borderColor MouseArea { anchors.fill: parent @@ -64,15 +64,48 @@ Control.Button { } contentItem: StackLayout { - currentIndex: mainItem.text.length != 0 + currentIndex: mainItem.text.length != 0 && mainItem.icon.source != undefined ? 0 - : mainItem.icon.source != undefined + : mainItem.text.length != 0 ? 1 - : 2 + : mainItem.icon.source != undefined + ? 2 + : 3 width: mainItem.width + RowLayout { + spacing: 5 * DefaultStyle.dp + EffectImage { + visible: mainItem.icon.source != undefined + Layout.fillWidth: true + Layout.fillHeight: true + imageSource: mainItem.icon.source + imageWidth: mainItem.icon.width + imageHeight: mainItem.icon.height + colorizationColor: mainItem.contentImageColor + } + Text { + visible: mainItem.text != undefined + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + width: mainItem.text != undefined ? implicitWidth : 0 + height: implicitHeight + wrapMode: Text.WrapAnywhere + Layout.fillWidth: true + Layout.fillHeight: true + text: mainItem.text + maximumLineCount: 1 + color: inversedColors ? mainItem.color : DefaultStyle.grey_0 + font { + pixelSize: mainItem.textSize + weight: mainItem.textWeight + family: DefaultStyle.defaultFont + capitalization: mainItem.capitalization + underline: mainItem.underline + } + } + } Text { - id: contentText horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter Layout.alignment: Qt.AlignCenter @@ -92,7 +125,6 @@ Control.Button { } } EffectImage { - id: image Layout.alignment: Qt.AlignCenter Layout.fillWidth: true Layout.fillHeight: true @@ -102,8 +134,8 @@ Control.Button { colorizationColor: mainItem.contentImageColor } Item { - Layout.fillWidth: true - Layout.fillHeight: true + Layout.fillWidth : true + Layout.fillHeight : true } } } diff --git a/Linphone/view/Item/CheckableButton.qml b/Linphone/view/Item/CheckableButton.qml index 151f6b5a..a78e24c8 100644 --- a/Linphone/view/Item/CheckableButton.qml +++ b/Linphone/view/Item/CheckableButton.qml @@ -9,11 +9,7 @@ Button { property string iconUrl property string checkedIconUrl property color color: DefaultStyle.grey_500 - property color checkedColor: DefaultStyle.main2_400 - leftPadding: 0 - rightPadding: 0 - topPadding: 0 - bottomPadding: 0 + property color checkedColor: color checkable: true background: Rectangle { anchors.fill: parent diff --git a/Linphone/view/Item/Contact/ContactsList.qml b/Linphone/view/Item/Contact/ContactsList.qml index b5167790..5f20a0c9 100644 --- a/Linphone/view/Item/Contact/ContactsList.qml +++ b/Linphone/view/Item/Contact/ContactsList.qml @@ -10,11 +10,15 @@ ListView { height: contentHeight visible: contentHeight > 0 clip: true + rightMargin: 5 * DefaultStyle.dp property string searchBarText property bool hoverEnabled: true + // dots popup menu property bool contactMenuVisible: true + // call, video call etc menu + property bool actionMenuVisible: true property bool initialHeadersVisible: true property bool displayNameCapitalization: true property bool showOnlyFavourites: false @@ -34,8 +38,6 @@ ListView { property int delegateLeftMargin: 0 currentIndex: -1 - property var delegateButtons: [] - property FriendGui selectedContact: model.getAt(currentIndex) || null onCurrentIndexChanged: selectedContact = model.getAt(currentIndex) || null @@ -49,7 +51,7 @@ ListView { signal contactAddedToSelection() model: MagicSearchProxy { - searchText: searchBarText.length === 0 ? "*" : searchBarText + searchText: searchBarText.length === 0 ? "*" : searchBarText } @@ -88,6 +90,7 @@ ListView { anchors.left: initial.visible ? initial.right : parent.left anchors.leftMargin: 10 * DefaultStyle.dp + mainItem.delegateLeftMargin anchors.right: parent.right + anchors.rightMargin: 10 * DefaultStyle.dp anchors.verticalCenter: parent.verticalCenter spacing: 10 * DefaultStyle.dp z: 1 @@ -122,12 +125,39 @@ ListView { RowLayout { id: actionsRow z: 1 - anchors.fill: parent - anchors.rightMargin: 5 * DefaultStyle.dp + visible: mainItem.actionMenuVisible || friendPopup.visible + // anchors.fill: parent + anchors.right: parent.right + anchors.rightMargin: 10 * DefaultStyle.dp + anchors.verticalCenter: parent.verticalCenter RowLayout{ - Layout.fillWidth: true - Layout.fillHeight: true - children: mainItem.delegateButtons + property var callObj + visible: mainItem.actionMenuVisible + spacing: 10 * DefaultStyle.dp + Button { + Layout.preferredWidth: 24 * DefaultStyle.dp + Layout.preferredHeight: 24 * DefaultStyle.dp + background: Item{} + contentItem: Image { + anchors.fill: parent + width: 24 * DefaultStyle.dp + height: 24 * DefaultStyle.dp + source: AppIcons.phone + } + onClicked: callObj = UtilsCpp.createCall(modelData.core.defaultAddress) + } + Button { + Layout.preferredWidth: 24 * DefaultStyle.dp + Layout.preferredHeight: 24 * DefaultStyle.dp + background: Item{} + contentItem: Image { + anchors.fill: parent + width: 24 * DefaultStyle.dp + height: 24 * DefaultStyle.dp + source: AppIcons.videoCamera + } + onClicked: callObj = UtilsCpp.createCall(modelData.core.defaultAddress, true) + } } PopupButton { id: friendPopup diff --git a/Linphone/view/Item/EffectImage.qml b/Linphone/view/Item/EffectImage.qml index a2b3e75b..5578ec34 100644 --- a/Linphone/view/Item/EffectImage.qml +++ b/Linphone/view/Item/EffectImage.qml @@ -19,7 +19,7 @@ Loader { sourceComponent: Item { Image { id: image - visible: !effect2.enabled + visible: !effect2.effectEnabled source: mainItem.imageSource ? mainItem.imageSource : "" fillMode: mainItem.fillMode sourceSize.width: width @@ -34,18 +34,18 @@ Loader { anchors.fill: image source: image maskSource: image - brightness: effect2.enabled ? 1.0 : 0.0 + brightness: effect2.effectEnabled ? 1.0 : 0.0 } MultiEffect { id: effect2 visible: mainItem.useColor - enabled: mainItem.useColor + property bool effectEnabled: mainItem.useColor anchors.fill: effect source: effect maskSource: effect - colorizationColor: effect2.enabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black' - colorization: effect2.enabled ? 1.0: 0.0 + colorizationColor: effectEnabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black' + colorization: effectEnabled ? 1.0: 0.0 } } } diff --git a/Linphone/view/Layout/Call/CallLayout.qml b/Linphone/view/Layout/Call/CallLayout.qml index dde2ecb0..b1862c15 100644 --- a/Linphone/view/Layout/Call/CallLayout.qml +++ b/Linphone/view/Layout/Call/CallLayout.qml @@ -64,6 +64,26 @@ Item { } } } + + // ColumnLayout { + // id: waitingForParticipant + // Text { + // text: qsTr("Waiting for other participants...") + // color: DefaultStyle.frey_0 + // font { + // pixelSize: 30 * DefaultStyle.dp + // weight: 300 * DefaultStyle.dp + // } + // } + // Button { + // inversedColors: true + // text: qsTr("Share invitation") + // icon.source: AppIcons.shareNetwork + // color: DefaultStyle.main2_400 + // Layout.preferredWidth: 206 * DefaultStyle.dp + // Layout.preferredHeight: 47 * DefaultStyle.dp + // } + // } /* Sticker { id: preview diff --git a/Linphone/view/Layout/Meeting/AddParticipantsLayout.qml b/Linphone/view/Layout/Meeting/AddParticipantsLayout.qml index 0e7d1cc9..6b954aee 100644 --- a/Linphone/view/Layout/Meeting/AddParticipantsLayout.qml +++ b/Linphone/view/Layout/Meeting/AddParticipantsLayout.qml @@ -111,4 +111,7 @@ ColumnLayout { searchBarText: searchbar.text onContactAddedToSelection: participantList.positionViewAtEnd() } + Item { + Layout.fillHeight: true + } } \ No newline at end of file diff --git a/Linphone/view/Page/Main/MeetingPage.qml b/Linphone/view/Page/Main/MeetingPage.qml index 413a1b3f..e5cb179c 100644 --- a/Linphone/view/Page/Main/MeetingPage.qml +++ b/Linphone/view/Page/Main/MeetingPage.qml @@ -368,8 +368,9 @@ AbstractMainPage { inversedColors: true color: DefaultStyle.main2_600 background: Item{} + property var callObj onClicked: { - console.log("TODO: join conf", text) + callObj = UtilsCpp.createCall(mainItem.selectedConference.core.uri) } } Button { @@ -377,7 +378,10 @@ AbstractMainPage { Layout.preferredHeight: 24 * DefaultStyle.dp background: Item{} icon.source: AppIcons.shareNetwork - onClicked: UtilsCpp.copyToClipboard(confUri.text) + onClicked: { + UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri) + UtilsCpp.showInformationPopup(qsTr("Enregistré"), qsTr("Le lien de la réunion a été copié dans le presse-papiers")) + } } } RowLayout { @@ -513,7 +517,6 @@ AbstractMainPage { topPadding: 11 * DefaultStyle.dp bottomPadding: 11 * DefaultStyle.dp onClicked: { - console.log("TODO: join conf", mainItem.selectedConference.core.subject) console.log(mainItem.selectedConference.core.uri) UtilsCpp.setupConference(mainItem.selectedConference) }