change layout panel + fix button ui

This commit is contained in:
Gaelle Braud 2024-04-03 16:15:18 +02:00 committed by Julien Wadel
parent 19840b30f3
commit 37b5ac5292
32 changed files with 364 additions and 182 deletions

View file

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27.2819 5.73328H4.71779C4.17375 5.73328 3.652 5.94939 3.26731 6.33408C2.88262 6.71877 2.6665 7.24052 2.6665 7.78456V24.1948C2.6665 24.7388 2.88262 25.2606 3.26731 25.6453C3.652 26.03 4.17375 26.2461 4.71779 26.2461H27.2819C27.8259 26.2461 28.3477 26.03 28.7324 25.6453C29.1171 25.2606 29.3332 24.7388 29.3332 24.1948V7.78456C29.3332 7.24052 29.1171 6.71877 28.7324 6.33408C28.3477 5.94939 27.8259 5.73328 27.2819 5.73328ZM4.71779 7.78456H27.2819V14.964H18.0511C17.5071 14.964 16.9853 15.1802 16.6006 15.5649C16.216 15.9495 15.9998 16.4713 15.9998 17.0153V24.1948H4.71779V7.78456ZM27.2819 24.1948H18.0511V17.0153H27.2819V24.1948Z" fill="#6C7A87"/>
</svg>

After

Width:  |  Height:  |  Size: 760 B

View file

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27 6H5C4.46957 6 3.96086 6.21071 3.58579 6.58579C3.21071 6.96086 3 7.46957 3 8V24C3 24.5304 3.21071 25.0391 3.58579 25.4142C3.96086 25.7893 4.46957 26 5 26H27C27.5304 26 28.0391 25.7893 28.4142 25.4142C28.7893 25.0391 29 24.5304 29 24V8C29 7.46957 28.7893 6.96086 28.4142 6.58579C28.0391 6.21071 27.5304 6 27 6ZM5 8H27V15H18C17.4696 15 16.9609 15.2107 16.5858 15.5858C16.2107 15.9609 16 16.4696 16 17V24H5V8ZM27 24H18V17H27V24Z" fill="#343330"/>
</svg>

After

Width:  |  Height:  |  Size: 559 B

