add share link button participant list

This commit is contained in:
Gaelle Braud 2024-04-04 16:03:44 +02:00 committed by Julien Wadel
parent b834b7c669
commit fd57221713
5 changed files with 169 additions and 92 deletions

View file

@ -40,6 +40,12 @@ Window {
callObj = UtilsCpp.createCall(conferenceInfo.core.uri, withVideo)
}
}
Component {
id: popupComp
InformationPopup{}
}
function showInformationPopup(title, description, isSuccess) {
var infoPopup = popupComp.createObject(popupLayout, {"title": title, "description": description, "isSuccess": isSuccess})
infoPopup.index = popupLayout.popupList.length
@ -47,6 +53,23 @@ Window {
infoPopup.open()
}
ColumnLayout {
id: popupLayout
anchors.fill: parent
Layout.alignment: Qt.AlignBottom
property int nextY: mainWindow.height
property list<Popup> popupList
property int popupCount: popupList.length
spacing: 15
onPopupCountChanged: {
nextY = mainWindow.height
for(var i = 0; i < popupCount; ++i) {
popupList[i].y = nextY - popupList[i].height
nextY = nextY - popupList[i].height - 15
}
}
}
function changeLayout(layoutIndex) {
if (layoutIndex == 0) {
console.log("Set Grid layout")
@ -394,6 +417,7 @@ Window {
Layout.rightMargin: 10 * DefaultStyle.dp
visible: false
function replace(id) {
rightPanel.customHeaderButtons = null
contentStackView.replace(id, Control.StackView.Immediate)
}
headerStack.currentIndex: 0
@ -669,6 +693,33 @@ Window {
id: participantListComp
ParticipantListView {
id: participantList
Component {
id: headerbutton
PopupButton {
popup.contentItem: Button {
background: Item{}
contentItem: RowLayout {
EffectImage {
colorizationColor: DefaultStyle.main2_600
imageSource: AppIcons.shareNetwork
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
}
Text {
text: qsTr("Partager le lien de la réunion")
font.pixelSize: 14 * DefaultStyle.dp
}
}
onClicked: {
UtilsCpp.copyToClipboard(mainWindow.conference.core.uri)
UtilsCpp.showInformationPopup(qsTr("Copié"), qsTr("Le lien de la réunion a été copié dans le presse-papier"), true, mainWindow)
}
}
}
}
Control.StackView.onActivated: {
rightPanel.customHeaderButtons = headerbutton.createObject(rightPanel)
}
call: mainWindow.call
onAddParticipantRequested: participantsStack.push(addParticipantComp)
onCountChanged: if (participantsStack.Control.StackView.status === Control.StackView.Active && participantsStack.currentItem == participantList) {
@ -938,6 +989,25 @@ Window {
}
}
}
CheckableButton {
visible: false
checkable: false
checkedColor: DefaultStyle.main2_400
iconUrl: AppIcons.handWaving
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
}
CheckableButton {
visible: false
iconUrl: AppIcons.smiley
checkedColor: DefaultStyle.main2_400
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
}
CheckableButton {
visible: mainWindow.conference
iconUrl: AppIcons.usersTwo

View file

@ -33,105 +33,17 @@ ApplicationWindow {
mainWindowStackView.currentItem.transferCallSucceed()
}
Component {
id: popupComp
InformationPopup{}
}
function showInformationPopup(title, description, isSuccess) {
var infoPopup = popupComp.createObject(popupLayout, {"title": title, "description": description, "isSuccess": isSuccess})
// informationPopup.title = title
// informationPopup.description = description
// informationPopup.isSuccess = isSuccess
// infoPopup.y = popupLayout.nextY - infoPopup.height
infoPopup.index = popupLayout.popupList.length
popupLayout.popupList.push(infoPopup)
infoPopup.open()
}
Component {
id: popupComp
Popup {
id: informationPopup
property bool isSuccess: true
property string title
property string description
property int index
onAboutToShow: {
autoClosePopup.restart()
}
onAboutToHide: {
popupLayout.popupList.splice(informationPopup.index, 1)
}
closePolicy: Popup.NoAutoClose
x : parent.x + parent.width - width
// y : parent.y + parent.height - height
rightMargin: 20 * DefaultStyle.dp
bottomMargin: 20 * DefaultStyle.dp
padding: 20 * DefaultStyle.dp
underlineColor: informationPopup.isSuccess ? DefaultStyle.success_500main : DefaultStyle.danger_500main
radius: 0
onHoveredChanged: {
if (hovered) autoClosePopup.stop()
else autoClosePopup.restart()
}
Timer {
id: autoClosePopup
interval: 5000
onTriggered: {
informationPopup.close()
}
}
contentItem: RowLayout {
spacing: 15 * DefaultStyle.dp
EffectImage {
imageSource: informationPopup.isSuccess ? AppIcons.smiley : AppIcons.smileySad
colorizationColor: informationPopup.isSuccess ? DefaultStyle.success_500main : DefaultStyle.danger_500main
Layout.preferredWidth: 32 * DefaultStyle.dp
Layout.preferredHeight: 32 * DefaultStyle.dp
width: 32 * DefaultStyle.dp
height: 32 * DefaultStyle.dp
}
Rectangle {
Layout.preferredWidth: 1 * DefaultStyle.dp
Layout.preferredHeight: parent.height
color: DefaultStyle.main2_200
}
ColumnLayout {
RowLayout {
Layout.fillWidth: true
Text {
Layout.fillWidth: true
text: informationPopup.title
color: informationPopup.isSuccess ? DefaultStyle.success_500main : DefaultStyle.danger_500main
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
}
Button {
Layout.preferredWidth: 20 * DefaultStyle.dp
Layout.preferredHeight: 20 * DefaultStyle.dp
icon.width: 20 * DefaultStyle.dp
icon.height: 20 * DefaultStyle.dp
Layout.alignment: Qt.AlignTop | Qt.AlignRight
visible: informationPopup.hovered || hovered
background: Item{}
icon.source: AppIcons.closeX
onClicked: informationPopup.close()
}
}
Text {
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
Layout.maximumWidth: 300 * DefaultStyle.dp
text: informationPopup.description
wrapMode: Text.WordWrap
color: DefaultStyle.main2_500main
font {
pixelSize: 12 * DefaultStyle.dp
weight: 300 * DefaultStyle.dp
}
}
}
}
}
}
ColumnLayout {
id: popupLayout

View file

@ -58,6 +58,7 @@ list(APPEND _LINPHONEAPP_QML_FILES
view/Item/EffectImage.qml
view/Item/ErrorText.qml
view/Item/IconLabelButton.qml
view/Item/InformationPopup.qml
view/Item/MovableMouseArea.qml
view/Item/NumericPad.qml
view/Item/PhoneNumberComboBox.qml

View file

@ -7,6 +7,7 @@ Control.Page {
id: mainItem
property alias headerStack: headerStack
property alias contentStackView: contentStackView
property alias customHeaderButtons: customButtonLayout.children
property bool closeButtonVisible: true
clip: true
@ -62,6 +63,9 @@ Control.Page {
weight: 800 * DefaultStyle.dp
}
}
RowLayout {
id: customButtonLayout
}
Button {
id: closeButton
visible: mainItem.closeButtonVisible

View file

@ -0,0 +1,90 @@
import QtQuick 2.15
import QtQuick.Layouts 1.3
import QtQuick.Controls
import Linphone
Popup {
id: mainItem
property bool isSuccess: true
property string title
property string description
property int index
onAboutToShow: {
autoClosePopup.restart()
}
onAboutToHide: {
popupLayout.popupList.splice(mainItem.index, 1)
}
closePolicy: Popup.NoAutoClose
x : parent.x + parent.width - width
// y : parent.y + parent.height - height
rightMargin: 20 * DefaultStyle.dp
bottomMargin: 20 * DefaultStyle.dp
padding: 20 * DefaultStyle.dp
underlineColor: mainItem.isSuccess ? DefaultStyle.success_500main : DefaultStyle.danger_500main
radius: 0
onHoveredChanged: {
if (hovered) autoClosePopup.stop()
else autoClosePopup.restart()
}
Timer {
id: autoClosePopup
interval: 5000
onTriggered: {
mainItem.close()
}
}
contentItem: RowLayout {
spacing: 15 * DefaultStyle.dp
EffectImage {
imageSource: mainItem.isSuccess ? AppIcons.smiley : AppIcons.smileySad
colorizationColor: mainItem.isSuccess ? DefaultStyle.success_500main : DefaultStyle.danger_500main
Layout.preferredWidth: 32 * DefaultStyle.dp
Layout.preferredHeight: 32 * DefaultStyle.dp
width: 32 * DefaultStyle.dp
height: 32 * DefaultStyle.dp
}
Rectangle {
Layout.preferredWidth: 1 * DefaultStyle.dp
Layout.preferredHeight: parent.height
color: DefaultStyle.main2_200
}
ColumnLayout {
RowLayout {
Layout.fillWidth: true
Text {
Layout.fillWidth: true
text: mainItem.title
color: mainItem.isSuccess ? DefaultStyle.success_500main : DefaultStyle.danger_500main
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
}
Button {
Layout.preferredWidth: 20 * DefaultStyle.dp
Layout.preferredHeight: 20 * DefaultStyle.dp
icon.width: 20 * DefaultStyle.dp
icon.height: 20 * DefaultStyle.dp
Layout.alignment: Qt.AlignTop | Qt.AlignRight
visible: mainItem.hovered || hovered
background: Item{}
icon.source: AppIcons.closeX
onClicked: mainItem.close()
}
}
Text {
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
Layout.maximumWidth: 300 * DefaultStyle.dp
text: mainItem.description
wrapMode: Text.WordWrap
color: DefaultStyle.main2_500main
font {
pixelSize: 12 * DefaultStyle.dp
weight: 300 * DefaultStyle.dp
}
}
}
}
}