summaryrefslogtreecommitdiffstats
path: root/framework
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-01-03 20:31:10 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-01-03 20:31:10 +0100
commitdd09ca9ef4bb9780b953d6dd2999dbefe50bd1ff (patch)
treedfcef3671c7f36d762f74b4226477fe6978688f2 /framework
parentdea41f0345188d776522e5b91ba25d25c418e581 (diff)
downloadkube-dd09ca9ef4bb9780b953d6dd2999dbefe50bd1ff.tar.gz
kube-dd09ca9ef4bb9780b953d6dd2999dbefe50bd1ff.zip
Instead of using controllers, directly use the models
...and connect components via properties
Diffstat (limited to 'framework')
-rw-r--r--framework/mail/CMakeLists.txt4
-rw-r--r--framework/mail/folderlistmodel.cpp3
-rw-r--r--framework/mail/folderlistmodel.h5
-rw-r--r--framework/mail/maillistmodel.cpp48
-rw-r--r--framework/mail/maillistmodel.h8
-rw-r--r--framework/mail/mailplugin.cpp15
-rw-r--r--framework/mail/qmldir4
7 files changed, 69 insertions, 18 deletions
diff --git a/framework/mail/CMakeLists.txt b/framework/mail/CMakeLists.txt
index 7d7569a7..38ba3935 100644
--- a/framework/mail/CMakeLists.txt
+++ b/framework/mail/CMakeLists.txt
@@ -14,5 +14,5 @@ qt5_use_modules(mailplugin Core Quick Qml)
14target_link_libraries(mailplugin /work/install/lib64/libakonadi2common.so) 14target_link_libraries(mailplugin /work/install/lib64/libakonadi2common.so)
15#target_link_libraries(mailplugin /home/mike/projects/_install/lib/x86_64-linux-gnu/libakonadi2common.so) 15#target_link_libraries(mailplugin /home/mike/projects/_install/lib/x86_64-linux-gnu/libakonadi2common.so)
16 16
17install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) 17install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/kube/mail)
18install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) \ No newline at end of file 18install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/kube/mail)
diff --git a/framework/mail/folderlistmodel.cpp b/framework/mail/folderlistmodel.cpp
index 0240d95a..0f66c46f 100644
--- a/framework/mail/folderlistmodel.cpp
+++ b/framework/mail/folderlistmodel.cpp
@@ -25,6 +25,7 @@ QHash< int, QByteArray > FolderListModel::roleNames() const
25 roles[Name] = "name"; 25 roles[Name] = "name";
26 roles[Icon] = "icon"; 26 roles[Icon] = "icon";
27 roles[Id] = "id"; 27 roles[Id] = "id";
28 roles[DomainObject] = "domainObject";
28 29
29 return roles; 30 return roles;
30} 31}
@@ -39,6 +40,8 @@ QVariant FolderListModel::data(const QModelIndex &idx, int role) const
39 return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString(); 40 return srcIdx.sibling(srcIdx.row(), 1).data(Qt::DisplayRole).toString();
40 case Id: 41 case Id:
41 return srcIdx.data(Akonadi2::Store::DomainObjectBaseRole).value<Akonadi2::ApplicationDomain::ApplicationDomainType::Ptr>()->identifier(); 42 return srcIdx.data(Akonadi2::Store::DomainObjectBaseRole).value<Akonadi2::ApplicationDomain::ApplicationDomainType::Ptr>()->identifier();
43 case DomainObject:
44 return srcIdx.data(Akonadi2::Store::DomainObjectRole);
42 } 45 }
43 return QIdentityProxyModel::data(idx, role); 46 return QIdentityProxyModel::data(idx, role);
44} 47}
diff --git a/framework/mail/folderlistmodel.h b/framework/mail/folderlistmodel.h
index 829bebff..9ce3ee79 100644
--- a/framework/mail/folderlistmodel.h
+++ b/framework/mail/folderlistmodel.h
@@ -17,8 +17,9 @@ public:
17 17
18 enum Roles { 18 enum Roles {
19 Name = Qt::UserRole + 1, 19 Name = Qt::UserRole + 1,
20 Icon, 20 Icon,
21 Id 21 Id,
22 DomainObject
22 }; 23 };
23 24
24 QHash<int, QByteArray> roleNames() const; 25 QHash<int, QByteArray> roleNames() const;
diff --git a/framework/mail/maillistmodel.cpp b/framework/mail/maillistmodel.cpp
index 80fb661f..e6a9c218 100644
--- a/framework/mail/maillistmodel.cpp
+++ b/framework/mail/maillistmodel.cpp
@@ -25,6 +25,7 @@ QHash< int, QByteArray > MailListModel::roleNames() const
25 roles[Important] = "important"; 25 roles[Important] = "important";
26 roles[Id] = "id"; 26 roles[Id] = "id";
27 roles[MimeMessage] = "mimeMessage"; 27 roles[MimeMessage] = "mimeMessage";
28 roles[DomainObject] = "domainObject";
28 29
29 return roles; 30 return roles;
30} 31}
@@ -70,3 +71,50 @@ void MailListModel::runQuery(const Akonadi2::Query &query)
70 setSourceModel(m_model.data()); 71 setSourceModel(m_model.data());
71} 72}
72 73
74void MailListModel::setParentFolder(const QVariant &parentFolder)
75{
76 auto folder = parentFolder.value<Akonadi2::ApplicationDomain::Folder::Ptr>();
77 if (!folder) {
78 qWarning() << "No folder: " << parentFolder;
79 return;
80 }
81 Akonadi2::Query query;
82 query.syncOnDemand = false;
83 query.processAll = false;
84 query.liveQuery = true;
85 query.requestedProperties << "subject" << "sender" << "senderName" << "date" << "unread" << "important" << "folder";
86 query.propertyFilter.insert("folder", folder->identifier());
87 query.resources << folder->resourceInstanceIdentifier();
88 qWarning() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier();
89 runQuery(query);
90}
91
92QVariant MailListModel::parentFolder() const
93{
94 return QVariant();
95}
96
97void MailListModel::setMail(const QVariant &variant)
98{
99 auto mail = variant.value<Akonadi2::ApplicationDomain::Mail::Ptr>();
100 if (!mail) {
101 qWarning() << "No mail: " << mail;
102 return;
103 }
104 Akonadi2::Query query;
105 query.syncOnDemand = false;
106 query.processAll = false;
107 query.liveQuery = false;
108 query.requestedProperties << "subject" << "sender" << "senderName" << "date" << "unread" << "important" << "mimeMessage";
109 query.ids << mail->identifier();
110 query.resources << mail->resourceInstanceIdentifier();
111 qWarning() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier();
112 runQuery(query);
113}
114
115QVariant MailListModel::mail() const
116{
117 return QVariant();
118}
119
120
diff --git a/framework/mail/maillistmodel.h b/framework/mail/maillistmodel.h
index b5fa7c57..7718477c 100644
--- a/framework/mail/maillistmodel.h
+++ b/framework/mail/maillistmodel.h
@@ -9,6 +9,8 @@
9class MailListModel : public QIdentityProxyModel 9class MailListModel : public QIdentityProxyModel
10{ 10{
11 Q_OBJECT 11 Q_OBJECT
12 Q_PROPERTY (QVariant parentFolder READ parentFolder WRITE setParentFolder)
13 Q_PROPERTY (QVariant mail READ mail WRITE setMail)
12 14
13public: 15public:
14 MailListModel(QObject *parent = Q_NULLPTR); 16 MailListModel(QObject *parent = Q_NULLPTR);
@@ -31,6 +33,12 @@ public:
31 QHash<int, QByteArray> roleNames() const; 33 QHash<int, QByteArray> roleNames() const;
32 34
33 void runQuery(const Akonadi2::Query &query); 35 void runQuery(const Akonadi2::Query &query);
36
37 void setParentFolder(const QVariant &parentFolder);
38 QVariant parentFolder() const;
39
40 void setMail(const QVariant &mail);
41 QVariant mail() const;
34private: 42private:
35 QSharedPointer<QAbstractItemModel> m_model; 43 QSharedPointer<QAbstractItemModel> m_model;
36}; 44};
diff --git a/framework/mail/mailplugin.cpp b/framework/mail/mailplugin.cpp
index b2939acf..bf92f4e7 100644
--- a/framework/mail/mailplugin.cpp
+++ b/framework/mail/mailplugin.cpp
@@ -1,23 +1,14 @@
1#include "mailplugin.h" 1#include "mailplugin.h"
2 2
3#include "maillistcontroller.h"
4#include "maillistmodel.h" 3#include "maillistmodel.h"
5#include "singlemailcontroller.h"
6#include "folderlistcontroller.h"
7#include "folderlistmodel.h" 4#include "folderlistmodel.h"
8 5
9#include <QAbstractItemModel>
10#include <QtQml> 6#include <QtQml>
11 7
12void MailPlugin::registerTypes (const char *uri) 8void MailPlugin::registerTypes (const char *uri)
13{ 9{
14 Q_ASSERT(uri == QLatin1String("org.kde.akonadi2.mail")); 10 Q_ASSERT(uri == QLatin1String("org.kde.kube.mail"));
15 11
16 qmlRegisterType<FolderListModel>(); 12 qmlRegisterType<FolderListModel>(uri, 1, 0, "FolderListModel");
17 qmlRegisterType<FolderListController>(uri, 1, 0, "FolderList"); 13 qmlRegisterType<MailListModel>(uri, 1, 0, "MailListModel");
18
19 qmlRegisterType<MailListModel>();
20 qmlRegisterType<MailListController>(uri, 1, 0, "MailList");
21
22 qmlRegisterType<SingleMailController>(uri, 1, 0, "SingleMail");
23} 14}
diff --git a/framework/mail/qmldir b/framework/mail/qmldir
index 7ca3151b..fd54e5ee 100644
--- a/framework/mail/qmldir
+++ b/framework/mail/qmldir
@@ -1,3 +1,3 @@
1module org.kde.akonadi2.mail 1module org.kde.kube.mail
2 2
3plugin mailplugin \ No newline at end of file 3plugin mailplugin