summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--applications/examples/SingleMail.qml50
-rw-r--r--framework/mail/CMakeLists.txt3
-rw-r--r--framework/mail/mailplugin.cpp4
-rw-r--r--framework/mail/singlemailcontroller.cpp71
-rw-r--r--framework/mail/singlemailcontroller.h44
5 files changed, 171 insertions, 1 deletions
diff --git a/applications/examples/SingleMail.qml b/applications/examples/SingleMail.qml
new file mode 100644
index 00000000..6acd00e5
--- /dev/null
+++ b/applications/examples/SingleMail.qml
@@ -0,0 +1,50 @@
1/*
2 * Copyright (C) 2015 Michael Bohlender <michael.bohlender@kdemail.net>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, see <http://www.gnu.org/licenses/>.
16 */
17
18import QtQuick 2.4
19import QtQuick.Controls 1.3
20import QtQuick.Layouts 1.1
21
22import org.kde.akonadi2.mail 1.0
23
24Item {
25 id: root
26
27 SingleMail {
28 id: singleMail
29
30 akonadiId: "test"
31 }
32
33 ScrollView {
34 anchors.fill: parent
35
36 ColumnLayout {
37 Button {
38 text: singleMail.isUnread ? "mark unread" : "mark read"
39 onClicked: singleMail.markMailUnread(!singleMail.isUnread)
40 }
41 Button {
42 text: singleMail.isImportant ? "important" : "not important"
43 onClicked: singleMail.markMailImportant(!singleMail.isImportant)
44 }
45 Label {
46 text: singleMail.message
47 }
48 }
49 }
50} \ No newline at end of file
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
2 mailplugin.cpp 2 mailplugin.cpp
3 maillistcontroller.cpp 3 maillistcontroller.cpp
4 maillistmodel.cpp 4 maillistmodel.cpp
5 singlemailcontroller.cpp
5) 6)
6 7
7add_library(mailplugin SHARED ${mailplugin_SRCS}) 8add_library(mailplugin SHARED ${mailplugin_SRCS})
8 9
9qt5_use_modules(mailplugin Core Quick Qml) 10qt5_use_modules(mailplugin Core Quick Qml)
11
10target_link_libraries(mailplugin /work/install/lib64/libakonadi2common.so) 12target_link_libraries(mailplugin /work/install/lib64/libakonadi2common.so)
13#target_link_libraries(mailplugin /home/mike/projects/_install/lib/x86_64-linux-gnu/libakonadi2common.so)
11 14
12install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) 15install(TARGETS mailplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail)
13install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/akonadi2/mail) \ No newline at end of file 16install(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 @@
2 2
3#include "maillistcontroller.h" 3#include "maillistcontroller.h"
4#include "maillistmodel.h" 4#include "maillistmodel.h"
5#include <QAbstractItemModel> 5#include "singlemailcontroller.h"
6 6
7#include <QAbstractItemModel>
7#include <QtQml> 8#include <QtQml>
8 9
9void MailPlugin::registerTypes (const char *uri) 10void MailPlugin::registerTypes (const char *uri)
@@ -11,4 +12,5 @@ void MailPlugin::registerTypes (const char *uri)
11 Q_ASSERT(uri == QLatin1String("org.kde.akonadi2.mail")); 12 Q_ASSERT(uri == QLatin1String("org.kde.akonadi2.mail"));
12 qmlRegisterType<QAbstractItemModel>(); 13 qmlRegisterType<QAbstractItemModel>();
13 qmlRegisterType<MailListController>(uri, 1, 0, "MailList"); 14 qmlRegisterType<MailListController>(uri, 1, 0, "MailList");
15 qmlRegisterType<SingleMailController>(uri, 1, 0, "SingleMail");
14} 16}
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 @@
1#include "singlemailcontroller.h"
2
3#include <QDebug>
4
5SingleMailController::SingleMailController(QObject *parent): QObject(parent), m_isImportant(false), m_isUnread(true)
6{
7
8}
9
10QString SingleMailController::akonadiId() const
11{
12 return m_akonadiId;
13}
14
15void SingleMailController::setAkonadiId(const QString &id)
16{
17 if(m_akonadiId != id) {
18 m_akonadiId = id;
19
20 loadMessage(m_akonadiId);
21
22 emit akonadiIdChanged();
23 }
24}
25
26QString SingleMailController::message() const
27{
28 return m_message;
29}
30
31bool SingleMailController::isImportant() const
32{
33 return m_isImportant;
34}
35
36bool SingleMailController::isUnread() const
37{
38 return m_isUnread;
39}
40
41void SingleMailController::deleteMail()
42{
43 qDebug() << "UserAction: deleteMail: " << m_akonadiId;
44}
45
46void SingleMailController::markMailImportant(bool important)
47{
48 qDebug() << "UserAction: markMailImportant: " << m_akonadiId;
49
50 if (m_isImportant != important) {
51 m_isImportant = important;
52 emit isImportantChanged();
53 }
54}
55
56void SingleMailController::markMailUnread(bool unread)
57{
58 qDebug() << "UserAction: markMailUnread: " << m_akonadiId;
59
60 if (m_isUnread != unread) {
61 m_isUnread = unread;
62 emit isUnreadChanged();
63 }
64}
65
66void SingleMailController::loadMessage(const QString &id)
67{
68 //load message from akoandi
69 m_message = "The message as HTML";
70 emit messageChanged();
71}
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 @@
1#pragma once
2
3#include "maillistmodel.h"
4
5#include <QObject>
6#include <QString>
7
8class SingleMailController : public QObject
9{
10 Q_OBJECT
11 Q_PROPERTY (QString akonadiId READ akonadiId WRITE setAkonadiId NOTIFY akonadiIdChanged)
12 Q_PROPERTY (bool isUnread READ isUnread NOTIFY isUnreadChanged)
13 Q_PROPERTY (bool isImportant READ isImportant NOTIFY isImportantChanged)
14 Q_PROPERTY (QString message READ message NOTIFY messageChanged)
15
16public:
17 explicit SingleMailController(QObject *parent = Q_NULLPTR);
18
19 QString akonadiId() const;
20 void setAkonadiId(const QString &id);
21
22 bool isUnread() const;
23 bool isImportant() const;
24 QString message() const;
25
26 void loadMessage(const QString &id);
27
28signals:
29 void akonadiIdChanged();
30 void isUnreadChanged();
31 void isImportantChanged();
32 void messageChanged();
33
34public slots:
35 void deleteMail();
36 void markMailImportant(bool important);
37 void markMailUnread(bool unread);
38
39private:
40 QString m_akonadiId;
41 bool m_isImportant;
42 bool m_isUnread;
43 QString m_message;
44};