linphone-desktop/Linphone/view/Control/Container/FormItemLayout.qml
Gaelle Braud e113058ae9 hide group call button if no videoconference uri set
avoid displaying more messages when the list is not yet initialized

fix meeting form end hour combobox list display #LINQT-2127

check if at least one participant when creating group chat #LINQT-2134

display all the errors at a time if they all occur #LINQT-2133

add signal to add chat to list when state Created #LINQT-2131

fix chat deletion
2025-11-15 00:15:41 +01:00

102 lines
2.9 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Effects
import Linphone
import "qrc:/qt/qml/Linphone/view/Style/buttonStyle.js" as ButtonStyle
import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils
FocusScope{
id: mainItem
property alias contentItem: contentItem.data
property string label: ""
property string labelIndication
property string tooltip: ""
property bool mandatory: false
property alias errorTextItem: errorText
property alias errorMessage: errorText.text
property bool enableErrorText: false
property bool errorTextVisible: errorText.isVisible
implicitHeight: layout.implicitHeight
function clearErrorText() {
errorText.clear()
}
onErrorMessageChanged: if (errorMessage.length > 0) {
var item = mainItem
do {
var parentItem = item.parent
if (parentItem.contentItem) {
var itemPosInParent = mainItem.mapToItem(parentItem.contentItem, mainItem.x, mainItem.y)
if (parentItem.contentY > itemPosInParent.y) {
parentItem.contentY = itemPosInParent.y;
}
else if (parentItem.contentY+parentItem.height < itemPosInParent.y+mainItem.height) {
parentItem.contentY = itemPosInParent.y + mainItem.height - height;
}
}
item = parentItem
} while(item.parent != undefined && parentItem.contentItem === undefined)
}
ColumnLayout {
id: layout
spacing: Utils.getSizeWithScreenRatio(5)
anchors.left: parent.left
anchors.right: parent.right
RowLayout {
spacing: Utils.getSizeWithScreenRatio(8)
Text {
visible: label.length > 0
verticalAlignment: Text.AlignVCenter
text: mainItem.label + (mainItem.mandatory ? "*" : "")
color: contentItem.activeFocus ? DefaultStyle.main1_500_main : DefaultStyle.main2_600
elide: Text.ElideRight
wrapMode: Text.Wrap
maximumLineCount: 1
textFormat: Text.RichText
font {
pixelSize: Typography.p2.pixelSize
weight: Typography.p2.weight
}
}
Item{Layout.fillWidth: true}
PopupButton {
visible: mainItem.tooltip !== ""
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
style: ButtonStyle.noBackground
icon.source: AppIcons.info
popUpTitle: mainItem.label
popup.contentItem: Text {
text: mainItem.tooltip
}
}
Text {
visible: mainItem.labelIndication !== undefined
font.pixelSize: Utils.getSizeWithScreenRatio(12)
font.weight: Utils.getSizeWithScreenRatio(300)
text: mainItem.labelIndication
}
}
Item {
Layout.preferredHeight: childrenRect.height
Layout.fillWidth: true
StackLayout {
id: contentItem
height: childrenRect.height
anchors.left: parent.left
anchors.right: parent.right
}
TemporaryText {
id: errorText
anchors.top: contentItem.bottom
color: DefaultStyle.danger_500_main
}
}
}
}