diff options
author | Rémi Nicole <nicole@kolabsystems.com> | 2018-03-09 13:32:10 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-03-09 13:32:24 +0100 |
commit | d5b5c33a0cb3fbe02d011a14f2028249220b0656 (patch) | |
tree | db0ebb30db599a6889ea6066ec33bf5f862c8444 /framework/qml/AttachmentDelegate.qml | |
parent | 93e9c10d1894797b5826bbdfcc324f4235c9e193 (diff) | |
download | kube-d5b5c33a0cb3fbe02d011a14f2028249220b0656.tar.gz kube-d5b5c33a0cb3fbe02d011a14f2028249220b0656.zip |
Automatic key import / export + Expected monad
Summary:
There are many things going on here (perhaps a bit much for a single patch):
- When an attachment is of mime type "application/pgp-keys", a button is added to import the key to GPG
- When sending a mail and crypto is enabled (encryption, signing or both), the public key of the first private key found is sent as an un-encrypted attachment (T6994)
- The `mailcrypto.{h,cpp}` was, for the most part, rewritten
- Introduction of the expected monad, inspired by what was proposed for C++ [here](https://isocpp.org/files/papers/n4015.pdf), but not at all a strict implementation of this specification. We may want to add some more features of this standard later.
The rationale for some of the choices:
- I found mailcrypto a bit hard to edit to add new features, and a great part was commented code to prepare for the support the SMIME crypto format, which would (in my current knowledge) not be used for sending emails.
- One thing I found that may be missing in the code base was a standardized way of handling errors in C++ code. Since exceptions are disabled I think that the functional way is the way to go. After some research I found the Expected monad / tagged union / sum type, which seemed to suit the problem particularly well.
In the long run, I hope we would move the entire code base to use `Expected` to indicate if a function might fail.
Of course every choice made here is to be considered as a proposition for doing things / RFC, critics wholeheartedly accepted.
Reviewers: cmollekopf
Tags: #kube
Maniphest Tasks: T6994, T8147, T6995
Differential Revision: https://phabricator.kde.org/D11158
Diffstat (limited to 'framework/qml/AttachmentDelegate.qml')
-rw-r--r-- | framework/qml/AttachmentDelegate.qml | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/framework/qml/AttachmentDelegate.qml b/framework/qml/AttachmentDelegate.qml index 3c308e65..4469cbdd 100644 --- a/framework/qml/AttachmentDelegate.qml +++ b/framework/qml/AttachmentDelegate.qml | |||
@@ -23,10 +23,12 @@ Item { | |||
23 | id: root | 23 | id: root |
24 | 24 | ||
25 | property string name | 25 | property string name |
26 | property string type | ||
26 | property string icon | 27 | property string icon |
27 | property alias actionIcon: actionButton.iconName | 28 | property alias actionIcon: actionButton.iconName |
28 | signal clicked; | 29 | signal clicked; |
29 | signal execute; | 30 | signal execute; |
31 | signal publicKeyImport; | ||
30 | 32 | ||
31 | width: content.width + Kube.Units.smallSpacing * 1.5 | 33 | width: content.width + Kube.Units.smallSpacing * 1.5 |
32 | height: content.height + Kube.Units.smallSpacing | 34 | height: content.height + Kube.Units.smallSpacing |
@@ -70,6 +72,14 @@ Item { | |||
70 | color: Kube.Colors.backgroundColor | 72 | color: Kube.Colors.backgroundColor |
71 | } | 73 | } |
72 | Kube.IconButton { | 74 | Kube.IconButton { |
75 | visible: root.type == "application/pgp-keys" | ||
76 | iconName: Kube.Icons.key_import_inverted | ||
77 | height: Kube.Units.gridUnit | ||
78 | width: height | ||
79 | onClicked: root.publicKeyImport() | ||
80 | padding: 0 | ||
81 | } | ||
82 | Kube.IconButton { | ||
73 | id: actionButton | 83 | id: actionButton |
74 | height: Kube.Units.gridUnit | 84 | height: Kube.Units.gridUnit |
75 | width: height | 85 | width: height |