Warning, /graphics/okular/mobile/app/package/contents/ui/SignaturePropertiesDialog.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *   SPDX-FileCopyrightText: 2022 Albert Astals Cid <aacid@kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 import QtCore
0008 import QtQuick 2.15
0009 import QtQuick.Window 2.15
0010 import QtQuick.Controls 2.15 as QQC2
0011 import QtQuick.Dialogs as QQD
0012 import QtQuick.Layouts 1.15
0013 import org.kde.kirigami 2.17 as Kirigami
0014 
0015 Kirigami.OverlaySheet
0016 {
0017     id: root
0018 
0019     property alias signatureValidityText: signatureValidity.text
0020     property alias documentModificationsText: documentModifications.text
0021     property alias signerNameText: signerName.text
0022     property alias signingTimeText: signingTime.text
0023     property alias signingLocationText: signingLocation.text
0024     property alias signingReasonText: signingReason.text
0025 
0026     property var certificateModel
0027     property int signatureRevisionIndex: -1
0028 
0029     signal saveSignatureSignedVersion(url path)
0030 
0031     title: i18n("Signature Properties")
0032 
0033     function showErrorDialog() {
0034         errorDialog.open();
0035     }
0036 
0037     ColumnLayout {
0038         // Without this the width is unreasonably narrow, potentially
0039         // https://invent.kde.org/frameworks/kirigami/-/merge_requests/487 fixes it
0040         // check when a kirigami with that is required as minimum version
0041         Layout.preferredWidth: Math.min(Window.window.width, 360)
0042 
0043         QQC2.GroupBox {
0044             Layout.fillWidth: true
0045             title: i18n("Validity Status")
0046 
0047             Kirigami.FormLayout {
0048                 width: parent.width
0049                 QQC2.Label {
0050                     id: signatureValidity
0051                     Kirigami.FormData.label: i18n("Signature Validity:")
0052                     wrapMode: Text.Wrap
0053                     Layout.fillWidth: true
0054                 }
0055                 QQC2.Label {
0056                     id: documentModifications
0057                     Kirigami.FormData.label: i18n("Document Modifications:")
0058                     wrapMode: Text.Wrap
0059                     Layout.fillWidth: true
0060                 }
0061             }
0062         }
0063         QQC2.GroupBox {
0064             title: i18n("Additional Information")
0065             Layout.fillWidth: true
0066 
0067             Kirigami.FormLayout {
0068                 id: additionalInformationLayout
0069 
0070                 width: parent.width
0071                 QQC2.Label {
0072                     id: signerName
0073                     Kirigami.FormData.label: i18n("Signed By:")
0074                     wrapMode: Text.Wrap
0075                     Layout.fillWidth: true
0076                 }
0077                 QQC2.Label {
0078                     id: signingTime
0079                     Kirigami.FormData.label: i18n("Signing Time:")
0080                     wrapMode: Text.Wrap
0081                     Layout.fillWidth: true
0082                 }
0083                 QQC2.Label {
0084                     id: signingReason
0085                     Kirigami.FormData.label: i18n("Reason:")
0086                     visible: text
0087                     wrapMode: Text.Wrap
0088                     Layout.fillWidth: true
0089                 }
0090                 QQC2.Label {
0091                     id: signingLocation
0092                     Kirigami.FormData.label: i18n("Location:")
0093                     visible: text
0094                     wrapMode: Text.Wrap
0095                     Layout.fillWidth: true
0096                 }
0097             }
0098         }
0099 
0100         QQC2.GroupBox {
0101             title: i18n("Document Version")
0102             Layout.fillWidth: true
0103 
0104             visible: root.signatureRevisionIndex >= 0
0105 
0106             RowLayout {
0107                 width: parent.width
0108 
0109                 QQC2.Label {
0110                     Layout.fillWidth: true
0111                     text: i18nc("Document Revision <current> of <total>", "Document Revision %1 of %2", root.signatureRevisionIndex + 1, documentItem.signaturesModel.count)
0112                     wrapMode: Text.Wrap
0113                 }
0114                 QQC2.Button {
0115                     text: i18n("Save Signed Version...")
0116                     onClicked: {
0117                         fileDialog.open();
0118                     }
0119                 }
0120             }
0121         }
0122 
0123         QQC2.DialogButtonBox {
0124             Layout.topMargin: Kirigami.Units.largeSpacing
0125             Layout.fillWidth: true
0126 
0127             QQC2.Button {
0128                 QQC2.DialogButtonBox.buttonRole: QQC2.DialogButtonBox.ActionRole
0129                 text: i18n("View Certificate...")
0130                 onClicked: {
0131                     var dialog = dialogComponent.createObject(Window.window, {
0132                         certificateModel: root.certificateModel
0133                     })
0134                     dialog.open()
0135                 }
0136 
0137                 Component {
0138                     id: dialogComponent
0139                     CertificateViewerDialog {
0140                         onVisibleChanged: if(!visible) {
0141                             destroy(1000)
0142                         }
0143                     }
0144                 }
0145             }
0146 
0147             QQC2.Button {
0148                 QQC2.DialogButtonBox.buttonRole: QQC2.DialogButtonBox.DestructiveRole
0149                 text: i18n("Close")
0150                 icon.name: "dialog-close"
0151                 onClicked: root.close()
0152             }
0153         }
0154 
0155         QQD.FileDialog {
0156             id: fileDialog
0157             currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
0158             fileMode: QQD.FileDialog.SaveFile
0159             onAccepted: {
0160                 root.saveSignatureSignedVersion(fileDialog.selectedFile);
0161             }
0162         }
0163 
0164         // TODO Use Kirigami.PromptDialog when we depend on KF >= 5.89
0165         // this way we can probably remove that ridiculous z value
0166         QQC2.Dialog {
0167             id: errorDialog
0168             z: 200
0169             title: i18n("Error")
0170             contentItem: QQC2.Label {
0171                 text: i18n("Could not save the signature.")
0172             }
0173             standardButtons: QQC2.Dialog.Ok
0174 
0175             onAccepted: close();
0176         }
0177     }
0178 }