From 84714d6f9435b59045c08c76eb556663d1ee36d4 Mon Sep 17 00:00:00 2001 From: Michael Bohlender Date: Thu, 2 Feb 2017 21:23:40 +0100 Subject: add initial contact controller and contact detail view --- framework/domain/CMakeLists.txt | 1 + framework/domain/contactcontroller.cpp | 59 ++++++++++++++++++++++++++++++++++ framework/domain/contactcontroller.h | 56 ++++++++++++++++++++++++++++++++ framework/domain/mailplugin.cpp | 2 ++ 4 files changed, 118 insertions(+) create mode 100644 framework/domain/contactcontroller.cpp create mode 100644 framework/domain/contactcontroller.h (limited to 'framework') 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 mailcontroller.cpp foldercontroller.cpp mouseproxy.cpp + contactcontroller.cpp ) find_package(KF5 REQUIRED COMPONENTS Package) 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 @@ +/* + * Copyright (C) 2017 Michael Bohlender, + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "contactcontroller.h" + +ContactController::ContactController() + : Kube::Controller(), + action_save{new Kube::ControllerAction{this, &ContactController::save}} +{ + loadContact("test"); + updateSaveAction(); +} + +void ContactController::save() { + //TODO +} + +void ContactController::updateSaveAction() +{ + saveAction()->setEnabled(!getName().isEmpty()); +} + +void ContactController::loadContact(const QVariant &contact) +{ + setName("Anita Rosenzweig"); + m_emails << "rosenzweig@kolabnow.com" << "wolfi@kolabnow.com"; +} + +void ContactController::removeEmail(const QString &email) +{ + m_emails.removeOne(email); + emit emailsChanged(); +} + +void ContactController::addEmail(const QString &email) +{ + m_emails << email; + emit emailsChanged(); +} + +QStringList ContactController::emails() const +{ + return m_emails; +} 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 @@ +/* + * Copyright (C) 2017 Michael Bohlender, + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +#pragma once + +#include +#include +#include + +#include "controller.h" + +class ContactController : public Kube::Controller +{ + Q_OBJECT + + Q_PROPERTY(QStringList emails READ emails NOTIFY emailsChanged) + + //Interface properties + KUBE_CONTROLLER_PROPERTY(QString, Name, name) + + KUBE_CONTROLLER_ACTION(save) + +public: + explicit ContactController(); + + QStringList emails() const; + + Q_INVOKABLE void loadContact(const QVariant &contact); + Q_INVOKABLE void removeEmail(const QString &email); + Q_INVOKABLE void addEmail(const QString &email); + +signals: + void emailsChanged(); + +private slots: + void updateSaveAction(); + +private: + QStringList m_emails; +}; 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 @@ #include "mailcontroller.h" #include "foldercontroller.h" #include "mouseproxy.h" +#include "contactcontroller.h" #include @@ -47,4 +48,5 @@ void MailPlugin::registerTypes (const char *uri) qmlRegisterType(uri, 1, 0, "MailController"); qmlRegisterType(uri, 1, 0, "FolderController"); qmlRegisterType(uri, 1, 0, "MouseProxy"); + qmlRegisterType(uri, 1, 0,"ContactController"); } -- cgit v1.2.3