summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Bohlender <michael.bohlender@kdemail.net>2017-02-02 21:23:40 +0100
committerMichael Bohlender <michael.bohlender@kdemail.net>2017-02-02 21:32:50 +0100
commit84714d6f9435b59045c08c76eb556663d1ee36d4 (patch)
tree00fd009d64e2e562ad1d34b4993fac8e80c3320a
parenta319237e545213223e25ed9deb47e94c8529ae10 (diff)
downloadkube-84714d6f9435b59045c08c76eb556663d1ee36d4.tar.gz
kube-84714d6f9435b59045c08c76eb556663d1ee36d4.zip
add initial contact controller and contact detail view
-rw-r--r--components/package/contents/ui/People.qml90
-rw-r--r--framework/domain/CMakeLists.txt1
-rw-r--r--framework/domain/contactcontroller.cpp59
-rw-r--r--framework/domain/contactcontroller.h56
-rw-r--r--framework/domain/mailplugin.cpp2
5 files changed, 208 insertions, 0 deletions
diff --git a/components/package/contents/ui/People.qml b/components/package/contents/ui/People.qml
index 47dd82ec..810ae0f4 100644
--- a/components/package/contents/ui/People.qml
+++ b/components/package/contents/ui/People.qml
@@ -22,6 +22,8 @@ import QtQuick.Controls 1.4 as Controls
22import QtQuick.Layouts 1.1 22import QtQuick.Layouts 1.1
23 23
24import org.kde.kirigami 1.0 as Kirigami 24import org.kde.kirigami 1.0 as Kirigami
25import org.kube.framework.domain 1.0 as KubeFramework
26
25 27
26Popup { 28Popup {
27 29
@@ -120,14 +122,102 @@ Popup {
120 } 122 }
121 123
122 Item { 124 Item {
125
126 KubeFramework.ContactController {
127 id: contactController
128 }
129
123 height: parent.height 130 height: parent.height
124 Layout.fillWidth: true 131 Layout.fillWidth: true
125 132
126 ToolBar { 133 ToolBar {
134 id: detailToolBar
127 135
128 width: parent.width 136 width: parent.width
129 height: Kirigami.Units.gridUnit * 2 137 height: Kirigami.Units.gridUnit * 2
130 } 138 }
139
140 Rectangle {
141
142 anchors {
143 top: detailToolBar.bottom
144 left: parent.left
145 right: parent.right
146 bottom: parent.bottom
147 //margins: Kirigami.Units.largeSpacing
148 }
149
150 color: Krigami.Theme.viewBackgroundColor
151
152 ColumnLayout {
153
154 anchors {
155 top: parent.top
156 left: parent.left
157 margins: Kirigami.Units.smallSpacing
158 }
159
160 width: parent.width
161
162 Avatar {
163 id: avatar
164
165
166 height: Kirigami.Units.gridUnit * 2.5
167 width: height
168
169 name: contactController.name
170 }
171
172 Text {
173 color: Kirigami.Theme.textColor
174 opacity: 0.8
175
176 text: contactController.name
177
178 font.weight: Font.DemiBold
179 }
180
181 Text {
182 color: Kirigami.Theme.textColor
183 text: "Email"
184 font.weight: Font.DemiBold
185 opacity: 0.8
186 }
187
188 ColumnLayout {
189 Repeater {
190 model: contactController.emails
191
192 RowLayout {
193 Text { text: modelData }
194 Controls.ToolButton {
195 iconName: "edit-delete"
196
197 onClicked: {
198 contactController.removeEmail(modelData)
199 }
200 }
201 }
202 }
203
204 RowLayout {
205 TextField {
206 id: newEmail
207 }
208
209 Button {
210 text: "Add email"
211
212 onClicked: {
213 contactController.addEmail(newEmail.text)
214 newEmail.text = "";
215 }
216 }
217 }
218 }
219 }
220 }
131 } 221 }
132 } 222 }
133} 223}
diff --git a/framework/domain/CMakeLists.txt b/framework/domain/CMakeLists.txt
index 01d55de2..31ca5df9 100644
--- a/framework/domain/CMakeLists.txt
+++ b/framework/domain/CMakeLists.txt
@@ -24,6 +24,7 @@ set(mailplugin_SRCS
24 mailcontroller.cpp 24 mailcontroller.cpp
25 foldercontroller.cpp 25 foldercontroller.cpp
26 mouseproxy.cpp 26 mouseproxy.cpp
27 contactcontroller.cpp
27) 28)
28find_package(KF5 REQUIRED COMPONENTS Package) 29find_package(KF5 REQUIRED COMPONENTS Package)
29 30
diff --git a/framework/domain/contactcontroller.cpp b/framework/domain/contactcontroller.cpp
new file mode 100644
index 00000000..0be90e77
--- /dev/null
+++ b/framework/domain/contactcontroller.cpp
@@ -0,0 +1,59 @@
1/*
2 * Copyright (C) 2017 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 2 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 along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18
19#include "contactcontroller.h"
20
21ContactController::ContactController()
22 : Kube::Controller(),
23 action_save{new Kube::ControllerAction{this, &ContactController::save}}
24{
25 loadContact("test");
26 updateSaveAction();
27}
28
29void ContactController::save() {
30 //TODO
31}
32
33void ContactController::updateSaveAction()
34{
35 saveAction()->setEnabled(!getName().isEmpty());
36}
37
38void ContactController::loadContact(const QVariant &contact)
39{
40 setName("Anita Rosenzweig");
41 m_emails << "rosenzweig@kolabnow.com" << "wolfi@kolabnow.com";
42}
43
44void ContactController::removeEmail(const QString &email)
45{
46 m_emails.removeOne(email);
47 emit emailsChanged();
48}
49
50void ContactController::addEmail(const QString &email)
51{
52 m_emails << email;
53 emit emailsChanged();
54}
55
56QStringList ContactController::emails() const
57{
58 return m_emails;
59}
diff --git a/framework/domain/contactcontroller.h b/framework/domain/contactcontroller.h
new file mode 100644
index 00000000..d9bca563
--- /dev/null
+++ b/framework/domain/contactcontroller.h
@@ -0,0 +1,56 @@
1/*
2 * Copyright (C) 2017 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 2 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 along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18
19
20#pragma once
21
22#include <QObject>
23#include <QString>
24#include <QStringList>
25
26#include "controller.h"
27
28class ContactController : public Kube::Controller
29{
30 Q_OBJECT
31
32 Q_PROPERTY(QStringList emails READ emails NOTIFY emailsChanged)
33
34 //Interface properties
35 KUBE_CONTROLLER_PROPERTY(QString, Name, name)
36
37 KUBE_CONTROLLER_ACTION(save)
38
39public:
40 explicit ContactController();
41
42 QStringList emails() const;
43
44 Q_INVOKABLE void loadContact(const QVariant &contact);
45 Q_INVOKABLE void removeEmail(const QString &email);
46 Q_INVOKABLE void addEmail(const QString &email);
47
48signals:
49 void emailsChanged();
50
51private slots:
52 void updateSaveAction();
53
54private:
55 QStringList m_emails;
56};
diff --git a/framework/domain/mailplugin.cpp b/framework/domain/mailplugin.cpp
index 2ec73644..fba6c458 100644
--- a/framework/domain/mailplugin.cpp
+++ b/framework/domain/mailplugin.cpp
@@ -30,6 +30,7 @@
30#include "mailcontroller.h" 30#include "mailcontroller.h"
31#include "foldercontroller.h" 31#include "foldercontroller.h"
32#include "mouseproxy.h" 32#include "mouseproxy.h"
33#include "contactcontroller.h"
33 34
34#include <QtQml> 35#include <QtQml>
35 36
@@ -47,4 +48,5 @@ void MailPlugin::registerTypes (const char *uri)
47 qmlRegisterType<MailController>(uri, 1, 0, "MailController"); 48 qmlRegisterType<MailController>(uri, 1, 0, "MailController");
48 qmlRegisterType<FolderController>(uri, 1, 0, "FolderController"); 49 qmlRegisterType<FolderController>(uri, 1, 0, "FolderController");
49 qmlRegisterType<MouseProxy>(uri, 1, 0, "MouseProxy"); 50 qmlRegisterType<MouseProxy>(uri, 1, 0, "MouseProxy");
51 qmlRegisterType<ContactController>(uri, 1, 0,"ContactController");
50} 52}