summaryrefslogtreecommitdiffstats
path: root/framework/domain
diff options
context:
space:
mode:
Diffstat (limited to 'framework/domain')
-rw-r--r--framework/domain/composercontroller.cpp33
-rw-r--r--framework/domain/composercontroller.h7
-rw-r--r--framework/domain/maillistmodel.cpp5
-rw-r--r--framework/domain/maillistmodel.h1
4 files changed, 33 insertions, 13 deletions
diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp
index 0cf61442..94914f17 100644
--- a/framework/domain/composercontroller.cpp
+++ b/framework/domain/composercontroller.cpp
@@ -113,17 +113,21 @@ QStringList ComposerController::attachemts() const
113 return m_attachments; 113 return m_attachments;
114} 114}
115 115
116QVariant ComposerController::originalMessage() const
117{
118 return m_originalMessage;
119}
120
121void ComposerController::addAttachment(const QUrl &fileUrl) 116void ComposerController::addAttachment(const QUrl &fileUrl)
122{ 117{
123 m_attachments.append(fileUrl.toString()); 118 m_attachments.append(fileUrl.toString());
124 emit attachmentsChanged(); 119 emit attachmentsChanged();
125} 120}
126 121
122void ComposerController::setMessage(const KMime::Message::Ptr &msg)
123{
124 setTo(msg->to(true)->asUnicodeString());
125 setCc(msg->cc(true)->asUnicodeString());
126 setSubject(msg->subject(true)->asUnicodeString());
127 setBody(msg->body());
128 m_msg = QVariant::fromValue(msg);
129}
130
127void ComposerController::setOriginalMessage(const QVariant &originalMessage) 131void ComposerController::setOriginalMessage(const QVariant &originalMessage)
128{ 132{
129 const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray()); 133 const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray());
@@ -133,11 +137,20 @@ void ComposerController::setOriginalMessage(const QVariant &originalMessage)
133 mail->parse(); 137 mail->parse();
134 auto reply = MailTemplates::reply(mail); 138 auto reply = MailTemplates::reply(mail);
135 //We assume reply 139 //We assume reply
136 setTo(reply->to(true)->asUnicodeString()); 140 setMessage(reply);
137 setCc(reply->cc(true)->asUnicodeString()); 141 } else {
138 setSubject(reply->subject(true)->asUnicodeString()); 142 m_msg = QVariant();
139 setBody(reply->body()); 143 }
140 m_msg = QVariant::fromValue(reply); 144}
145
146void ComposerController::setDraftMessage(const QVariant &originalMessage)
147{
148 const auto mailData = KMime::CRLFtoLF(originalMessage.toByteArray());
149 if (!mailData.isEmpty()) {
150 KMime::Message::Ptr mail(new KMime::Message);
151 mail->setContent(mailData);
152 mail->parse();
153 setMessage(mail);
141 } else { 154 } else {
142 m_msg = QVariant(); 155 m_msg = QVariant();
143 } 156 }
diff --git a/framework/domain/composercontroller.h b/framework/domain/composercontroller.h
index 4ad505d8..b24c16a9 100644
--- a/framework/domain/composercontroller.h
+++ b/framework/domain/composercontroller.h
@@ -32,7 +32,8 @@ class Message;
32class ComposerController : public QObject 32class ComposerController : public QObject
33{ 33{
34 Q_OBJECT 34 Q_OBJECT
35 Q_PROPERTY (QVariant originalMessage READ originalMessage WRITE setOriginalMessage) 35 Q_PROPERTY (QVariant originalMessage WRITE setOriginalMessage)
36 Q_PROPERTY (QVariant draftMessage WRITE setDraftMessage)
36 Q_PROPERTY (QString to READ to WRITE setTo NOTIFY toChanged) 37 Q_PROPERTY (QString to READ to WRITE setTo NOTIFY toChanged)
37 Q_PROPERTY (QString cc READ cc WRITE setCc NOTIFY ccChanged) 38 Q_PROPERTY (QString cc READ cc WRITE setCc NOTIFY ccChanged)
38 Q_PROPERTY (QString bcc READ bcc WRITE setBcc NOTIFY bccChanged) 39 Q_PROPERTY (QString bcc READ bcc WRITE setBcc NOTIFY bccChanged)
@@ -64,8 +65,8 @@ public:
64 65
65 QStringList attachemts() const; 66 QStringList attachemts() const;
66 67
67 QVariant originalMessage() const;
68 void setOriginalMessage(const QVariant &originalMessage); 68 void setOriginalMessage(const QVariant &originalMessage);
69 void setDraftMessage(const QVariant &draft);
69 70
70signals: 71signals:
71 void subjectChanged(); 72 void subjectChanged();
@@ -83,6 +84,7 @@ public slots:
83 void addAttachment(const QUrl &fileUrl); 84 void addAttachment(const QUrl &fileUrl);
84 85
85private: 86private:
87 void setMessage(const QSharedPointer<KMime::Message> &msg);
86 QSharedPointer<KMime::Message> assembleMessage(); 88 QSharedPointer<KMime::Message> assembleMessage();
87 QString m_to; 89 QString m_to;
88 QString m_cc; 90 QString m_cc;
@@ -90,7 +92,6 @@ private:
90 QString m_subject; 92 QString m_subject;
91 QString m_body; 93 QString m_body;
92 QStringList m_attachments; 94 QStringList m_attachments;
93 QVariant m_originalMessage;
94 QVariant m_msg; 95 QVariant m_msg;
95 int m_currentAccountIndex; 96 int m_currentAccountIndex;
96}; 97};
diff --git a/framework/domain/maillistmodel.cpp b/framework/domain/maillistmodel.cpp
index cbf39a86..4ea7075c 100644
--- a/framework/domain/maillistmodel.cpp
+++ b/framework/domain/maillistmodel.cpp
@@ -46,6 +46,7 @@ QHash< int, QByteArray > MailListModel::roleNames() const
46 roles[Date] = "date"; 46 roles[Date] = "date";
47 roles[Unread] = "unread"; 47 roles[Unread] = "unread";
48 roles[Important] = "important"; 48 roles[Important] = "important";
49 roles[Draft] = "draft";
49 roles[Id] = "id"; 50 roles[Id] = "id";
50 roles[MimeMessage] = "mimeMessage"; 51 roles[MimeMessage] = "mimeMessage";
51 roles[DomainObject] = "domainObject"; 52 roles[DomainObject] = "domainObject";
@@ -70,6 +71,8 @@ QVariant MailListModel::data(const QModelIndex &idx, int role) const
70 return mail->getUnread(); 71 return mail->getUnread();
71 case Important: 72 case Important:
72 return mail->getImportant(); 73 return mail->getImportant();
74 case Draft:
75 return mail->getDraft();
73 case Id: 76 case Id:
74 return mail->identifier(); 77 return mail->identifier();
75 case DomainObject: 78 case DomainObject:
@@ -113,6 +116,7 @@ void MailListModel::setParentFolder(const QVariant &parentFolder)
113 query.request<Mail::Date>(); 116 query.request<Mail::Date>();
114 query.request<Mail::Unread>(); 117 query.request<Mail::Unread>();
115 query.request<Mail::Important>(); 118 query.request<Mail::Important>();
119 query.request<Mail::Draft>();
116 query.request<Mail::Folder>(); 120 query.request<Mail::Folder>();
117 query.filter<Mail::Folder>(*folder); 121 query.filter<Mail::Folder>(*folder);
118 qWarning() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier(); 122 qWarning() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier();
@@ -140,6 +144,7 @@ void MailListModel::setMail(const QVariant &variant)
140 query.request<Mail::Date>(); 144 query.request<Mail::Date>();
141 query.request<Mail::Unread>(); 145 query.request<Mail::Unread>();
142 query.request<Mail::Important>(); 146 query.request<Mail::Important>();
147 query.request<Mail::Draft>();
143 query.request<Mail::MimeMessage>(); 148 query.request<Mail::MimeMessage>();
144 qWarning() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); 149 qWarning() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier();
145 runQuery(query); 150 runQuery(query);
diff --git a/framework/domain/maillistmodel.h b/framework/domain/maillistmodel.h
index 47a2a091..13662a17 100644
--- a/framework/domain/maillistmodel.h
+++ b/framework/domain/maillistmodel.h
@@ -47,6 +47,7 @@ public:
47 Date, 47 Date,
48 Unread, 48 Unread,
49 Important, 49 Important,
50 Draft,
50 Id, 51 Id,
51 MimeMessage, 52 MimeMessage,
52 DomainObject 53 DomainObject