diff options
Diffstat (limited to 'framework/mail/maillistmodel.cpp')
-rw-r--r-- | framework/mail/maillistmodel.cpp | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/framework/mail/maillistmodel.cpp b/framework/mail/maillistmodel.cpp deleted file mode 100644 index b46fabf8..00000000 --- a/framework/mail/maillistmodel.cpp +++ /dev/null | |||
@@ -1,149 +0,0 @@ | |||
1 | /* | ||
2 | Copyright (c) 2016 Michael Bohlender <michael.bohlender@kdemail.net> | ||
3 | Copyright (c) 2016 Christian Mollekopf <mollekopf@kolabsys.com> | ||
4 | |||
5 | This library is free software; you can redistribute it and/or modify it | ||
6 | under the terms of the GNU Library General Public License as published by | ||
7 | the Free Software Foundation; either version 2 of the License, or (at your | ||
8 | option) any later version. | ||
9 | |||
10 | This library is distributed in the hope that it will be useful, but WITHOUT | ||
11 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public | ||
13 | License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU Library General Public License | ||
16 | along with this library; see the file COPYING.LIB. If not, write to the | ||
17 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
18 | 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | #include "maillistmodel.h" | ||
22 | |||
23 | #include <QFile> | ||
24 | #include <QDateTime> | ||
25 | |||
26 | |||
27 | MailListModel::MailListModel(QObject *parent) | ||
28 | : QSortFilterProxyModel() | ||
29 | { | ||
30 | setDynamicSortFilter(true); | ||
31 | sort(0, Qt::DescendingOrder); | ||
32 | } | ||
33 | |||
34 | MailListModel::~MailListModel() | ||
35 | { | ||
36 | |||
37 | } | ||
38 | |||
39 | QHash< int, QByteArray > MailListModel::roleNames() const | ||
40 | { | ||
41 | QHash<int, QByteArray> roles; | ||
42 | |||
43 | roles[Subject] = "subject"; | ||
44 | roles[Sender] = "sender"; | ||
45 | roles[SenderName] = "senderName"; | ||
46 | roles[Date] = "date"; | ||
47 | roles[Unread] = "unread"; | ||
48 | roles[Important] = "important"; | ||
49 | roles[Id] = "id"; | ||
50 | roles[MimeMessage] = "mimeMessage"; | ||
51 | roles[DomainObject] = "domainObject"; | ||
52 | |||
53 | return roles; | ||
54 | } | ||
55 | |||
56 | QVariant MailListModel::data(const QModelIndex &idx, int role) const | ||
57 | { | ||
58 | auto srcIdx = mapToSource(idx); | ||
59 | switch (role) { | ||
60 | case Subject: | ||
61 | return srcIdx.sibling(srcIdx.row(), 0).data(Qt::DisplayRole).toString(); | ||
62 | case Sender: | ||
63 | return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString(); | ||
64 | case SenderName: | ||
65 | return srcIdx.sibling(srcIdx.row(), 2).data(Qt::DisplayRole).toString(); | ||
66 | case Date: | ||
67 | return srcIdx.sibling(srcIdx.row(), 3).data(Qt::DisplayRole).toString(); | ||
68 | case Unread: | ||
69 | return srcIdx.sibling(srcIdx.row(), 4).data(Qt::DisplayRole).toBool(); | ||
70 | case Important: | ||
71 | return srcIdx.sibling(srcIdx.row(), 5).data(Qt::DisplayRole).toBool(); | ||
72 | case Id: | ||
73 | return srcIdx.data(Sink::Store::DomainObjectBaseRole).value<Sink::ApplicationDomain::ApplicationDomainType::Ptr>()->identifier(); | ||
74 | case DomainObject: | ||
75 | return srcIdx.data(Sink::Store::DomainObjectRole); | ||
76 | case MimeMessage: { | ||
77 | auto filename = srcIdx.sibling(srcIdx.row(), 6).data(Qt::DisplayRole).toString(); | ||
78 | QFile file(filename); | ||
79 | if (file.open(QFile::ReadOnly)) { | ||
80 | auto content = file.readAll(); | ||
81 | qWarning() << filename << content; | ||
82 | return content; | ||
83 | } else { | ||
84 | qWarning() << "Failed to open the file"; | ||
85 | } | ||
86 | return "Failed to read mail."; | ||
87 | } | ||
88 | } | ||
89 | return QSortFilterProxyModel::data(idx, role); | ||
90 | } | ||
91 | |||
92 | bool MailListModel::lessThan(const QModelIndex &left, const QModelIndex &right) const | ||
93 | { | ||
94 | const QVariant leftData = left.sibling(left.row(), 3).data(Qt::DisplayRole); | ||
95 | const QVariant rightData = right.sibling(right.row(), 3).data(Qt::DisplayRole); | ||
96 | return leftData.toDateTime() < rightData.toDateTime(); | ||
97 | } | ||
98 | |||
99 | void MailListModel::runQuery(const Sink::Query &query) | ||
100 | { | ||
101 | m_model = Sink::Store::loadModel<Sink::ApplicationDomain::Mail>(query); | ||
102 | setSourceModel(m_model.data()); | ||
103 | } | ||
104 | |||
105 | void MailListModel::setParentFolder(const QVariant &parentFolder) | ||
106 | { | ||
107 | auto folder = parentFolder.value<Sink::ApplicationDomain::Folder::Ptr>(); | ||
108 | if (!folder) { | ||
109 | qWarning() << "No folder: " << parentFolder; | ||
110 | return; | ||
111 | } | ||
112 | Sink::Query query; | ||
113 | query.liveQuery = true; | ||
114 | query.requestedProperties << "subject" << "sender" << "senderName" << "date" << "unread" << "important" << "folder"; | ||
115 | query.propertyFilter.insert("folder", folder->identifier()); | ||
116 | query.resources << folder->resourceInstanceIdentifier(); | ||
117 | query.sortProperty = "date"; | ||
118 | query.limit = 100; | ||
119 | qWarning() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier(); | ||
120 | runQuery(query); | ||
121 | } | ||
122 | |||
123 | QVariant MailListModel::parentFolder() const | ||
124 | { | ||
125 | return QVariant(); | ||
126 | } | ||
127 | |||
128 | void MailListModel::setMail(const QVariant &variant) | ||
129 | { | ||
130 | auto mail = variant.value<Sink::ApplicationDomain::Mail::Ptr>(); | ||
131 | if (!mail) { | ||
132 | qWarning() << "No mail: " << mail; | ||
133 | return; | ||
134 | } | ||
135 | Sink::Query query; | ||
136 | query.liveQuery = false; | ||
137 | query.requestedProperties << "subject" << "sender" << "senderName" << "date" << "unread" << "important" << "mimeMessage"; | ||
138 | query.ids << mail->identifier(); | ||
139 | query.resources << mail->resourceInstanceIdentifier(); | ||
140 | qWarning() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); | ||
141 | runQuery(query); | ||
142 | } | ||
143 | |||
144 | QVariant MailListModel::mail() const | ||
145 | { | ||
146 | return QVariant(); | ||
147 | } | ||
148 | |||
149 | |||