Warning, /plasma-mobile/calindori/src/contents/ui/AttendeeEditor.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2021 Dimitris Kardarakos <dimkard@posteo.net>
0003 *
0004 * SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006
0007 import QtQuick 2.7
0008 import QtQuick.Controls 2.5 as Controls2
0009 import QtQuick.Layouts 1.3
0010 import org.kde.kirigami 2.14 as Kirigami
0011 import org.kde.calindori 0.1 as Calindori
0012 import org.kde.people 1.0 as KPeople
0013
0014 Kirigami.OverlaySheet {
0015 id: root
0016
0017 property var selectedPersons: []
0018 property var preEditEmails: []
0019
0020 signal editorCompleted (var selectedUris)
0021
0022 header: Kirigami.SearchField {
0023 id: searchField
0024
0025 topInset: Kirigami.Units.smallSpacing
0026 bottomInset: Kirigami.Units.smallSpacing
0027
0028 onTextChanged: filterModel.setFilterFixedString(text)
0029 }
0030
0031
0032 contentItem: ListView {
0033 id: peopleList
0034
0035 clip: true
0036
0037 model: KPeople.PersonsSortFilterProxyModel {
0038 id: filterModel
0039
0040 filterCaseSensitivity: Qt.CaseInsensitive
0041 requiredProperties: ["email"]
0042
0043 Component.onCompleted: {
0044 filterModel.sourceModel = personsModel;
0045 sort(0);
0046 }
0047 }
0048
0049 Kirigami.PlaceholderMessage {
0050 anchors.centerIn: parent
0051 icon.name: "user"
0052 text: i18n("No contacts found")
0053 visible: peopleList.count === 0
0054 }
0055
0056 delegate: Kirigami.DelegateRecycler {
0057 width: parent ? parent.width : 0
0058 sourceComponent: contactListDelegate
0059 }
0060
0061 Component {
0062 id: contactListDelegate
0063
0064 Kirigami.BasicListItem {
0065 property var itemEmail: personData && personData.person && personData.person.contactCustomProperty("email")
0066 checkable: true
0067 enabled: model && root.preEditEmails.indexOf(itemEmail) === -1
0068 checked: model && root.selectedPersons && root.selectedPersons.indexOf(model.personUri) >= 0
0069
0070 onCheckedChanged: {
0071 if(!model) {
0072 return;
0073 }
0074
0075 if(checked) {
0076 var uris = root.selectedPersons;
0077 uris.push(model.personUri);
0078 root.selectedPersons = uris;
0079 }
0080 else {
0081 var uris = root.selectedPersons;
0082 uris.pop(model.personUri);
0083 root.selectedPersons = uris;
0084 }
0085 }
0086
0087 KPeople.PersonData {
0088 id: personData
0089
0090 personUri: model && model.personUri
0091 }
0092
0093 icon: model && model.decoration
0094 label: model && model.display
0095 subtitle: itemEmail
0096 }
0097 }
0098
0099 KPeople.PersonsModel {}
0100
0101 }
0102
0103 footer: RowLayout {
0104 Item {
0105 Layout.fillWidth: true
0106 }
0107
0108 Controls2.ToolButton {
0109 text: i18n("Add")
0110 icon.name: 'contact-new-symbolic'
0111
0112 enabled: selectedPersons.length > 0
0113
0114 onClicked: {
0115 editorCompleted(root.selectedPersons);
0116 root.close();
0117 }
0118 }
0119
0120 Controls2.ToolButton {
0121 text: i18n("Cancel")
0122 icon.name: 'dialog-cancel'
0123
0124 onClicked: {
0125 root.close();
0126 }
0127 }
0128 }
0129 }