From 177da269a96c263a51494ebb38913b0b8d7a47e5 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 23 Oct 2015 10:17:22 +0200 Subject: Test client that loads data from akonadi --- framework/CMakeLists.txt | 2 ++ framework/mail/CMakeLists.txt | 1 + framework/mail/maillistcontroller.cpp | 22 +++++++------- framework/mail/maillistcontroller.h | 9 +++--- framework/mail/maillistmodel.cpp | 55 +++++++---------------------------- framework/mail/maillistmodel.h | 15 ++++------ framework/mail/mailplugin.cpp | 5 ++-- 7 files changed, 39 insertions(+), 70 deletions(-) (limited to 'framework') diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt index 37c15e16..1e0dd958 100644 --- a/framework/CMakeLists.txt +++ b/framework/CMakeLists.txt @@ -19,6 +19,8 @@ find_package(Qt5 COMPONENTS REQUIRED Core Qml) set(CMAKE_AUTOMOC ON) add_definitions("-Wall -std=c++0x -g") include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/common) +include_directories(SYSTEM /work/install/include/) +include_directories(SYSTEM /work/install/include/KF5/) enable_testing() diff --git a/framework/mail/CMakeLists.txt b/framework/mail/CMakeLists.txt index 100b9d9e..0327d457 100644 --- a/framework/mail/CMakeLists.txt +++ b/framework/mail/CMakeLists.txt @@ -7,6 +7,7 @@ set(mailplugin_SRCS add_library(mailplugin SHARED ${mailplugin_SRCS}) qt5_use_modules(mailplugin Core Quick Qml) +target_link_libraries(mailplugin /work/install/lib64/libakonadi2common.so) install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) 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 index 60d29f7c..19fdfffb 100644 --- a/framework/mail/maillistcontroller.cpp +++ b/framework/mail/maillistcontroller.cpp @@ -2,13 +2,19 @@ #include +#include +#include + +#include "maillistmodel.h" + MailListController::MailListController(QObject *parent) : QObject(parent), m_model(new MailListModel) { } -MailListModel *MailListController::model() const +QAbstractItemModel *MailListController::model() const { return m_model.data(); + } QString MailListController::query() const @@ -18,18 +24,14 @@ QString MailListController::query() const void MailListController::setQuery(const QString &query) { - if ( m_query != query) { - m_query = query; - m_model->runQuery(query); - emit queryChanged(); + qDebug() << "set query"; + if (m_query != query) { + m_query = query; + emit queryChanged(); } } void MailListController::addMail(QString subject) { - QStringList list; - - list << subject; - - m_model->addMails(list); + qDebug() << "add mail"; } diff --git a/framework/mail/maillistcontroller.h b/framework/mail/maillistcontroller.h index 8aa5713b..b5a95374 100644 --- a/framework/mail/maillistcontroller.h +++ b/framework/mail/maillistcontroller.h @@ -5,19 +5,20 @@ #include #include #include +#include class MailListController : public QObject { Q_OBJECT Q_PROPERTY (QString query READ query WRITE setQuery NOTIFY queryChanged) - Q_PROPERTY (MailListModel *model READ model CONSTANT) + Q_PROPERTY (QAbstractItemModel *model READ model CONSTANT) public: explicit MailListController(QObject *parent = Q_NULLPTR); QString query() const; void setQuery(const QString &query); - MailListModel *model() const; + QAbstractItemModel *model() const; signals: void queryChanged(); @@ -27,5 +28,5 @@ public slots: private: QString m_query; - QScopedPointer m_model; -}; \ No newline at end of file + QScopedPointer m_model; +}; diff --git a/framework/mail/maillistmodel.cpp b/framework/mail/maillistmodel.cpp index 14219ee2..f18861c4 100644 --- a/framework/mail/maillistmodel.cpp +++ b/framework/mail/maillistmodel.cpp @@ -1,10 +1,12 @@ #include "maillistmodel.h" -#include - -MailListModel::MailListModel(QObject *parent) : QAbstractListModel(parent), m_msgs() +MailListModel::MailListModel(QObject *parent) : ListModelResult(QList() << "subject" << "uid") { - + Akonadi2::Query query; + query.syncOnDemand = false; + query.processAll = false; + query.liveQuery = true; + setEmitter(Akonadi2::Store::load(query)); } MailListModel::~MailListModel() @@ -21,53 +23,16 @@ QHash< int, QByteArray > MailListModel::roleNames() const return roles; } - -QVariant MailListModel::data(const QModelIndex &index, int role) const +QVariant MailListModel::data(const QModelIndex &idx, int role) const { - if (!index.isValid()) { - return QVariant(); - } - - if (index.row() >= m_msgs.count() || index.row() < 0) { - return QVariant(); - } - switch (role) { + switch (role) { case Subject: - return m_msgs.at(index.row()); - } - return QVariant(); -} - -int MailListModel::rowCount(const QModelIndex &parent) const -{ - return m_msgs.size(); -} - -bool MailListModel::addMails(const QStringList &items) -{ - beginInsertRows(QModelIndex(), rowCount(), rowCount() + items.size() - 1); - - m_msgs += items; - - endInsertRows(); - - return true; -} - -void MailListModel::clearMails() -{ - if (!m_msgs.isEmpty()) { - beginResetModel(); - m_msgs.clear(); - endResetModel(); + return ListModelResult::data(index(idx.row(), 0, idx.parent()), Qt::DisplayRole); } + return QVariant(); } void MailListModel::runQuery(const QString& query) { - clearMails(); - QStringList itemlist; - itemlist << "I feel tiny" << "Big News!" << "[FUN] lets do things"; - addMails(itemlist); } diff --git a/framework/mail/maillistmodel.h b/framework/mail/maillistmodel.h index 72a26c59..b0a153a5 100644 --- a/framework/mail/maillistmodel.h +++ b/framework/mail/maillistmodel.h @@ -3,7 +3,11 @@ #include #include -class MailListModel : public QAbstractListModel +#include +#include +#include + +class MailListModel : public ListModelResult { Q_OBJECT @@ -17,13 +21,6 @@ public: QHash roleNames() const; QVariant data(const QModelIndex &index, int role) const; - int rowCount(const QModelIndex &parent = QModelIndex()) const; - - bool addMails(const QStringList &items); - void clearMails(); void runQuery(const QString &query); - -private: - QStringList m_msgs; -}; \ No newline at end of file +}; diff --git a/framework/mail/mailplugin.cpp b/framework/mail/mailplugin.cpp index b9800541..ea8a5ec9 100644 --- a/framework/mail/mailplugin.cpp +++ b/framework/mail/mailplugin.cpp @@ -2,12 +2,13 @@ #include "maillistcontroller.h" #include "maillistmodel.h" +#include #include void MailPlugin::registerTypes (const char *uri) { Q_ASSERT(uri == QLatin1String("org.kde.akonadi2.mail")); + qmlRegisterType(); qmlRegisterType(uri, 1, 0, "MailList"); - qmlRegisterType(uri, 1, 0, "MailListModel"); -} \ No newline at end of file +} -- cgit v1.2.3