From 5b1025d49af793381ad3ea921e9b03d3326ac979 Mon Sep 17 00:00:00 2001 From: Michael Bohlender Date: Sun, 6 Dec 2015 21:01:20 +0100 Subject: add SingleMailController including example --- framework/mail/CMakeLists.txt | 3 ++ framework/mail/mailplugin.cpp | 4 +- framework/mail/singlemailcontroller.cpp | 71 +++++++++++++++++++++++++++++++++ framework/mail/singlemailcontroller.h | 44 ++++++++++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 framework/mail/singlemailcontroller.cpp create mode 100644 framework/mail/singlemailcontroller.h (limited to 'framework/mail') diff --git a/framework/mail/CMakeLists.txt b/framework/mail/CMakeLists.txt index 0327d457..c57ac1fe 100644 --- a/framework/mail/CMakeLists.txt +++ b/framework/mail/CMakeLists.txt @@ -2,12 +2,15 @@ set(mailplugin_SRCS mailplugin.cpp maillistcontroller.cpp maillistmodel.cpp + singlemailcontroller.cpp ) add_library(mailplugin SHARED ${mailplugin_SRCS}) qt5_use_modules(mailplugin Core Quick Qml) + target_link_libraries(mailplugin /work/install/lib64/libakonadi2common.so) +#target_link_libraries(mailplugin /home/mike/projects/_install/lib/x86_64-linux-gnu/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/mailplugin.cpp b/framework/mail/mailplugin.cpp index ea8a5ec9..36c75e7f 100644 --- a/framework/mail/mailplugin.cpp +++ b/framework/mail/mailplugin.cpp @@ -2,8 +2,9 @@ #include "maillistcontroller.h" #include "maillistmodel.h" -#include +#include "singlemailcontroller.h" +#include #include void MailPlugin::registerTypes (const char *uri) @@ -11,4 +12,5 @@ void MailPlugin::registerTypes (const char *uri) Q_ASSERT(uri == QLatin1String("org.kde.akonadi2.mail")); qmlRegisterType(); qmlRegisterType(uri, 1, 0, "MailList"); + qmlRegisterType(uri, 1, 0, "SingleMail"); } diff --git a/framework/mail/singlemailcontroller.cpp b/framework/mail/singlemailcontroller.cpp new file mode 100644 index 00000000..68105839 --- /dev/null +++ b/framework/mail/singlemailcontroller.cpp @@ -0,0 +1,71 @@ +#include "singlemailcontroller.h" + +#include + +SingleMailController::SingleMailController(QObject *parent): QObject(parent), m_isImportant(false), m_isUnread(true) +{ + +} + +QString SingleMailController::akonadiId() const +{ + return m_akonadiId; +} + +void SingleMailController::setAkonadiId(const QString &id) +{ + if(m_akonadiId != id) { + m_akonadiId = id; + + loadMessage(m_akonadiId); + + emit akonadiIdChanged(); + } +} + +QString SingleMailController::message() const +{ + return m_message; +} + +bool SingleMailController::isImportant() const +{ + return m_isImportant; +} + +bool SingleMailController::isUnread() const +{ + return m_isUnread; +} + +void SingleMailController::deleteMail() +{ + qDebug() << "UserAction: deleteMail: " << m_akonadiId; +} + +void SingleMailController::markMailImportant(bool important) +{ + qDebug() << "UserAction: markMailImportant: " << m_akonadiId; + + if (m_isImportant != important) { + m_isImportant = important; + emit isImportantChanged(); + } +} + +void SingleMailController::markMailUnread(bool unread) +{ + qDebug() << "UserAction: markMailUnread: " << m_akonadiId; + + if (m_isUnread != unread) { + m_isUnread = unread; + emit isUnreadChanged(); + } +} + +void SingleMailController::loadMessage(const QString &id) +{ + //load message from akoandi + m_message = "The message as HTML"; + emit messageChanged(); +} diff --git a/framework/mail/singlemailcontroller.h b/framework/mail/singlemailcontroller.h new file mode 100644 index 00000000..e6ec9a22 --- /dev/null +++ b/framework/mail/singlemailcontroller.h @@ -0,0 +1,44 @@ +#pragma once + +#include "maillistmodel.h" + +#include +#include + +class SingleMailController : public QObject +{ + Q_OBJECT + Q_PROPERTY (QString akonadiId READ akonadiId WRITE setAkonadiId NOTIFY akonadiIdChanged) + Q_PROPERTY (bool isUnread READ isUnread NOTIFY isUnreadChanged) + Q_PROPERTY (bool isImportant READ isImportant NOTIFY isImportantChanged) + Q_PROPERTY (QString message READ message NOTIFY messageChanged) + +public: + explicit SingleMailController(QObject *parent = Q_NULLPTR); + + QString akonadiId() const; + void setAkonadiId(const QString &id); + + bool isUnread() const; + bool isImportant() const; + QString message() const; + + void loadMessage(const QString &id); + +signals: + void akonadiIdChanged(); + void isUnreadChanged(); + void isImportantChanged(); + void messageChanged(); + +public slots: + void deleteMail(); + void markMailImportant(bool important); + void markMailUnread(bool unread); + +private: + QString m_akonadiId; + bool m_isImportant; + bool m_isUnread; + QString m_message; +}; -- cgit v1.2.3