diff options
Diffstat (limited to 'framework/src/domain')
-rw-r--r-- | framework/src/domain/composercontroller.cpp | 26 | ||||
-rw-r--r-- | framework/src/domain/controller.cpp | 1 | ||||
-rw-r--r-- | framework/src/domain/controller.h | 1 |
3 files changed, 27 insertions, 1 deletions
diff --git a/framework/src/domain/composercontroller.cpp b/framework/src/domain/composercontroller.cpp index 4bfc34ab..09d4c154 100644 --- a/framework/src/domain/composercontroller.cpp +++ b/framework/src/domain/composercontroller.cpp | |||
@@ -94,8 +94,11 @@ public: | |||
94 | 94 | ||
95 | class AddresseeController : public Kube::ListPropertyController | 95 | class AddresseeController : public Kube::ListPropertyController |
96 | { | 96 | { |
97 | Q_OBJECT | ||
98 | Q_PROPERTY(bool foundAllKeys READ foundAllKeys NOTIFY foundAllKeysChanged) | ||
97 | public: | 99 | public: |
98 | 100 | ||
101 | bool mFoundAllKeys = true; | ||
99 | QSet<QByteArray> mMissingKeys; | 102 | QSet<QByteArray> mMissingKeys; |
100 | AddresseeController() | 103 | AddresseeController() |
101 | : Kube::ListPropertyController{{"name", "keyFound", "key"}} | 104 | : Kube::ListPropertyController{{"name", "keyFound", "key"}} |
@@ -103,11 +106,29 @@ public: | |||
103 | QObject::connect(this, &Kube::ListPropertyController::added, this, [this] (const QByteArray &id, const QVariantMap &map) { | 106 | QObject::connect(this, &Kube::ListPropertyController::added, this, [this] (const QByteArray &id, const QVariantMap &map) { |
104 | findKey(id, map.value("name").toString()); | 107 | findKey(id, map.value("name").toString()); |
105 | }); | 108 | }); |
109 | QObject::connect(this, &Kube::ListPropertyController::removed, this, [this] (const QByteArray &id) { | ||
110 | mMissingKeys.remove(id); | ||
111 | setFoundAllKeys(mMissingKeys.isEmpty()); | ||
112 | }); | ||
113 | |||
114 | |||
115 | } | ||
116 | |||
117 | bool foundAllKeys() | ||
118 | { | ||
119 | return mFoundAllKeys; | ||
120 | } | ||
121 | |||
122 | void setFoundAllKeys(bool found) | ||
123 | { | ||
124 | mFoundAllKeys = found; | ||
125 | emit foundAllKeysChanged(); | ||
106 | } | 126 | } |
107 | 127 | ||
108 | void findKey(const QByteArray &id, const QString &addressee) | 128 | void findKey(const QByteArray &id, const QString &addressee) |
109 | { | 129 | { |
110 | mMissingKeys << id; | 130 | mMissingKeys << id; |
131 | setFoundAllKeys(mMissingKeys.isEmpty()); | ||
111 | KMime::Types::Mailbox mb; | 132 | KMime::Types::Mailbox mb; |
112 | mb.fromUnicodeString(addressee); | 133 | mb.fromUnicodeString(addressee); |
113 | 134 | ||
@@ -124,7 +145,7 @@ public: | |||
124 | setValue(id, "keyFound", true); | 145 | setValue(id, "keyFound", true); |
125 | setValue(id, "key", QVariant::fromValue(keys)); | 146 | setValue(id, "key", QVariant::fromValue(keys)); |
126 | mMissingKeys.remove(id); | 147 | mMissingKeys.remove(id); |
127 | setProperty("foundAllKeys", mMissingKeys.isEmpty()); | 148 | setFoundAllKeys(mMissingKeys.isEmpty()); |
128 | } else { | 149 | } else { |
129 | SinkWarning() << "Failed to find key for recipient."; | 150 | SinkWarning() << "Failed to find key for recipient."; |
130 | } | 151 | } |
@@ -137,6 +158,8 @@ public: | |||
137 | add({{"name", email}}); | 158 | add({{"name", email}}); |
138 | } | 159 | } |
139 | } | 160 | } |
161 | signals: | ||
162 | void foundAllKeysChanged(); | ||
140 | }; | 163 | }; |
141 | 164 | ||
142 | class AttachmentController : public Kube::ListPropertyController | 165 | class AttachmentController : public Kube::ListPropertyController |
@@ -542,3 +565,4 @@ void ComposerController::saveAsDraft() | |||
542 | run(job); | 565 | run(job); |
543 | } | 566 | } |
544 | 567 | ||
568 | #include "composercontroller.moc" | ||
diff --git a/framework/src/domain/controller.cpp b/framework/src/domain/controller.cpp index 226615ad..09fe0b9d 100644 --- a/framework/src/domain/controller.cpp +++ b/framework/src/domain/controller.cpp | |||
@@ -123,6 +123,7 @@ void ListPropertyController::remove(const QByteArray &id) | |||
123 | break; | 123 | break; |
124 | } | 124 | } |
125 | } | 125 | } |
126 | emit removed(id); | ||
126 | if (mModel->rowCount() <= 0) { | 127 | if (mModel->rowCount() <= 0) { |
127 | emit emptyChanged(); | 128 | emit emptyChanged(); |
128 | } | 129 | } |
diff --git a/framework/src/domain/controller.h b/framework/src/domain/controller.h index 5f610012..9166a63a 100644 --- a/framework/src/domain/controller.h +++ b/framework/src/domain/controller.h | |||
@@ -137,6 +137,7 @@ public: | |||
137 | 137 | ||
138 | Q_SIGNALS: | 138 | Q_SIGNALS: |
139 | void added(QByteArray, QVariantMap); | 139 | void added(QByteArray, QVariantMap); |
140 | void removed(QByteArray); | ||
140 | void emptyChanged(); | 141 | void emptyChanged(); |
141 | 142 | ||
142 | protected: | 143 | protected: |