Warning, /pim/kube/views/people/qml/MailListEditor.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  Copyright (C) 2018 Michael Bohlender, <bohlender@kolabsys.com>
0003  *  Copyright (C) 2017 Christian Mollekopf, <mollekopf@kolabsys.com>
0004  *
0005  *  This program is free software; you can redistribute it and/or modify
0006  *  it under the terms of the GNU General Public License as published by
0007  *  the Free Software Foundation; either version 2 of the License, or
0008  *  (at your option) any later version.
0009  *
0010  *  This program is distributed in the hope that it will be useful,
0011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0013  *  GNU General Public License for more details.
0014  *
0015  *  You should have received a copy of the GNU General Public License along
0016  *  with this program; if not, write to the Free Software Foundation, Inc.,
0017  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018  */
0019 
0020 
0021 import QtQuick 2.7
0022 import QtQuick.Layouts 1.1
0023 
0024 import org.kube.framework 1.0 as Kube
0025 
0026 Item {
0027     id: root
0028 
0029     property variant controller
0030     implicitHeight: listView.height + lineEdit.height
0031     height: implicitHeight
0032 
0033     Column {
0034         anchors.fill: parent
0035         spacing: Kube.Units.smallSpacing
0036 
0037         ListView {
0038             id: listView
0039             anchors {
0040                 left: parent.left
0041                 right: parent.right
0042             }
0043             height: contentHeight
0044 
0045             model: controller.model
0046 
0047             delegate: Row {
0048                 height: Kube.Units.gridUnit
0049                 spacing: Kube.Units.smallSpacing
0050                 Kube.Label {
0051                     anchors.verticalCenter: parent.verticalCenter
0052                     visible: model.isMain
0053                     text: qsTr("(main)")
0054                 }
0055                 Kube.SelectableLabel {
0056                     anchors.verticalCenter: parent.verticalCenter
0057                     text: model.email
0058                 }
0059                 Kube.IconButton {
0060                     anchors.verticalCenter: parent.verticalCenter
0061                     height: Kube.Units.gridUnit
0062                     width: height
0063                     padding: 0
0064                     iconName: Kube.Icons.listRemove
0065                     onClicked: root.controller.remove(model.id)
0066                 }
0067             }
0068         }
0069 
0070         FocusScope {
0071             anchors {
0072                 left: parent.left
0073                 right: parent.right
0074             }
0075             height: Kube.Units.gridUnit
0076             focus: true
0077 
0078             Kube.TextButton {
0079                 anchors {
0080                     verticalCenter: parent.verticalCenter
0081                     left: parent.left
0082                 }
0083                 id: button
0084                 text: "+ " + qsTr("Add email")
0085                 textColor: Kube.Colors.highlightColor
0086                 focus: true
0087                 onClicked: {
0088                     lineEdit.visible = true
0089                     lineEdit.forceActiveFocus()
0090                 }
0091             }
0092 
0093             Kube.TextField {
0094                 id: lineEdit
0095                 anchors {
0096                     verticalCenter: parent.verticalCenter
0097                     left: parent.left
0098                     right: parent.right
0099                 }
0100                 visible: false
0101 
0102                 placeholderText: "+ " + qsTr("Add email")
0103                 onAccepted: {
0104                     root.controller.add({"email": text, "isMain": false});
0105                     clear()
0106                     visible = false
0107                     button.forceActiveFocus(Qt.TabFocusReason)
0108                 }
0109                 // onAborted: {
0110                 //     clear()
0111                 //     visible = false
0112                 //     button.forceActiveFocus(Qt.TabFocusReason)
0113                 // }
0114             }
0115         }
0116     }
0117 }