diff options
Diffstat (limited to 'framework')
-rw-r--r-- | framework/CMakeLists.txt | 29 | ||||
-rw-r--r-- | framework/mail/CMakeLists.txt | 12 | ||||
-rw-r--r-- | framework/mail/maillistcontroller.cpp | 35 | ||||
-rw-r--r-- | framework/mail/maillistcontroller.h | 31 | ||||
-rw-r--r-- | framework/mail/maillistmodel.cpp | 73 | ||||
-rw-r--r-- | framework/mail/maillistmodel.h | 29 | ||||
-rw-r--r-- | framework/mail/mailplugin.cpp | 13 | ||||
-rw-r--r-- | framework/mail/mailplugin.h | 13 | ||||
-rw-r--r-- | framework/mail/qmldir | 3 |
9 files changed, 238 insertions, 0 deletions
diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt new file mode 100644 index 00000000..37c15e16 --- /dev/null +++ b/framework/CMakeLists.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | cmake_minimum_required(VERSION 2.8.12) | ||
2 | |||
3 | |||
4 | # ECM setup | ||
5 | find_package(ECM 0.0.10 REQUIRED NO_MODULE) | ||
6 | set(CMAKE_MODULE_PATH | ||
7 | ${ECM_MODULE_PATH} | ||
8 | ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules | ||
9 | ${CMAKE_MODULE_PATH}) | ||
10 | |||
11 | include(FeatureSummary) | ||
12 | include(GenerateExportHeader) | ||
13 | include(ECMGenerateHeaders) | ||
14 | include(ECMPackageConfigHelpers) | ||
15 | include(KDEInstallDirs) | ||
16 | |||
17 | find_package(Qt5 COMPONENTS REQUIRED Core Qml) | ||
18 | |||
19 | set(CMAKE_AUTOMOC ON) | ||
20 | add_definitions("-Wall -std=c++0x -g") | ||
21 | include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/common) | ||
22 | |||
23 | enable_testing() | ||
24 | |||
25 | set(AKONADI2_RESOURCE_PLUGINS_PATH ${QT_PLUGIN_INSTALL_DIR}/akonadi2/resources) | ||
26 | |||
27 | add_subdirectory(mail) | ||
28 | |||
29 | feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) | ||
diff --git a/framework/mail/CMakeLists.txt b/framework/mail/CMakeLists.txt new file mode 100644 index 00000000..100b9d9e --- /dev/null +++ b/framework/mail/CMakeLists.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | set(mailplugin_SRCS | ||
2 | mailplugin.cpp | ||
3 | maillistcontroller.cpp | ||
4 | maillistmodel.cpp | ||
5 | ) | ||
6 | |||
7 | add_library(mailplugin SHARED ${mailplugin_SRCS}) | ||
8 | |||
9 | qt5_use_modules(mailplugin Core Quick Qml) | ||
10 | |||
11 | install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) | ||
12 | install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) \ No newline at end of file | ||
diff --git a/framework/mail/maillistcontroller.cpp b/framework/mail/maillistcontroller.cpp new file mode 100644 index 00000000..60d29f7c --- /dev/null +++ b/framework/mail/maillistcontroller.cpp | |||
@@ -0,0 +1,35 @@ | |||
1 | #include "maillistcontroller.h" | ||
2 | |||
3 | #include <QStringList> | ||
4 | |||
5 | MailListController::MailListController(QObject *parent) : QObject(parent), m_model(new MailListModel) | ||
6 | { | ||
7 | } | ||
8 | |||
9 | MailListModel *MailListController::model() const | ||
10 | { | ||
11 | return m_model.data(); | ||
12 | } | ||
13 | |||
14 | QString MailListController::query() const | ||
15 | { | ||
16 | return m_query; | ||
17 | } | ||
18 | |||
19 | void MailListController::setQuery(const QString &query) | ||
20 | { | ||
21 | if ( m_query != query) { | ||
22 | m_query = query; | ||
23 | m_model->runQuery(query); | ||
24 | emit queryChanged(); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | void MailListController::addMail(QString subject) | ||
29 | { | ||
30 | QStringList list; | ||
31 | |||
32 | list << subject; | ||
33 | |||
34 | m_model->addMails(list); | ||
35 | } | ||
diff --git a/framework/mail/maillistcontroller.h b/framework/mail/maillistcontroller.h new file mode 100644 index 00000000..8aa5713b --- /dev/null +++ b/framework/mail/maillistcontroller.h | |||
@@ -0,0 +1,31 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include "maillistmodel.h" | ||
4 | |||
5 | #include <QObject> | ||
6 | #include <QScopedPointer> | ||
7 | #include <QString> | ||
8 | |||
9 | class MailListController : public QObject | ||
10 | { | ||
11 | Q_OBJECT | ||
12 | Q_PROPERTY (QString query READ query WRITE setQuery NOTIFY queryChanged) | ||
13 | Q_PROPERTY (MailListModel *model READ model CONSTANT) | ||
14 | |||
15 | public: | ||
16 | explicit MailListController(QObject *parent = Q_NULLPTR); | ||
17 | |||
18 | QString query() const; | ||
19 | void setQuery(const QString &query); | ||
20 | MailListModel *model() const; | ||
21 | |||
22 | signals: | ||
23 | void queryChanged(); | ||
24 | |||
25 | public slots: | ||
26 | void addMail(QString subject); | ||
27 | |||
28 | private: | ||
29 | QString m_query; | ||
30 | QScopedPointer<MailListModel> m_model; | ||
31 | }; \ No newline at end of file | ||
diff --git a/framework/mail/maillistmodel.cpp b/framework/mail/maillistmodel.cpp new file mode 100644 index 00000000..14219ee2 --- /dev/null +++ b/framework/mail/maillistmodel.cpp | |||
@@ -0,0 +1,73 @@ | |||
1 | #include "maillistmodel.h" | ||
2 | |||
3 | #include <QDateTime> | ||
4 | |||
5 | MailListModel::MailListModel(QObject *parent) : QAbstractListModel(parent), m_msgs() | ||
6 | { | ||
7 | |||
8 | } | ||
9 | |||
10 | MailListModel::~MailListModel() | ||
11 | { | ||
12 | |||
13 | } | ||
14 | |||
15 | QHash< int, QByteArray > MailListModel::roleNames() const | ||
16 | { | ||
17 | QHash<int, QByteArray> roles; | ||
18 | |||
19 | roles[Subject] = "subject"; | ||
20 | |||
21 | return roles; | ||
22 | } | ||
23 | |||
24 | |||
25 | QVariant MailListModel::data(const QModelIndex &index, int role) const | ||
26 | { | ||
27 | if (!index.isValid()) { | ||
28 | return QVariant(); | ||
29 | } | ||
30 | |||
31 | if (index.row() >= m_msgs.count() || index.row() < 0) { | ||
32 | return QVariant(); | ||
33 | } | ||
34 | switch (role) { | ||
35 | case Subject: | ||
36 | return m_msgs.at(index.row()); | ||
37 | } | ||
38 | return QVariant(); | ||
39 | } | ||
40 | |||
41 | int MailListModel::rowCount(const QModelIndex &parent) const | ||
42 | { | ||
43 | return m_msgs.size(); | ||
44 | } | ||
45 | |||
46 | bool MailListModel::addMails(const QStringList &items) | ||
47 | { | ||
48 | beginInsertRows(QModelIndex(), rowCount(), rowCount() + items.size() - 1); | ||
49 | |||
50 | m_msgs += items; | ||
51 | |||
52 | endInsertRows(); | ||
53 | |||
54 | return true; | ||
55 | } | ||
56 | |||
57 | void MailListModel::clearMails() | ||
58 | { | ||
59 | if (!m_msgs.isEmpty()) { | ||
60 | beginResetModel(); | ||
61 | m_msgs.clear(); | ||
62 | endResetModel(); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | void MailListModel::runQuery(const QString& query) | ||
67 | { | ||
68 | clearMails(); | ||
69 | QStringList itemlist; | ||
70 | itemlist << "I feel tiny" << "Big News!" << "[FUN] lets do things"; | ||
71 | addMails(itemlist); | ||
72 | } | ||
73 | |||
diff --git a/framework/mail/maillistmodel.h b/framework/mail/maillistmodel.h new file mode 100644 index 00000000..72a26c59 --- /dev/null +++ b/framework/mail/maillistmodel.h | |||
@@ -0,0 +1,29 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include <QAbstractListModel> | ||
4 | #include <QStringList> | ||
5 | |||
6 | class MailListModel : public QAbstractListModel | ||
7 | { | ||
8 | Q_OBJECT | ||
9 | |||
10 | public: | ||
11 | MailListModel(QObject *parent = Q_NULLPTR); | ||
12 | ~MailListModel(); | ||
13 | |||
14 | enum Roles { | ||
15 | Subject = Qt::UserRole + 1 | ||
16 | }; | ||
17 | |||
18 | QHash<int, QByteArray> roleNames() const; | ||
19 | QVariant data(const QModelIndex &index, int role) const; | ||
20 | int rowCount(const QModelIndex &parent = QModelIndex()) const; | ||
21 | |||
22 | bool addMails(const QStringList &items); | ||
23 | void clearMails(); | ||
24 | |||
25 | void runQuery(const QString &query); | ||
26 | |||
27 | private: | ||
28 | QStringList m_msgs; | ||
29 | }; \ No newline at end of file | ||
diff --git a/framework/mail/mailplugin.cpp b/framework/mail/mailplugin.cpp new file mode 100644 index 00000000..b9800541 --- /dev/null +++ b/framework/mail/mailplugin.cpp | |||
@@ -0,0 +1,13 @@ | |||
1 | #include "mailplugin.h" | ||
2 | |||
3 | #include "maillistcontroller.h" | ||
4 | #include "maillistmodel.h" | ||
5 | |||
6 | #include <QtQml> | ||
7 | |||
8 | void MailPlugin::registerTypes (const char *uri) | ||
9 | { | ||
10 | Q_ASSERT(uri == QLatin1String("org.kde.akonadi2.mail")); | ||
11 | qmlRegisterType<MailListController>(uri, 1, 0, "MailList"); | ||
12 | qmlRegisterType<MailListModel>(uri, 1, 0, "MailListModel"); | ||
13 | } \ No newline at end of file | ||
diff --git a/framework/mail/mailplugin.h b/framework/mail/mailplugin.h new file mode 100644 index 00000000..e835c384 --- /dev/null +++ b/framework/mail/mailplugin.h | |||
@@ -0,0 +1,13 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include <QQmlEngine> | ||
4 | #include <QQmlExtensionPlugin> | ||
5 | |||
6 | class MailPlugin : public QQmlExtensionPlugin | ||
7 | { | ||
8 | Q_OBJECT | ||
9 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") | ||
10 | |||
11 | public: | ||
12 | virtual void registerTypes(const char *uri); | ||
13 | }; \ No newline at end of file | ||
diff --git a/framework/mail/qmldir b/framework/mail/qmldir new file mode 100644 index 00000000..7ca3151b --- /dev/null +++ b/framework/mail/qmldir | |||
@@ -0,0 +1,3 @@ | |||
1 | module org.kde.akonadi2.mail | ||
2 | |||
3 | plugin mailplugin \ No newline at end of file | ||