diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-11-22 12:39:41 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-11-22 16:45:27 +0100 |
commit | 70a93ce0d76489db8a3d2245db2b9765f73bb51d (patch) | |
tree | e5e3c73da12036d1bf7d8fdb1c0f717b925bddd6 /framework/src | |
parent | 8263e3357e898aff3db2f77d83b342060dc5bb3d (diff) | |
download | kube-70a93ce0d76489db8a3d2245db2b9765f73bb51d.tar.gz kube-70a93ce0d76489db8a3d2245db2b9765f73bb51d.zip |
Prepping encryption
Diffstat (limited to 'framework/src')
-rw-r--r-- | framework/src/domain/composercontroller.cpp | 107 | ||||
-rw-r--r-- | framework/src/domain/composercontroller.h | 16 |
2 files changed, 84 insertions, 39 deletions
diff --git a/framework/src/domain/composercontroller.cpp b/framework/src/domain/composercontroller.cpp index 258c25d5..2a82f0e1 100644 --- a/framework/src/domain/composercontroller.cpp +++ b/framework/src/domain/composercontroller.cpp | |||
@@ -87,6 +87,56 @@ public: | |||
87 | } | 87 | } |
88 | }; | 88 | }; |
89 | 89 | ||
90 | class AddresseeModel : public QStandardItemModel | ||
91 | { | ||
92 | public: | ||
93 | AddresseeModel() | ||
94 | :QStandardItemModel() | ||
95 | { | ||
96 | setItemRoleNames({{ComposerController::AddresseeNameRole, "addresseeName"}, | ||
97 | {ComposerController::KeyFoundRole, "keyFound"}, | ||
98 | {ComposerController::KeyRole, "key"}}); | ||
99 | } | ||
100 | |||
101 | void add(const QString &addressee) | ||
102 | { | ||
103 | auto item = new QStandardItem; | ||
104 | item->setData(addressee, ComposerController::AddresseeNameRole); | ||
105 | item->setData(false, ComposerController::KeyFoundRole); | ||
106 | appendRow(QList<QStandardItem*>() << item); | ||
107 | } | ||
108 | |||
109 | void remove(const QString &addressee) | ||
110 | { | ||
111 | auto root = invisibleRootItem(); | ||
112 | for (int row = 0; row < root->rowCount(); row++) { | ||
113 | if (root->child(row, 0)->data(ComposerController::AddresseeNameRole).toString() == addressee) { | ||
114 | root->removeRow(row); | ||
115 | return; | ||
116 | } | ||
117 | } | ||
118 | } | ||
119 | |||
120 | void setStringList(const QStringList &list) | ||
121 | { | ||
122 | clear(); | ||
123 | for (const auto &s : list) { | ||
124 | add(s); | ||
125 | } | ||
126 | } | ||
127 | |||
128 | QStringList stringList() const | ||
129 | { | ||
130 | QStringList list; | ||
131 | auto root = invisibleRootItem(); | ||
132 | for (int row = 0; row < root->rowCount(); row++) { | ||
133 | list << root->child(row, 0)->data(ComposerController::AddresseeNameRole).toString(); | ||
134 | } | ||
135 | return list; | ||
136 | } | ||
137 | |||
138 | }; | ||
139 | |||
90 | 140 | ||
91 | ComposerController::ComposerController() | 141 | ComposerController::ComposerController() |
92 | : Kube::Controller(), | 142 | : Kube::Controller(), |
@@ -94,9 +144,9 @@ ComposerController::ComposerController() | |||
94 | action_saveAsDraft{new Kube::ControllerAction{this, &ComposerController::saveAsDraft}}, | 144 | action_saveAsDraft{new Kube::ControllerAction{this, &ComposerController::saveAsDraft}}, |
95 | mRecipientCompleter{new RecipientCompleter}, | 145 | mRecipientCompleter{new RecipientCompleter}, |
96 | mIdentitySelector{new IdentitySelector{*this}}, | 146 | mIdentitySelector{new IdentitySelector{*this}}, |
97 | mToModel{new QStringListModel}, | 147 | mToModel{new AddresseeModel}, |
98 | mCcModel{new QStringListModel}, | 148 | mCcModel{new AddresseeModel}, |
99 | mBccModel{new QStringListModel}, | 149 | mBccModel{new AddresseeModel}, |
100 | mAttachmentModel{new QStandardItemModel} | 150 | mAttachmentModel{new QStandardItemModel} |
101 | { | 151 | { |
102 | mAttachmentModel->setItemRoleNames({{NameRole, "name"}, | 152 | mAttachmentModel->setItemRoleNames({{NameRole, "name"}, |
@@ -128,9 +178,9 @@ void ComposerController::clear() | |||
128 | Controller::clear(); | 178 | Controller::clear(); |
129 | //Reapply account and identity from selection | 179 | //Reapply account and identity from selection |
130 | mIdentitySelector->reapplyCurrentIndex(); | 180 | mIdentitySelector->reapplyCurrentIndex(); |
131 | mToModel->setStringList({}); | 181 | mToModel->clear(); |
132 | mCcModel->setStringList({}); | 182 | mCcModel->clear(); |
133 | mBccModel->setStringList({}); | 183 | mBccModel->clear(); |
134 | } | 184 | } |
135 | 185 | ||
136 | QAbstractItemModel *ComposerController::toModel() const | 186 | QAbstractItemModel *ComposerController::toModel() const |
@@ -140,17 +190,13 @@ QAbstractItemModel *ComposerController::toModel() const | |||
140 | 190 | ||
141 | void ComposerController::addTo(const QString &s) | 191 | void ComposerController::addTo(const QString &s) |
142 | { | 192 | { |
143 | auto list = mToModel->stringList(); | 193 | mToModel->add(s); |
144 | list.append(s); | ||
145 | mToModel->setStringList(list); | ||
146 | updateSendAction(); | 194 | updateSendAction(); |
147 | } | 195 | } |
148 | 196 | ||
149 | void ComposerController::removeTo(const QString &s) | 197 | void ComposerController::removeTo(const QString &s) |
150 | { | 198 | { |
151 | auto list = mToModel->stringList(); | 199 | mToModel->remove(s); |
152 | list.removeAll(s); | ||
153 | mToModel->setStringList(list); | ||
154 | updateSendAction(); | 200 | updateSendAction(); |
155 | } | 201 | } |
156 | 202 | ||
@@ -161,17 +207,13 @@ QAbstractItemModel *ComposerController::ccModel() const | |||
161 | 207 | ||
162 | void ComposerController::addCc(const QString &s) | 208 | void ComposerController::addCc(const QString &s) |
163 | { | 209 | { |
164 | auto list = mCcModel->stringList(); | 210 | mCcModel->add(s); |
165 | list.append(s); | ||
166 | mCcModel->setStringList(list); | ||
167 | updateSendAction(); | 211 | updateSendAction(); |
168 | } | 212 | } |
169 | 213 | ||
170 | void ComposerController::removeCc(const QString &s) | 214 | void ComposerController::removeCc(const QString &s) |
171 | { | 215 | { |
172 | auto list = mCcModel->stringList(); | 216 | mCcModel->remove(s); |
173 | list.removeAll(s); | ||
174 | mCcModel->setStringList(list); | ||
175 | updateSendAction(); | 217 | updateSendAction(); |
176 | } | 218 | } |
177 | 219 | ||
@@ -182,17 +224,13 @@ QAbstractItemModel *ComposerController::bccModel() const | |||
182 | 224 | ||
183 | void ComposerController::addBcc(const QString &s) | 225 | void ComposerController::addBcc(const QString &s) |
184 | { | 226 | { |
185 | auto list = mBccModel->stringList(); | 227 | mBccModel->add(s); |
186 | list.append(s); | ||
187 | mBccModel->setStringList(list); | ||
188 | updateSendAction(); | 228 | updateSendAction(); |
189 | } | 229 | } |
190 | 230 | ||
191 | void ComposerController::removeBcc(const QString &s) | 231 | void ComposerController::removeBcc(const QString &s) |
192 | { | 232 | { |
193 | auto list = mBccModel->stringList(); | 233 | mBccModel->remove(s); |
194 | list.removeAll(s); | ||
195 | mBccModel->setStringList(list); | ||
196 | updateSendAction(); | 234 | updateSendAction(); |
197 | } | 235 | } |
198 | 236 | ||
@@ -239,7 +277,6 @@ void ComposerController::removeAttachment(const QUrl &url) | |||
239 | if (root->hasChildren()) { | 277 | if (root->hasChildren()) { |
240 | for (int row = 0; row < root->rowCount(); row++) { | 278 | for (int row = 0; row < root->rowCount(); row++) { |
241 | auto item = root->child(row, 0); | 279 | auto item = root->child(row, 0); |
242 | const auto url = item->data(UrlRole).toUrl(); | ||
243 | if (url == item->data(UrlRole).toUrl()) { | 280 | if (url == item->data(UrlRole).toUrl()) { |
244 | root->removeRow(row); | 281 | root->removeRow(row); |
245 | return; | 282 | return; |
@@ -418,17 +455,15 @@ KMime::Message::Ptr ComposerController::assembleMessage() | |||
418 | 455 | ||
419 | QList<Attachment> attachments; | 456 | QList<Attachment> attachments; |
420 | auto root = mAttachmentModel->invisibleRootItem(); | 457 | auto root = mAttachmentModel->invisibleRootItem(); |
421 | if (root->hasChildren()) { | 458 | for (int row = 0; row < root->rowCount(); row++) { |
422 | for (int row = 0; row < root->rowCount(); row++) { | 459 | auto item = root->child(row, 0); |
423 | auto item = root->child(row, 0); | 460 | attachments << Attachment{ |
424 | attachments << Attachment{ | 461 | item->data(NameRole).toString(), |
425 | item->data(NameRole).toString(), | 462 | item->data(FilenameRole).toString(), |
426 | item->data(FilenameRole).toString(), | 463 | item->data(MimeTypeRole).toByteArray(), |
427 | item->data(MimeTypeRole).toByteArray(), | 464 | item->data(InlineRole).toBool(), |
428 | item->data(InlineRole).toBool(), | 465 | item->data(ContentRole).toByteArray() |
429 | item->data(ContentRole).toByteArray() | 466 | }; |
430 | }; | ||
431 | } | ||
432 | } | 467 | } |
433 | return MailTemplates::createMessage(mExistingMessage, mToModel->stringList(), mCcModel->stringList(), mBccModel->stringList(), getIdentity(), getSubject(), getBody(), getHtmlBody(), attachments); | 468 | return MailTemplates::createMessage(mExistingMessage, mToModel->stringList(), mCcModel->stringList(), mBccModel->stringList(), getIdentity(), getSubject(), getBody(), getHtmlBody(), attachments); |
434 | } | 469 | } |
diff --git a/framework/src/domain/composercontroller.h b/framework/src/domain/composercontroller.h index 784591eb..1a355b9a 100644 --- a/framework/src/domain/composercontroller.h +++ b/framework/src/domain/composercontroller.h | |||
@@ -44,6 +44,8 @@ namespace KMime { | |||
44 | class Message; | 44 | class Message; |
45 | } | 45 | } |
46 | 46 | ||
47 | class AddresseeModel; | ||
48 | |||
47 | class ComposerController : public Kube::Controller | 49 | class ComposerController : public Kube::Controller |
48 | { | 50 | { |
49 | Q_OBJECT | 51 | Q_OBJECT |
@@ -52,6 +54,8 @@ class ComposerController : public Kube::Controller | |||
52 | KUBE_CONTROLLER_PROPERTY(QString, Subject, subject) | 54 | KUBE_CONTROLLER_PROPERTY(QString, Subject, subject) |
53 | KUBE_CONTROLLER_PROPERTY(QString, Body, body) | 55 | KUBE_CONTROLLER_PROPERTY(QString, Body, body) |
54 | KUBE_CONTROLLER_PROPERTY(bool, HtmlBody, htmlBody) | 56 | KUBE_CONTROLLER_PROPERTY(bool, HtmlBody, htmlBody) |
57 | KUBE_CONTROLLER_PROPERTY(bool, Encrypt, encrypt) | ||
58 | KUBE_CONTROLLER_PROPERTY(bool, Sign, sign) | ||
55 | 59 | ||
56 | //Set by identitySelector | 60 | //Set by identitySelector |
57 | KUBE_CONTROLLER_PROPERTY(KMime::Types::Mailbox, Identity, identity) | 61 | KUBE_CONTROLLER_PROPERTY(KMime::Types::Mailbox, Identity, identity) |
@@ -74,6 +78,12 @@ class ComposerController : public Kube::Controller | |||
74 | KUBE_CONTROLLER_ACTION(saveAsDraft) | 78 | KUBE_CONTROLLER_ACTION(saveAsDraft) |
75 | 79 | ||
76 | public: | 80 | public: |
81 | enum AddresseeRoles { | ||
82 | KeyFoundRole = Qt::UserRole + 1, | ||
83 | KeyRole, | ||
84 | AddresseeNameRole | ||
85 | }; | ||
86 | |||
77 | explicit ComposerController(); | 87 | explicit ComposerController(); |
78 | 88 | ||
79 | Completer *recipientCompleter() const; | 89 | Completer *recipientCompleter() const; |
@@ -121,8 +131,8 @@ private: | |||
121 | 131 | ||
122 | QScopedPointer<Completer> mRecipientCompleter; | 132 | QScopedPointer<Completer> mRecipientCompleter; |
123 | QScopedPointer<Selector> mIdentitySelector; | 133 | QScopedPointer<Selector> mIdentitySelector; |
124 | QScopedPointer<QStringListModel> mToModel; | 134 | QSharedPointer<AddresseeModel> mToModel; |
125 | QScopedPointer<QStringListModel> mCcModel; | 135 | QSharedPointer<AddresseeModel> mCcModel; |
126 | QScopedPointer<QStringListModel> mBccModel; | 136 | QSharedPointer<AddresseeModel> mBccModel; |
127 | QScopedPointer<QStandardItemModel> mAttachmentModel; | 137 | QScopedPointer<QStandardItemModel> mAttachmentModel; |
128 | }; | 138 | }; |