summaryrefslogtreecommitdiffstats
path: root/framework/mail/maillistmodel.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-03-09 15:20:31 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-03-09 15:20:31 +0100
commitf5185c4799fe0e9c31a218dfc8310515ac921c2b (patch)
tree5524d7a85c8bf82890d79ec6d1bb82b5124fd3b3 /framework/mail/maillistmodel.cpp
parentc9ccf868f5d533a07811b949577f772f618d2de3 (diff)
downloadkube-f5185c4799fe0e9c31a218dfc8310515ac921c2b.tar.gz
kube-f5185c4799fe0e9c31a218dfc8310515ac921c2b.zip
Moved framework/mail to framework/domain
Diffstat (limited to 'framework/mail/maillistmodel.cpp')
-rw-r--r--framework/mail/maillistmodel.cpp149
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
27MailListModel::MailListModel(QObject *parent)
28 : QSortFilterProxyModel()
29{
30 setDynamicSortFilter(true);
31 sort(0, Qt::DescendingOrder);
32}
33
34MailListModel::~MailListModel()
35{
36
37}
38
39QHash< 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
56QVariant 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
92bool 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
99void MailListModel::runQuery(const Sink::Query &query)
100{
101 m_model = Sink::Store::loadModel<Sink::ApplicationDomain::Mail>(query);
102 setSourceModel(m_model.data());
103}
104
105void 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
123QVariant MailListModel::parentFolder() const
124{
125 return QVariant();
126}
127
128void 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
144QVariant MailListModel::mail() const
145{
146 return QVariant();
147}
148
149