View file

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13 5H7C6.46957 5 5.96086 5.21071 5.58579 5.58579C5.21071 5.96086 5 6.46957 5 7V13C5 13.5304 5.21071 14.0391 5.58579 14.4142C5.96086 14.7893 6.46957 15 7 15H13C13.5304 15 14.0391 14.7893 14.4142 14.4142C14.7893 14.0391 15 13.5304 15 13V7C15 6.46957 14.7893 5.96086 14.4142 5.58579C14.0391 5.21071 13.5304 5 13 5ZM13 13H7V7H13V13ZM25 5H19C18.4696 5 17.9609 5.21071 17.5858 5.58579C17.2107 5.96086 17 6.46957 17 7V13C17 13.5304 17.2107 14.0391 17.5858 14.4142C17.9609 14.7893 18.4696 15 19 15H25C25.5304 15 26.0391 14.7893 26.4142 14.4142C26.7893 14.0391 27 13.5304 27 13V7C27 6.46957 26.7893 5.96086 26.4142 5.58579C26.0391 5.21071 25.5304 5 25 5ZM25 13H19V7H25V13ZM13 17H7C6.46957 17 5.96086 17.2107 5.58579 17.5858C5.21071 17.9609 5 18.4696 5 19V25C5 25.5304 5.21071 26.0391 5.58579 26.4142C5.96086 26.7893 6.46957 27 7 27H13C13.5304 27 14.0391 26.7893 14.4142 26.4142C14.7893 26.0391 15 25.5304 15 25V19C15 18.4696 14.7893 17.9609 14.4142 17.5858C14.0391 17.2107 13.5304 17 13 17ZM13 25H7V19H13V25ZM25 17H19C18.4696 17 17.9609 17.2107 17.5858 17.5858C17.2107 17.9609 17 18.4696 17 19V25C17 25.5304 17.2107 26.0391 17.5858 26.4142C17.9609 26.7893 18.4696 27 19 27H25C25.5304 27 26.0391 26.7893 26.4142 26.4142C26.7893 26.0391 27 25.5304 27 25V19C27 18.4696 26.7893 17.9609 26.4142 17.5858C26.0391 17.2107 25.5304 17 25 17ZM25 25H19V19H25V25Z" fill="#343330"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 12V20C7 20.2652 6.89464 20.5196 6.70711 20.7071C6.51957 20.8946 6.26522 21 6 21C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V12C5 11.7348 5.10536 11.4804 5.29289 11.2929C5.48043 11.1054 5.73478 11 6 11C6.26522 11 6.51957 11.1054 6.70711 11.2929C6.89464 11.4804 7 11.7348 7 12ZM11 3C10.7348 3 10.4804 3.10536 10.2929 3.29289C10.1054 3.48043 10 3.73478 10 4V28C10 28.2652 10.1054 28.5196 10.2929 28.7071C10.4804 28.8946 10.7348 29 11 29C11.2652 29 11.5196 28.8946 11.7071 28.7071C11.8946 28.5196 12 28.2652 12 28V4C12 3.73478 11.8946 3.48043 11.7071 3.29289C11.5196 3.10536 11.2652 3 11 3ZM16 7C15.7348 7 15.4804 7.10536 15.2929 7.29289C15.1054 7.48043 15 7.73478 15 8V24C15 24.2652 15.1054 24.5196 15.2929 24.7071C15.4804 24.8946 15.7348 25 16 25C16.2652 25 16.5196 24.8946 16.7071 24.7071C16.8946 24.5196 17 24.2652 17 24V8C17 7.73478 16.8946 7.48043 16.7071 7.29289C16.5196 7.10536 16.2652 7 16 7ZM21 11C20.7348 11 20.4804 11.1054 20.2929 11.2929C20.1054 11.4804 20 11.7348 20 12V20C20 20.2652 20.1054 20.5196 20.2929 20.7071C20.4804 20.8946 20.7348 21 21 21C21.2652 21 21.5196 20.8946 21.7071 20.7071C21.8946 20.5196 22 20.2652 22 20V12C22 11.7348 21.8946 11.4804 21.7071 11.2929C21.5196 11.1054 21.2652 11 21 11ZM26 9C25.7348 9 25.4804 9.10536 25.2929 9.29289C25.1054 9.48043 25 9.73478 25 10V22C25 22.2652 25.1054 22.5196 25.2929 22.7071C25.4804 22.8946 25.7348 23 26 23C26.2652 23 26.5196 22.8946 26.7071 22.7071C26.8946 22.5196 27 22.2652 27 22V10C27 9.73478 26.8946 9.48043 26.7071 9.29289C26.5196 9.10536 26.2652 9 26 9Z" fill="#343330"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -44,6 +44,17 @@ Window {
infoPopup.open()
}
function changeLayout(layoutIndex) {
if (layoutIndex == 0) {
console.log("TODO : set mosaic layout")
} else if (layoutIndex == 1) {
console.log("TODO : set pip layout")
} else {
console.log("TODO : set audio layout")
}
console.log("+ change settings default layout")
}
Connections {
enabled: call != undefined && call != null
target: call && call.core
@ -435,19 +446,68 @@ Window {
}
}
}
Component {
id: changeLayoutPanel
ColumnLayout {
Control.StackView.onActivated: rightPanel.headerTitleText = qsTr("Modifier la disposition")
spacing: 12 * DefaultStyle.dp
Text {
Layout.fillWidth: true
text: qsTr("La disposition choisie sera enregistrée pour vos prochaines réunions")
font.pixelSize: 14 * DefaultStyle.dp
}
RoundedBackgroundControl {
Layout.fillWidth: true
contentItem: ColumnLayout {
Repeater {
model: [
{text: qsTr("Mosaïque"), imgUrl: AppIcons.squaresFour},
{text: qsTr("Intervenant actif"), imgUrl: AppIcons.pip},
{text: qsTr("Audio seulement"), imgUrl: AppIcons.waveform}
]
RadioButton {
id: radiobutton
color: DefaultStyle.main1_500_main
indicatorSize: 20 * DefaultStyle.dp
leftPadding: indicator.width + spacing
spacing: 8 * DefaultStyle.dp
Component.onCompleted: {
console.log("TODO : set checked true if is current layout")
if (index == 0) checked = true
}
contentItem: RowLayout {
spacing: 5 * DefaultStyle.dp
EffectImage {
id: radioButtonImg
Layout.preferredWidth: 32 * DefaultStyle.dp
Layout.preferredHeight: 32 * DefaultStyle.dp
imageSource: modelData.imgUrl
colorizationColor: DefaultStyle.main2_500main
}
Text {
text: modelData.text
color: DefaultStyle.main2_500main
verticalAlignment: Text.AlignVCenter
font.pixelSize: 14 * DefaultStyle.dp
Layout.fillWidth: true
}
}
onCheckedChanged: if (checked) mainWindow.changeLayout(index)
}
}
}
}
Item {Layout.fillHeight: true}
}
}
Component {
id: callsListPanel
ColumnLayout {
Control.StackView.onActivated: rightPanel.headerTitleText = qsTr("Liste d'appel")
RoundedBackgroundControl {
Layout.fillWidth: true
Layout.preferredHeight: Math.min(callList.implicitHeight + topPadding + bottomPadding, rightPanel.height)
topPadding: 15 * DefaultStyle.dp
bottomPadding: 15 * DefaultStyle.dp
leftPadding: 15 * DefaultStyle.dp
rightPadding: 15 * DefaultStyle.dp
backgroundColor: mainWindow.conference ? DefaultStyle.grey_0 : DefaultStyle.main2_0
Layout.maximumHeight: rightPanel.height
visible: callList.contentHeight > 0
contentItem: ListView {
id: callList
@ -498,8 +558,8 @@ Window {
Layout.alignment: Qt.AlignRight
popup.contentItem: ColumnLayout {
spacing: 0
Control.Button {
// spacing: 0
Button {
background: Item {}
contentItem: RowLayout {
Image {
@ -529,7 +589,7 @@ Window {
}
onClicked: modelData.core.lSetPaused(!modelData.core.paused)
}
Control.Button {
Button {
background: Item {}
contentItem: RowLayout {
EffectImage {
@ -738,6 +798,8 @@ Window {
icon.source: AppIcons.endCall
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
Layout.preferredWidth: 75 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
contentImageColor: DefaultStyle.grey_0
checkable: false
Layout.column: mainWindow.callState == LinphoneEnums.CallState.OutgoingInit
@ -746,8 +808,6 @@ Window {
|| mainWindow.callState == LinphoneEnums.CallState.OutgoingEarlyMedia
|| mainWindow.callState == LinphoneEnums.CallState.IncomingReceived
? 0 : bottomButtonsLayout.columns - 1
Layout.preferredWidth: 75 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
background: Rectangle {
anchors.fill: parent
color: DefaultStyle.danger_500main
@ -767,6 +827,8 @@ Window {
id: pauseButton
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
background: Rectangle {
anchors.fill: parent
radius: 71 * DefaultStyle.dp
@ -790,9 +852,9 @@ Window {
icon.source: AppIcons.transferCall
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * 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
@ -812,6 +874,8 @@ Window {
icon.source: AppIcons.newCall
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
onClicked: {
var mainWin = UtilsCpp.getMainWindow()
UtilsCpp.smartShowWindow(mainWin)
@ -835,6 +899,8 @@ Window {
checked: mainWindow.call && !mainWindow.call.core.cameraEnabled
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
onCheckedChanged: mainWindow.call.core.lSetCameraEnabled(!mainWindow.call.core.cameraEnabled)
}
CheckableButton {
@ -843,6 +909,8 @@ Window {
checked: mainWindow.call && mainWindow.call.core.microphoneMuted
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
onCheckedChanged: mainWindow.call.core.lSetMicrophoneMuted(!mainWindow.call.core.microphoneMuted)
}
CheckableButton {
@ -852,6 +920,8 @@ Window {
checkedColor: DefaultStyle.main2_400
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
onCheckedChanged: {
if (checked) {
rightPanel.visible = true
@ -867,14 +937,12 @@ Window {
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.enabled
? moreOptionsButton.checked
? DefaultStyle.grey_0
? DefaultStyle.main2_400
: DefaultStyle.grey_500
: DefaultStyle.grey_600
radius: 40 * DefaultStyle.dp
@ -887,90 +955,81 @@ Window {
moreOptionsButton.popup.y = - moreOptionsButton.popup.height + moreOptionsButton.height/4
}
}
component MenuButton: Button {
background: Item{}
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
textColor: down ? DefaultStyle.main1_500_main : DefaultStyle.main2_500main
contentImageColor: down ? DefaultStyle.main1_500_main : DefaultStyle.main2_500main
textSize: 14 * DefaultStyle.dp
textWeight: 400 * DefaultStyle.dp
spacing: 5 * DefaultStyle.dp
}
popup.contentItem: ColumnLayout {
id: optionsList
spacing: 10 * DefaultStyle.dp
Button {
id: callListButton
spacing: 5 * DefaultStyle.dp
MenuButton {
visible: mainWindow.conference
Layout.fillWidth: true
background: Item {}
contentItem: RowLayout {
Image {
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
fillMode: Image.PreserveAspectFit
source: AppIcons.callList
}
Text {
text: qsTr("Liste d'appel")
}
icon.source: AppIcons.squaresFour
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
text: qsTr("Modifier la disposition")
onClicked: {
rightPanel.visible = true
rightPanel.replace(changeLayoutPanel)
moreOptionsButton.close()
}
}
MenuButton {
icon.source: AppIcons.callList
Layout.fillWidth: true
text: qsTr("Liste d'appel")
onClicked: {
rightPanel.visible = true
rightPanel.replace(callsListPanel)
moreOptionsButton.close()
}
}
Button {
id: dialerButton
MenuButton {
icon.source: AppIcons.dialer
text: qsTr("Dialer")
Layout.fillWidth: true
background: Item {}
contentItem: RowLayout {
Image {
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
fillMode: Image.PreserveAspectFit
source: AppIcons.dialer
}
Text {
text: qsTr("Dialer")
}
}
onClicked: {
rightPanel.visible = true
rightPanel.replace(dialerPanel)
moreOptionsButton.close()
}
}
Button {
id: recordButton
Layout.fillWidth: true
enabled: mainWindow.call && mainWindow.call.core.recordable
MenuButton {
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 && mainWindow.call.core.recording ? mainWindow.call.core.lStopRecording() : mainWindow.call.core.lStartRecording()
enabled: mainWindow.call && mainWindow.call.core.recordable
icon.source: AppIcons.recordFill
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
contentImageColor: down
? DefaultStyle.main1_500_main
:mainWindow.call && mainWindow.call.core.recording
? DefaultStyle.danger_500main
: DefaultStyle.main2_500main
text: mainWindow.call && mainWindow.call.core.recording ? qsTr("Terminer l'enregistrement") : qsTr("Enregistrer l'appel")
textColor: down
? DefaultStyle.main1_500_main
:mainWindow.call && mainWindow.call.core.recording
? DefaultStyle.danger_500main
: DefaultStyle.main2_500main
Layout.fillWidth: true
onCheckedChanged: {
if (mainWindow.call)
if (mainWindow.call.core.recording) mainWindow.call.core.lStopRecording()
else mainWindow.call.core.lStartRecording()
}
}
Button {
id: settingsButton
MenuButton {
Layout.fillWidth: true
background: Item{}
contentItem: RowLayout {
Image {
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
source: AppIcons.settings
}
Text {
text: qsTr("Paramètres")
}
}
icon.source: AppIcons.settings
text: qsTr("Paramètres")
onClicked: {
rightPanel.visible = true
rightPanel.replace(settingsPanel)

View file

@ -107,6 +107,8 @@ ApplicationWindow {
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{}

View file

@ -62,6 +62,7 @@ list(APPEND _LINPHONEAPP_QML_FILES
view/Item/PhoneNumberInput.qml
view/Item/Popup.qml
view/Item/PopupButton.qml
view/Item/SecurityRadioButton.qml
view/Item/RadioButton.qml
view/Item/RectangleTest.qml
view/Item/RoundedBackgroundControl.qml

View file

@ -18,8 +18,6 @@ Control.Button {
property bool shadowEnabled: false
property var contentImageColor
hoverEnabled: true
icon.width: width
icon.height: height
// leftPadding: 20 * DefaultStyle.dp
// rightPadding: 20 * DefaultStyle.dp
@ -105,12 +103,18 @@ Control.Button {
width: mainItem.width
RowLayout {
spacing: 10 * DefaultStyle.dp
ButtonImage{}
spacing: mainItem.spacing
ButtonImage{
Layout.preferredWidth: mainItem.icon.width
Layout.preferredHeight: mainItem.icon.height
}
ButtonText{}
}
ButtonText {}
ButtonImage{}
ButtonImage{
Layout.preferredWidth: mainItem.icon.width
Layout.preferredHeight: mainItem.icon.height
}
Item {
Layout.fillWidth : true
Layout.fillHeight : true

View file

@ -45,8 +45,10 @@ ListView {
Layout.fillWidth: true
}
Button {
Layout.preferredWidth: 10 * DefaultStyle.dp
Layout.preferredWidth: 20 * DefaultStyle.dp
Layout.preferredHeight: 20 * DefaultStyle.dp
icon.width: width
icon.height: height
background: Item{}
icon.source: AppIcons.leftArrow
onClicked: if (mainItem.currentIndex > 0) --mainItem.currentIndex
@ -54,6 +56,8 @@ ListView {
Button {
Layout.preferredWidth: 20 * DefaultStyle.dp
Layout.preferredHeight: 20 * DefaultStyle.dp
icon.width: width
icon.height: height
background: Item{}
icon.source: AppIcons.rightArrow
onClicked: if (mainItem.currentIndex < mainItem.count) ++mainItem.currentIndex

View file

@ -50,6 +50,8 @@ Item {
icon.source:AppIcons.closeX
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
contentItem: Image {
anchors.fill: parent
source: AppIcons.closeX

View file

@ -21,7 +21,6 @@ ColumnLayout {
Control.StackView.onActivated: {
rightPanelTitle.text = qsTr("Paramètres")
}
backgroundColor: DefaultStyle.main2_0
height: contentItem.implicitHeight + topPadding + bottomPadding
Layout.fillWidth: true
topPadding: 25 * DefaultStyle.dp

View file

@ -17,7 +17,9 @@ Control.Page {
signal validateRequested()
topPadding: 16 * DefaultStyle.dp
leftPadding: 16 * DefaultStyle.dp
bottomPadding: 16 * DefaultStyle.dp
leftPadding: 17 * DefaultStyle.dp
rightPadding: 17 * DefaultStyle.dp
background: Rectangle {
width: mainItem.width

View file

@ -41,6 +41,8 @@ RowLayout {
contentImageColor: DefaultStyle.main2_0
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
onCheckedChanged: mainItem.cameraEnabled = !mainItem.cameraEnabled
}
CheckableButton {
@ -51,6 +53,8 @@ RowLayout {
contentImageColor: DefaultStyle.main2_0
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
onCheckedChanged: mainItem.microEnabled = !mainItem.microEnabled
}
CheckableButton {
@ -62,6 +66,8 @@ RowLayout {
contentImageColor: checked ? DefaultStyle.grey_500 : DefaultStyle.grey_0
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
}
CheckableButton {
id: speakerButton
@ -72,6 +78,8 @@ RowLayout {
contentImageColor: checked ? DefaultStyle.grey_500 : DefaultStyle.grey_0
Layout.preferredWidth: 55 * DefaultStyle.dp
Layout.preferredHeight: 55 * DefaultStyle.dp
icon.width: 32 * DefaultStyle.dp
icon.height: 32 * DefaultStyle.dp
}
}
}

View file

@ -36,6 +36,8 @@ ColumnLayout {
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.source: AppIcons.closeX
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: {
// contact.core.pictureUri = mainItem.oldPictureUri
mainItem.contact.core.undo()
@ -166,6 +168,8 @@ ColumnLayout {
icon.source: AppIcons.closeX
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: mainItem.contact.core.removeAddress(index)
}
}
@ -209,6 +213,8 @@ ColumnLayout {
icon.source: AppIcons.closeX
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: mainItem.contact.core.removePhoneNumber(index)
}
}

View file

@ -26,6 +26,8 @@ Loader {
sourceSize.height: height
width: mainItem.imageWidth
height: mainItem.imageHeight
Layout.preferredWidth: mainItem.imageWidth
Layout.preferredHeight: mainItem.imageHeight
anchors.centerIn: parent
}
MultiEffect {

View file

@ -37,6 +37,8 @@ ColumnLayout {
icon.source: AppIcons.leftArrow
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: mainItem.returnRequested()
}
TextInput {
@ -118,6 +120,8 @@ ColumnLayout {
CheckableButton {
Layout.preferredWidth: 151 * DefaultStyle.dp
icon.source: AppIcons.usersThree
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
enabled: false
text: qsTr("Réunion")
checked: true
@ -126,6 +130,8 @@ ColumnLayout {
Layout.preferredWidth: 151 * DefaultStyle.dp
enabled: false
icon.source: AppIcons.slide
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
text: qsTr("Broadcast")
}
}
@ -477,6 +483,8 @@ ColumnLayout {
Button {
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
Layout.rightMargin: 10 * DefaultStyle.dp
background: Item{}
icon.source: AppIcons.closeX

View file

@ -54,6 +54,8 @@ Control.Popup {
icon.source: AppIcons.closeX
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: mainItem.close()
}
}

View file

@ -17,8 +17,8 @@ Button {
topPadding: 0
bottomPadding: 0
icon.source: AppIcons.more
icon.width: width
icon.height: height
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
function close() {
popup.close()
}
@ -44,6 +44,7 @@ Button {
x: - width
y: mainItem.height
closePolicy: Popup.CloseOnPressOutsideParent | Popup.CloseOnPressOutside
padding: 10 * DefaultStyle.dp
parent: mainItem // Explicit define for coordinates references.
onAboutToShow: {
@ -57,8 +58,6 @@ Button {
}
}
padding: 20 * DefaultStyle.dp
background: Item {
anchors.fill: parent
Rectangle {

View file

@ -10,6 +10,7 @@ Control.RadioButton {
property string imgUrl
property color color
hoverEnabled: true
property int indicatorSize: 16 * DefaultStyle.dp
MouseArea {
anchors.fill: parent
@ -18,82 +19,23 @@ Control.RadioButton {
onClicked: if (!mainItem.checked) mainItem.toggle()
}
background: Rectangle {
color: DefaultStyle.grey_100
border.color: mainItem.checked ? mainItem.color : "transparent"
radius: 20 * DefaultStyle.dp
}
indicator: Rectangle {
implicitWidth: mainItem.indicatorSize
implicitHeight: mainItem.indicatorSize
radius: implicitWidth/2
color: "transparent"
border.color: mainItem.color
border.width: 2 * DefaultStyle.dp
anchors.verticalCenter: mainItem.verticalCenter
indicator: RowLayout {
anchors.left: parent.left
anchors.leftMargin: 13 * DefaultStyle.dp
anchors.top: parent.top
anchors.topMargin: 8 * DefaultStyle.dp
spacing: 4 * DefaultStyle.dp
Rectangle {
implicitWidth: 16 * DefaultStyle.dp
implicitHeight: 16 * DefaultStyle.dp
radius: implicitWidth/2
border.color: mainItem.color
Rectangle {
width: parent.width/2
height: parent.height/2
x: parent.width/4
y: parent.width/4
radius: width/2
color: mainItem.color
visible: mainItem.checked
}
}
Text {
text: mainItem.title
font.bold: true
color: DefaultStyle.grey_900
font.pixelSize: 16 * DefaultStyle.dp
}
Button {
padding: 0
background: Item {
visible: false
}
icon.source: AppIcons.info
Layout.preferredWidth: 2 * DefaultStyle.dp
Layout.preferredHeight: 2 * DefaultStyle.dp
width: 2 * DefaultStyle.dp
height: 2 * DefaultStyle.dp
}
}
contentItem: ColumnLayout {
anchors.top: indicator.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 13 * DefaultStyle.dp
RowLayout {
Layout.fillWidth: true
Layout.fillHeight: true
Layout.bottomMargin: 10 * DefaultStyle.dp
Layout.rightMargin: 10 * DefaultStyle.dp
Layout.alignment: Qt.AlignVCenter
Text {
id: innerText
verticalAlignment: Text.AlignVCenter
Layout.preferredWidth: 220 * DefaultStyle.dp
Layout.preferredHeight: 100 * DefaultStyle.dp
font.pixelSize: 14 * DefaultStyle.dp
text: mainItem.contentText
Layout.fillHeight: true
}
Image {
id: image
Layout.fillHeight: true
Layout.preferredWidth: 100 * DefaultStyle.dp
Layout.preferredHeight: 100 * DefaultStyle.dp
fillMode: Image.PreserveAspectFit
source: mainItem.imgUrl
}
width: parent.width/2
height: parent.height/2
x: parent.width/4
y: parent.width/4
radius: width/2
color: mainItem.color
visible: mainItem.checked
}
}
}

View file

@ -11,9 +11,5 @@ Control.Control {
anchors.fill: parent
radius: 15 * DefaultStyle.dp
color: mainItem.backgroundColor
anchors.leftMargin: 10 * DefaultStyle.dp
anchors.rightMargin: 10 * DefaultStyle.dp
anchors.topMargin: 10 * DefaultStyle.dp
anchors.bottomMargin: 10 * DefaultStyle.dp
}
}

View file

@ -82,6 +82,8 @@ Rectangle {
icon.source: dialerButton.checked ? AppIcons.dialerSelected : AppIcons.dialer
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 15 * DefaultStyle.dp
@ -99,6 +101,8 @@ Rectangle {
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.source: AppIcons.closeX
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right

View file

@ -0,0 +1,102 @@
import QtQuick 2.7
import QtQuick.Controls 2.2 as Control
import QtQuick.Layouts
import Linphone
Control.RadioButton {
id: mainItem
property string title
property string contentText
property string imgUrl
property color color
hoverEnabled: true
MouseArea {
anchors.fill: parent
hoverEnabled: false
cursorShape: mainItem.hovered ? Qt.PointingHandCursor : Qt.ArrowCursor
onClicked: if (!mainItem.checked) mainItem.toggle()
}
background: Rectangle {
color: DefaultStyle.grey_100
border.color: mainItem.checked ? mainItem.color : "transparent"
radius: 20 * DefaultStyle.dp
}
indicator: RowLayout {
anchors.left: parent.left
anchors.leftMargin: 13 * DefaultStyle.dp
anchors.top: parent.top
anchors.topMargin: 8 * DefaultStyle.dp
spacing: 4 * DefaultStyle.dp
Rectangle {
implicitWidth: 16 * DefaultStyle.dp
implicitHeight: 16 * DefaultStyle.dp
radius: implicitWidth/2
border.color: mainItem.color
Rectangle {
width: parent.width/2
height: parent.height/2
x: parent.width/4
y: parent.width/4
radius: width/2
color: mainItem.color
visible: mainItem.checked
}
}
Text {
visible: mainItem.title.length > 0
text: mainItem.title
font.bold: true
color: DefaultStyle.grey_900
font.pixelSize: 16 * DefaultStyle.dp
}
Button {
padding: 0
background: Item {
visible: false
}
icon.source: AppIcons.info
Layout.preferredWidth: 2 * DefaultStyle.dp
Layout.preferredHeight: 2 * DefaultStyle.dp
width: 2 * DefaultStyle.dp
height: 2 * DefaultStyle.dp
icon.width: 2 * DefaultStyle.dp
icon.height: 2 * DefaultStyle.dp
}
}
contentItem: ColumnLayout {
anchors.top: indicator.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 13 * DefaultStyle.dp
RowLayout {
Layout.fillWidth: true
Layout.fillHeight: true
Layout.bottomMargin: 10 * DefaultStyle.dp
Layout.rightMargin: 10 * DefaultStyle.dp
Layout.alignment: Qt.AlignVCenter
Text {
id: innerText
verticalAlignment: Text.AlignVCenter
Layout.preferredWidth: 220 * DefaultStyle.dp
Layout.preferredHeight: 100 * DefaultStyle.dp
font.pixelSize: 14 * DefaultStyle.dp
text: mainItem.contentText
Layout.fillHeight: true
}
Image {
id: image
Layout.fillHeight: true
Layout.preferredWidth: 100 * DefaultStyle.dp
Layout.preferredHeight: 100 * DefaultStyle.dp
fillMode: Image.PreserveAspectFit
source: mainItem.imgUrl
}
}
}
}

View file

@ -106,6 +106,8 @@ Control.TextField {
icon.source: eyeButton.checked ? AppIcons.eyeShow : AppIcons.eyeHide
width: 20 * DefaultStyle.dp
height: 20 * DefaultStyle.dp
icon.width: 20 * DefaultStyle.dp
icon.height: 20 * DefaultStyle.dp
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right

View file

@ -31,6 +31,8 @@ ColumnLayout {
contentImageColor: DefaultStyle.main1_500_main
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: mainItem.returnRequested()
}
Text {
@ -91,6 +93,8 @@ ColumnLayout {
Layout.preferredHeight: 24 * DefaultStyle.dp
background: Item{}
icon.source: AppIcons.closeX
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
contentImageColor: DefaultStyle.main1_500_main
onClicked: contactList.selectedContacts.splice(index, 1)
}

View file

@ -18,6 +18,8 @@ LoginLayout {
Layout.preferredHeight: 27 * DefaultStyle.dp
Layout.preferredWidth: 27 * DefaultStyle.dp
icon.source: AppIcons.leftArrow
icon.width: 27 * DefaultStyle.dp
icon.height: 27 * DefaultStyle.dp
background: Rectangle {
color: "transparent"
}

View file

@ -14,6 +14,8 @@ LoginLayout {
Layout.preferredHeight: 24 * DefaultStyle.dp
Layout.preferredWidth: 24 * DefaultStyle.dp
icon.source: AppIcons.leftArrow
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
background: Rectangle {
color: "transparent"
}

View file

@ -15,8 +15,8 @@ LoginLayout {
Layout.preferredHeight: 24 * DefaultStyle.dp
Layout.preferredWidth: 24 * DefaultStyle.dp
icon.source: AppIcons.leftArrow
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
background: Item {
anchors.fill: parent
}

View file

@ -45,7 +45,7 @@ LoginLayout {
{checked: true, title: qsTr("Chiffrement de bout en bout"), text: qsTr("Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges."), imgUrl: AppIcons.chiffrement, color: DefaultStyle.info_500_main},
{checked: false, title: qsTr("Interoperable"), text: qsTr("Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec nimporte quelle autre service SIP."), imgUrl: AppIcons.interoperable, color: DefaultStyle.main1_500_main}
]
RadioButton {
SecurityRadioButton {
title: modelData.title
contentText: modelData.text
imgUrl: modelData.imgUrl

View file

@ -118,6 +118,8 @@ AbstractMainPage {
icon.source: AppIcons.newCall
Layout.preferredWidth: 28 * DefaultStyle.dp
Layout.preferredHeight: 28 * DefaultStyle.dp
icon.width: 28 * DefaultStyle.dp
icon.height: 28 * DefaultStyle.dp
onClicked: {
console.debug("[CallPage]User: create new call")
listStackView.push(newCallItem)
@ -265,6 +267,8 @@ AbstractMainPage {
icon.source: AppIcons.phone
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: {
var addr = UtilsCpp.generateLinphoneSipAddress(modelData.core.remoteAddress)
callObj = UtilsCpp.createCall(addr)
@ -333,6 +337,8 @@ AbstractMainPage {
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.source: AppIcons.leftArrow
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: {
console.debug("[CallPage]User: return to call history")
listStackView.pop()

View file

@ -84,8 +84,8 @@ AbstractMainPage {
icon.source: AppIcons.plusCircle
Layout.preferredWidth: 30 * DefaultStyle.dp
Layout.preferredHeight: 30 * DefaultStyle.dp
width: 30 * DefaultStyle.dp
height: 30 * DefaultStyle.dp
icon.width: 30 * DefaultStyle.dp
icon.height: 30 * DefaultStyle.dp
onClicked: {
mainItem.createContact("", "")
}
@ -161,6 +161,8 @@ AbstractMainPage {
icon.source: favoriteList.visible ? AppIcons.upArrow : AppIcons.downArrow
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: favoriteList.visible = !favoriteList.visible
}
}
@ -203,6 +205,8 @@ AbstractMainPage {
icon.source: contactList.visible ? AppIcons.upArrow : AppIcons.downArrow
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: contactList.visible = !contactList.visible
}
}
@ -253,6 +257,8 @@ AbstractMainPage {
buttonContent: Button {
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
background: Item{}
onClicked: mainItem.editContact(mainItem.selectedContact)
icon.source: AppIcons.pencil
@ -326,6 +332,8 @@ AbstractMainPage {
icon.source: AppIcons.phone
width: 24 * DefaultStyle.dp
height: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: {
callObj = UtilsCpp.createCall(modelData.address)
}

View file

@ -16,15 +16,13 @@ AbstractMainPage {
property ConferenceInfoGui selectedConference
property int meetingListCount
signal newConfCreated()
onVisibleChanged: if (visible) rightPanelStackView.push(overridenRightPanel, Control.StackView.Immediate)
Component.onCompleted: rightPanelStackView.push(overridenRightPanel, Control.StackView.Immediate)
onSelectedConferenceChanged: {
overridenRightPanelStackView.clear()
if (selectedConference) {
if (!overridenRightPanelStackView.currentItem || overridenRightPanelStackView.currentItem.objectName != "meetingDetail") overridenRightPanelStackView.replace(meetingDetail, Control.StackView.Immediate)
}// else {
/*if (overridenRightPanelStackView.currentItem && overridenRightPanelStackView.currentItem.objectName === "meetingDetail")*/
// }
}
}
Connections {
@ -128,8 +126,8 @@ AbstractMainPage {
icon.source: AppIcons.plusCircle
Layout.preferredWidth: 30 * DefaultStyle.dp
Layout.preferredHeight: 30 * DefaultStyle.dp
width: 30 * DefaultStyle.dp
height: 30 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
onClicked: {
mainItem.setUpConference()
}
@ -298,6 +296,8 @@ AbstractMainPage {
visible: mainItem.selectedConference && UtilsCpp.isMe(mainItem.selectedConference.core.organizerAddress)
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
icon.source: AppIcons.pencil
contentImageColor: DefaultStyle.main1_500_main
background: Item{}
@ -379,6 +379,8 @@ AbstractMainPage {
Button {
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
icon.width: 24 * DefaultStyle.dp
icon.height: 24 * DefaultStyle.dp
background: Item{}
icon.source: AppIcons.shareNetwork
onClicked: {

View file

@ -81,5 +81,7 @@ QtObject {
property string globe: "image://internal/globe-hemisphere-west.svg"
property string slide: "image://internal/slideshow.svg"
property string busyIndicator: "image://internal/busy-indicator.svg"
property string meeting: "image://internal/reunion.svg"
property string pip: "image://internal/pip.svg"
property string waveform: "image://internal/waveform.svg"
property string squaresFour: "image://internal/squares-four.svg"
}