diff options
-rw-r--r-- | components/package/contents/ui/Composer.qml | 39 | ||||
-rw-r--r-- | framework/domain/composercontroller.cpp | 11 | ||||
-rw-r--r-- | framework/domain/composercontroller.h | 6 |
3 files changed, 56 insertions, 0 deletions
diff --git a/components/package/contents/ui/Composer.qml b/components/package/contents/ui/Composer.qml index 8c7aa36b..01991b67 100644 --- a/components/package/contents/ui/Composer.qml +++ b/components/package/contents/ui/Composer.qml | |||
@@ -18,6 +18,7 @@ | |||
18 | import QtQuick 2.4 | 18 | import QtQuick 2.4 |
19 | import QtQuick.Controls 1.4 | 19 | import QtQuick.Controls 1.4 |
20 | import QtQuick.Layouts 1.1 | 20 | import QtQuick.Layouts 1.1 |
21 | import QtQuick.Dialogs 1.0 | ||
21 | import org.kde.plasma.components 2.0 as PlasmaComponents | 22 | import org.kde.plasma.components 2.0 as PlasmaComponents |
22 | 23 | ||
23 | import org.kube.framework.domain 1.0 as KubeFramework | 24 | import org.kube.framework.domain 1.0 as KubeFramework |
@@ -201,6 +202,33 @@ Item { | |||
201 | } | 202 | } |
202 | 203 | ||
203 | text: "Attach" | 204 | text: "Attach" |
205 | |||
206 | onClicked: { | ||
207 | fileDialog.open(); | ||
208 | } | ||
209 | } | ||
210 | } | ||
211 | |||
212 | RowLayout { | ||
213 | |||
214 | Layout.fillWidth: true | ||
215 | |||
216 | Repeater { | ||
217 | |||
218 | model: composer.attachments | ||
219 | |||
220 | delegate: PlasmaComponents.Label { | ||
221 | id: name | ||
222 | |||
223 | text: modelData | ||
224 | |||
225 | Rectangle { | ||
226 | |||
227 | anchors.fill: parent | ||
228 | |||
229 | color: "lightsteelblue" | ||
230 | } | ||
231 | } | ||
204 | } | 232 | } |
205 | } | 233 | } |
206 | 234 | ||
@@ -215,7 +243,18 @@ Item { | |||
215 | 243 | ||
216 | Layout.fillWidth: true | 244 | Layout.fillWidth: true |
217 | Layout.fillHeight: true | 245 | Layout.fillHeight: true |
246 | } | ||
247 | } | ||
248 | |||
249 | FileDialog { | ||
250 | id: fileDialog | ||
251 | |||
252 | title: "Please choose a file" | ||
253 | folder: shortcuts.home | ||
218 | 254 | ||
255 | onAccepted: { | ||
256 | console.log("You chose: " + fileDialog.fileUrl) | ||
257 | composer.addAttachment(fileDialog.fileUrl); | ||
219 | } | 258 | } |
220 | } | 259 | } |
221 | } | 260 | } |
diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp index 78c20246..4ab4ac21 100644 --- a/framework/domain/composercontroller.cpp +++ b/framework/domain/composercontroller.cpp | |||
@@ -117,11 +117,22 @@ void ComposerController::setFromIndex(int fromIndex) | |||
117 | } | 117 | } |
118 | } | 118 | } |
119 | 119 | ||
120 | QStringList ComposerController::attachemts() const | ||
121 | { | ||
122 | return m_attachments; | ||
123 | } | ||
124 | |||
120 | QVariant ComposerController::originalMessage() const | 125 | QVariant ComposerController::originalMessage() const |
121 | { | 126 | { |
122 | return m_originalMessage; | 127 | return m_originalMessage; |
123 | } | 128 | } |
124 | 129 | ||
130 | void ComposerController::addAttachment(const QUrl &fileUrl) | ||
131 | { | ||
132 | m_attachments.append(fileUrl.toString()); | ||
133 | emit attachmentsChanged(); | ||
134 | } | ||
135 | |||
125 | void ComposerController::setOriginalMessage(const QVariant &originalMessage) | 136 | void ComposerController::setOriginalMessage(const QVariant &originalMessage) |
126 | { | 137 | { |
127 | const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray()); | 138 | const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray()); |
diff --git a/framework/domain/composercontroller.h b/framework/domain/composercontroller.h index 711a74e1..b410ce9b 100644 --- a/framework/domain/composercontroller.h +++ b/framework/domain/composercontroller.h | |||
@@ -39,6 +39,7 @@ class ComposerController : public QObject | |||
39 | Q_PROPERTY (QString body READ body WRITE setBody NOTIFY bodyChanged) | 39 | Q_PROPERTY (QString body READ body WRITE setBody NOTIFY bodyChanged) |
40 | Q_PROPERTY (QStringList identityModel READ identityModel) | 40 | Q_PROPERTY (QStringList identityModel READ identityModel) |
41 | Q_PROPERTY (int fromIndex READ fromIndex WRITE setFromIndex NOTIFY fromIndexChanged) | 41 | Q_PROPERTY (int fromIndex READ fromIndex WRITE setFromIndex NOTIFY fromIndexChanged) |
42 | Q_PROPERTY (QStringList attachments READ attachemts NOTIFY attachmentsChanged) | ||
42 | 43 | ||
43 | public: | 44 | public: |
44 | explicit ComposerController(QObject *parent = Q_NULLPTR); | 45 | explicit ComposerController(QObject *parent = Q_NULLPTR); |
@@ -63,6 +64,8 @@ public: | |||
63 | int fromIndex() const; | 64 | int fromIndex() const; |
64 | void setFromIndex(int fromIndex); | 65 | void setFromIndex(int fromIndex); |
65 | 66 | ||
67 | QStringList attachemts() const; | ||
68 | |||
66 | QVariant originalMessage() const; | 69 | QVariant originalMessage() const; |
67 | void setOriginalMessage(const QVariant &originalMessage); | 70 | void setOriginalMessage(const QVariant &originalMessage); |
68 | 71 | ||
@@ -73,11 +76,13 @@ signals: | |||
73 | void ccChanged(); | 76 | void ccChanged(); |
74 | void bccChanged(); | 77 | void bccChanged(); |
75 | void fromIndexChanged(); | 78 | void fromIndexChanged(); |
79 | void attachmentsChanged(); | ||
76 | 80 | ||
77 | public slots: | 81 | public slots: |
78 | void send(); | 82 | void send(); |
79 | void saveAsDraft(); | 83 | void saveAsDraft(); |
80 | void clear(); | 84 | void clear(); |
85 | void addAttachment(const QUrl &fileUrl); | ||
81 | 86 | ||
82 | private: | 87 | private: |
83 | QSharedPointer<KMime::Message> assembleMessage(); | 88 | QSharedPointer<KMime::Message> assembleMessage(); |
@@ -88,6 +93,7 @@ private: | |||
88 | QString m_body; | 93 | QString m_body; |
89 | QStringList m_identityModel; | 94 | QStringList m_identityModel; |
90 | int m_fromIndex; | 95 | int m_fromIndex; |
96 | QStringList m_attachments; | ||
91 | QVariant m_originalMessage; | 97 | QVariant m_originalMessage; |
92 | QVariant m_msg; | 98 | QVariant m_msg; |
93 | }; | 99 | }; |