mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
177 lines
5.8 KiB
QML
177 lines
5.8 KiB
QML
import QtQuick
|
|
import QtQuick.Effects
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls.Basic as Control
|
|
import Linphone
|
|
import UtilsCpp
|
|
import SettingsCpp
|
|
import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
|
|
|
|
FocusScope{
|
|
id: mainItem
|
|
//: "Rechercher des contacts"
|
|
property string placeHolderText: qsTr("search_bar_search_contacts_placeholder")
|
|
property list<string> selectedParticipants
|
|
property int selectedParticipantsCount: selectedParticipants.length
|
|
property ConferenceInfoGui conferenceInfoGui
|
|
property color searchBarColor: DefaultStyle.grey_100
|
|
property color searchBarBorderColor: "transparent"
|
|
|
|
function clearSelectedParticipants() {
|
|
// TODO
|
|
//contactList.selectedContacts.clear()
|
|
}
|
|
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
spacing: Math.round(15 * DefaultStyle.dp)
|
|
GridView {
|
|
id: participantList
|
|
Layout.fillWidth: true
|
|
visible: contentHeight > 0
|
|
Layout.preferredHeight: contentHeight
|
|
Layout.maximumHeight: mainItem.height / 3
|
|
width: mainItem.width
|
|
cellWidth: Math.round((50 + 18) * DefaultStyle.dp)
|
|
cellHeight: Math.round(80 * DefaultStyle.dp)
|
|
// columnCount: Math.floor(width/cellWidth)
|
|
model: mainItem.selectedParticipants
|
|
clip: true
|
|
// columnSpacing: Math.round(18 * DefaultStyle.dp)
|
|
// rowSpacing: Math.round(9 * DefaultStyle.dp)
|
|
Keys.onPressed: (event) => {
|
|
if(currentIndex <=0 && event.key == Qt.Key_Up){
|
|
nextItemInFocusChain(false).forceActiveFocus()
|
|
}
|
|
}
|
|
header: Text {
|
|
Layout.fillWidth: true
|
|
horizontalAlignment: Text.AlignLeft
|
|
visible: mainItem.selectedParticipantsCount > 0
|
|
//: "%n participant(s) sélectionné(s)"
|
|
text: qsTr("add_participant_selected_count", '0', mainItem.selectedParticipantsCount).arg(mainItem.selectedParticipantsCount)
|
|
maximumLineCount: 1
|
|
color: DefaultStyle.grey_1000
|
|
font {
|
|
pixelSize: Math.round(12 * DefaultStyle.dp)
|
|
weight: Math.round(300 * DefaultStyle.dp)
|
|
}
|
|
}
|
|
delegate: FocusScope {
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
spacing: Math.round(4 * DefaultStyle.dp)
|
|
width: Math.round(50 * DefaultStyle.dp)
|
|
Item {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.preferredWidth: Math.round(50 * DefaultStyle.dp)
|
|
Layout.preferredHeight: Math.round(50 * DefaultStyle.dp)
|
|
Avatar {
|
|
anchors.fill: parent
|
|
_address: modelData
|
|
shadowEnabled: false
|
|
}
|
|
Button {
|
|
Layout.preferredWidth: Math.round(17 * DefaultStyle.dp)
|
|
Layout.preferredHeight: Math.round(17 * DefaultStyle.dp)
|
|
icon.width: Math.round(12 * DefaultStyle.dp)
|
|
icon.height: Math.round(12 * DefaultStyle.dp)
|
|
icon.source: AppIcons.closeX
|
|
anchors.top: parent.top
|
|
anchors.right: parent.right
|
|
background: Item {
|
|
Rectangle {
|
|
id: backgroundRect
|
|
color: DefaultStyle.grey_0
|
|
anchors.fill: parent
|
|
radius: Math.round(50 * DefaultStyle.dp)
|
|
}
|
|
MultiEffect {
|
|
anchors.fill: backgroundRect
|
|
source: backgroundRect
|
|
shadowEnabled: true
|
|
shadowColor: DefaultStyle.grey_1000
|
|
shadowBlur: 0.1
|
|
shadowOpacity: 0.5
|
|
}
|
|
}
|
|
onClicked: contactList.removeSelectedContactByAddress(modelData)
|
|
}
|
|
}
|
|
Text {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.preferredWidth: width
|
|
width: Math.round(50 * DefaultStyle.dp)
|
|
maximumLineCount: 1
|
|
clip: true
|
|
property var nameObj: UtilsCpp.getDisplayName(modelData)
|
|
text: nameObj ? nameObj.value : ""
|
|
color: DefaultStyle.main2_700
|
|
wrapMode: Text.WrapAnywhere
|
|
font {
|
|
pixelSize: Typography.p3.pixelSize
|
|
weight: Typography.p3.weight
|
|
capitalization: Font.Capitalize
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Control.ScrollBar.vertical: ScrollBar {
|
|
id: scrollbar
|
|
active: true
|
|
interactive: true
|
|
policy: Control.ScrollBar.AsNeeded
|
|
anchors.top: parent.top
|
|
anchors.bottom: parent.bottom
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: Math.round(8 * DefaultStyle.dp)
|
|
}
|
|
}
|
|
SearchBar {
|
|
id: searchBar
|
|
Layout.fillWidth: true
|
|
Layout.topMargin: Math.round(6 * DefaultStyle.dp)
|
|
Layout.rightMargin: Math.round(28 * DefaultStyle.dp)
|
|
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
|
|
placeholderText: mainItem.placeHolderText
|
|
focus: participantList.count == 0
|
|
color: mainItem.searchBarColor
|
|
borderColor: mainItem.searchBarColor
|
|
KeyNavigation.up: participantList.count > 0
|
|
? participantList
|
|
: nextItemInFocusChain(false)
|
|
KeyNavigation.down: contactList
|
|
}
|
|
ColumnLayout {
|
|
id: content
|
|
spacing: Math.round(15 * DefaultStyle.dp)
|
|
Text {
|
|
visible: !contactList.loading && contactList.count === 0
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.topMargin: Math.round(137 * DefaultStyle.dp)
|
|
//: "Aucun contact"
|
|
text: searchBar.text.length !== 0 ? qsTr("list_filter_no_result_found") : qsTr("contact_list_empty")
|
|
font {
|
|
pixelSize: Typography.h4.pixelSize
|
|
weight: Typography.h4.weight
|
|
}
|
|
}
|
|
AllContactListView{
|
|
id: contactList
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
itemsRightMargin: Math.round(28 * DefaultStyle.dp)
|
|
multiSelectionEnabled: true
|
|
showContactMenu: false
|
|
confInfoGui: mainItem.conferenceInfoGui
|
|
selectedContacts: mainItem.selectedParticipants
|
|
onSelectedContactsChanged: Qt.callLater(function(){mainItem.selectedParticipants = selectedContacts})
|
|
searchBarText: searchBar.text
|
|
onContactAddedToSelection: (address) => {
|
|
contactList.addContactToSelection(address)
|
|
}
|
|
onContactRemovedFromSelection: (address) => contactList.removeSelectedContactByAddress(address)
|
|
}
|
|
}
|
|
}
|
|
}
|