Warning, /pim/itinerary/src/app/DocumentsCard.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 import QtCore
0008 import QtQuick
0009 import QtQuick.Layouts
0010 import QtQuick.Controls as QQC2
0011 import QtQuick.Dialogs
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kitinerary
0014 import org.kde.itinerary
0015 import org.kde.kirigamiaddons.formcard as FormCard
0016 
0017 ColumnLayout {
0018     id: root
0019 
0020     property alias documentIds: docsModel.documentIds
0021     property alias title: cardHeader.title
0022 
0023     signal addDocument(string file)
0024     signal removeDocument(string docId)
0025 
0026     spacing: 0
0027 
0028     DocumentsModel {
0029         id: docsModel
0030         documentManager: DocumentManager
0031     }
0032 
0033     FileDialog {
0034         id: addDialog
0035         title: i18n("Add Document")
0036         currentFolder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation)
0037         nameFilters: [i18n("All Files (*.*)")]
0038         onAccepted: root.addDocument(selectedFile)
0039     }
0040 
0041     Component {
0042         id: documentDelegate
0043         FormCard.AbstractFormDelegate {
0044             Layout.fillWidth: true
0045             onClicked: ApplicationController.openDocument(model.filePath);
0046             Accessible.onPressAction: clicked()
0047             Accessible.name: model.display
0048             contentItem: RowLayout {
0049                 Kirigami.Icon {
0050                     source: model.decoration
0051                     width: height
0052                     height: Kirigami.Units.iconSizes.small
0053                 }
0054 
0055                 QQC2.Label {
0056                     text: model.display
0057                     Layout.fillWidth: true
0058                     elide: Text.ElideMiddle
0059                     Accessible.ignored: true
0060                 }
0061 
0062                 Kirigami.ActionToolBar {
0063                     actions: QQC2.Action {
0064                         icon.name: "edit-delete"
0065                         text: i18n("Delete Document")
0066                         onTriggered: {
0067                             deleteWarningDialog.docId = model.id;
0068                             deleteWarningDialog.open()
0069                         }
0070                     }
0071                 }
0072             }
0073         }
0074     }
0075 
0076     Kirigami.PromptDialog {
0077         id: deleteWarningDialog
0078         property string docId
0079 
0080         title: i18n("Delete Document")
0081         subtitle: i18n("Do you really want to delete this document?")
0082 
0083         standardButtons: QQC2.Dialog.Cancel
0084 
0085         customFooterActions: [
0086             Kirigami.Action {
0087                 text: i18n("Delete")
0088                 icon.name: "edit-delete"
0089                 onTriggered: {
0090                     root.removeDocument(deleteWarningDialog.docId);
0091                     deleteWarningDialog.close()
0092                 }
0093             }
0094         ]
0095     }
0096 
0097     FormCard.FormHeader {
0098         id: cardHeader
0099         title: i18n("Documents")
0100     }
0101 
0102     FormCard.FormCard {
0103         Repeater {
0104             delegate: documentDelegate
0105             model: docsModel
0106         }
0107 
0108         FormCard.FormTextDelegate {
0109             text: i18n("No documents attached to this reservation.")
0110             visible: docsModel.empty
0111             Accessible.ignored: !visible
0112         }
0113 
0114         FormCard.FormDelegateSeparator {}
0115 
0116         FormCard.FormButtonDelegate {
0117             text: i18n("Add Document...")
0118             onClicked: addDialog.open()
0119         }
0120     }
0121 }