From a2fda0ad4fc013e4f9dd7d68ce2ec5385c1717ce Mon Sep 17 00:00:00 2001 From: Michael Bohlender Date: Thu, 5 Jan 2017 15:17:04 +0100 Subject: move accounts related files to seperate folder --- framework/accounts/accountfactory.cpp | 65 ++++++++++++++++++++++++++ framework/accounts/accountfactory.h | 51 ++++++++++++++++++++ framework/accounts/accountsmodel.cpp | 82 +++++++++++++++++++++++++++++++++ framework/accounts/accountsmodel.h | 56 ++++++++++++++++++++++ framework/domain/CMakeLists.txt | 3 -- framework/domain/accountfactory.cpp | 65 -------------------------- framework/domain/accountfactory.h | 51 -------------------- framework/domain/accountscontroller.cpp | 42 ----------------- framework/domain/accountscontroller.h | 33 ------------- framework/domain/accountsmodel.cpp | 82 --------------------------------- framework/domain/accountsmodel.h | 56 ---------------------- framework/domain/composercontroller.cpp | 1 - framework/domain/mailplugin.cpp | 6 --- 13 files changed, 254 insertions(+), 339 deletions(-) create mode 100644 framework/accounts/accountfactory.cpp create mode 100644 framework/accounts/accountfactory.h create mode 100644 framework/accounts/accountsmodel.cpp create mode 100644 framework/accounts/accountsmodel.h delete mode 100644 framework/domain/accountfactory.cpp delete mode 100644 framework/domain/accountfactory.h delete mode 100644 framework/domain/accountscontroller.cpp delete mode 100644 framework/domain/accountscontroller.h delete mode 100644 framework/domain/accountsmodel.cpp delete mode 100644 framework/domain/accountsmodel.h (limited to 'framework') diff --git a/framework/accounts/accountfactory.cpp b/framework/accounts/accountfactory.cpp new file mode 100644 index 00000000..182a0a1d --- /dev/null +++ b/framework/accounts/accountfactory.cpp @@ -0,0 +1,65 @@ +/* + Copyright (c) 2016 Christian Mollekopf + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library 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 Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ +#include "accountfactory.h" + +#include + +#include +#include +#include + +#include "settings/settings.h" +#include + +AccountFactory::AccountFactory(QObject *parent) + : QObject(parent) +{ +} + +QString AccountFactory::name() const +{ + if (mName.isEmpty()) { + return tr("Account"); + } + return mName; +} + +void AccountFactory::setAccountId(const QString &accountId) +{ + mAccountId = accountId; + Sink::Store::fetchOne(Sink::Query().filter(accountId.toUtf8())) + .syncThen([this](const Sink::ApplicationDomain::SinkAccount &account) { + mAccountType = account.getProperty("type").toByteArray(); + loadPackage(); + }).exec(); +} + +void AccountFactory::loadPackage() +{ + auto package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML", "org.kube.accounts." + mAccountType); + if (!package.isValid()) { + qWarning() << "Failed to load account package: " << "org.kube.accounts." + mAccountType; + return; + } + Q_ASSERT(package.isValid()); + mUiPath = package.filePath("mainscript"); + mName = package.metadata().name(); + mIcon = package.metadata().iconName(); + emit accountLoaded(); +} diff --git a/framework/accounts/accountfactory.h b/framework/accounts/accountfactory.h new file mode 100644 index 00000000..047454ae --- /dev/null +++ b/framework/accounts/accountfactory.h @@ -0,0 +1,51 @@ +/* + Copyright (c) 2016 Christian Mollekopf + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library 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 Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#pragma once + +#include +#include + +/** + * A factory to instantiate accountp plugins. + */ +class AccountFactory : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString accountId MEMBER mAccountId WRITE setAccountId); + Q_PROPERTY(QString name MEMBER mName READ name NOTIFY accountLoaded); + Q_PROPERTY(QString icon MEMBER mIcon NOTIFY accountLoaded); + Q_PROPERTY(QString uiPath MEMBER mUiPath NOTIFY accountLoaded); +public: + explicit AccountFactory(QObject *parent = Q_NULLPTR); + + void setAccountId(const QString &); + QString name() const; + +signals: + void accountLoaded(); + +private: + void loadPackage(); + QString mAccountId; + QString mName; + QString mIcon; + QString mUiPath; + QByteArray mAccountType; +}; diff --git a/framework/accounts/accountsmodel.cpp b/framework/accounts/accountsmodel.cpp new file mode 100644 index 00000000..ea37784b --- /dev/null +++ b/framework/accounts/accountsmodel.cpp @@ -0,0 +1,82 @@ +/* + Copyright (c) 2016 Christian Mollekopf + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library 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 Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ +#include "accountsmodel.h" +#include + +AccountsModel::AccountsModel(QObject *parent) : QIdentityProxyModel() +{ + Sink::Query query; + query.setFlags(Sink::Query::LiveQuery); + query.request(); + query.request(); + query.request(); + runQuery(query); +} + +AccountsModel::~AccountsModel() +{ + +} + +QHash< int, QByteArray > AccountsModel::roleNames() const +{ + QHash roles; + + roles[Name] = "name"; + roles[Icon] = "icon"; + roles[AccountId] = "accountId"; + roles[Status] = "status"; + roles[StatusIcon] = "statusIcon"; + roles[ShowStatus] = "showStatus"; + + return roles; +} + +QVariant AccountsModel::data(const QModelIndex &idx, int role) const +{ + auto srcIdx = mapToSource(idx); + auto account = srcIdx.data(Sink::Store::DomainObjectRole).value(); + switch (role) { + case Name: + return account->getName(); + case Icon: + return account->getIcon(); + case AccountId: + return account->identifier(); + case Status: + return account->getStatus(); + case StatusIcon: + if (account->getStatus() == Sink::ApplicationDomain::ErrorStatus) { + return "emblem-error"; + } else if (account->getStatus() == Sink::ApplicationDomain::BusyStatus) { + return "view-refresh"; + } else if (account->getStatus() == Sink::ApplicationDomain::ConnectedStatus) { + return "checkmark"; + } + case ShowStatus: + return (account->getStatus() != Sink::ApplicationDomain::OfflineStatus); + } + return QIdentityProxyModel::data(idx, role); +} + +void AccountsModel::runQuery(const Sink::Query &query) +{ + mModel = Sink::Store::loadModel(query); + setSourceModel(mModel.data()); +} diff --git a/framework/accounts/accountsmodel.h b/framework/accounts/accountsmodel.h new file mode 100644 index 00000000..e3c08cd4 --- /dev/null +++ b/framework/accounts/accountsmodel.h @@ -0,0 +1,56 @@ +/* + Copyright (c) 2016 Christian Mollekopf + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library 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 Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. 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 + +namespace Sink { + class Query; +} + +class AccountsModel : public QIdentityProxyModel +{ + Q_OBJECT + +public: + AccountsModel(QObject *parent = Q_NULLPTR); + ~AccountsModel(); + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + + enum Roles { + Name = Qt::UserRole + 1, + Icon, + AccountId, + Status, + StatusIcon, + ShowStatus + }; + Q_ENUMS(Roles) + + QHash roleNames() const; + +private: + void runQuery(const Sink::Query &query); + QSharedPointer mModel; +}; diff --git a/framework/domain/CMakeLists.txt b/framework/domain/CMakeLists.txt index 00499f30..01d55de2 100644 --- a/framework/domain/CMakeLists.txt +++ b/framework/domain/CMakeLists.txt @@ -13,9 +13,6 @@ set(mailplugin_SRCS mailtemplates.cpp modeltest.cpp retriever.cpp - accountfactory.cpp - accountscontroller.cpp - accountsmodel.cpp outboxmodel.cpp identitiesmodel.cpp recepientautocompletionmodel.cpp diff --git a/framework/domain/accountfactory.cpp b/framework/domain/accountfactory.cpp deleted file mode 100644 index 182a0a1d..00000000 --- a/framework/domain/accountfactory.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library 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 Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ -#include "accountfactory.h" - -#include - -#include -#include -#include - -#include "settings/settings.h" -#include - -AccountFactory::AccountFactory(QObject *parent) - : QObject(parent) -{ -} - -QString AccountFactory::name() const -{ - if (mName.isEmpty()) { - return tr("Account"); - } - return mName; -} - -void AccountFactory::setAccountId(const QString &accountId) -{ - mAccountId = accountId; - Sink::Store::fetchOne(Sink::Query().filter(accountId.toUtf8())) - .syncThen([this](const Sink::ApplicationDomain::SinkAccount &account) { - mAccountType = account.getProperty("type").toByteArray(); - loadPackage(); - }).exec(); -} - -void AccountFactory::loadPackage() -{ - auto package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML", "org.kube.accounts." + mAccountType); - if (!package.isValid()) { - qWarning() << "Failed to load account package: " << "org.kube.accounts." + mAccountType; - return; - } - Q_ASSERT(package.isValid()); - mUiPath = package.filePath("mainscript"); - mName = package.metadata().name(); - mIcon = package.metadata().iconName(); - emit accountLoaded(); -} diff --git a/framework/domain/accountfactory.h b/framework/domain/accountfactory.h deleted file mode 100644 index 047454ae..00000000 --- a/framework/domain/accountfactory.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library 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 Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#pragma once - -#include -#include - -/** - * A factory to instantiate accountp plugins. - */ -class AccountFactory : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString accountId MEMBER mAccountId WRITE setAccountId); - Q_PROPERTY(QString name MEMBER mName READ name NOTIFY accountLoaded); - Q_PROPERTY(QString icon MEMBER mIcon NOTIFY accountLoaded); - Q_PROPERTY(QString uiPath MEMBER mUiPath NOTIFY accountLoaded); -public: - explicit AccountFactory(QObject *parent = Q_NULLPTR); - - void setAccountId(const QString &); - QString name() const; - -signals: - void accountLoaded(); - -private: - void loadPackage(); - QString mAccountId; - QString mName; - QString mIcon; - QString mUiPath; - QByteArray mAccountType; -}; diff --git a/framework/domain/accountscontroller.cpp b/framework/domain/accountscontroller.cpp deleted file mode 100644 index 5cb60d0c..00000000 --- a/framework/domain/accountscontroller.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (c) 2016 Michael Bohlender - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library 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 Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - - -#include "accountscontroller.h" - -#include -#include - -#include -#include - -AccountsController::AccountsController(QObject *parent) : QObject(parent) -{ -} - -void AccountsController::createAccount(const QString &accountType) -{ - auto account = Sink::ApplicationDomain::ApplicationDomainType::createEntity(); - account.setProperty("type", accountType); - Sink::Store::create(account).syncThen([](const KAsync::Error &error) { - if (error) { - qWarning() << "Error while creating account: " << error.errorMessage; - } - }).exec(); -} diff --git a/framework/domain/accountscontroller.h b/framework/domain/accountscontroller.h deleted file mode 100644 index a4421de8..00000000 --- a/framework/domain/accountscontroller.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright (c) 2016 Michael Bohlender - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library 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 Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#pragma once - -#include -#include - -class AccountsController : public QObject -{ - Q_OBJECT -public: - explicit AccountsController(QObject *parent = Q_NULLPTR); - -public slots: - void createAccount(const QString &accountId); -}; diff --git a/framework/domain/accountsmodel.cpp b/framework/domain/accountsmodel.cpp deleted file mode 100644 index ea37784b..00000000 --- a/framework/domain/accountsmodel.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library 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 Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ -#include "accountsmodel.h" -#include - -AccountsModel::AccountsModel(QObject *parent) : QIdentityProxyModel() -{ - Sink::Query query; - query.setFlags(Sink::Query::LiveQuery); - query.request(); - query.request(); - query.request(); - runQuery(query); -} - -AccountsModel::~AccountsModel() -{ - -} - -QHash< int, QByteArray > AccountsModel::roleNames() const -{ - QHash roles; - - roles[Name] = "name"; - roles[Icon] = "icon"; - roles[AccountId] = "accountId"; - roles[Status] = "status"; - roles[StatusIcon] = "statusIcon"; - roles[ShowStatus] = "showStatus"; - - return roles; -} - -QVariant AccountsModel::data(const QModelIndex &idx, int role) const -{ - auto srcIdx = mapToSource(idx); - auto account = srcIdx.data(Sink::Store::DomainObjectRole).value(); - switch (role) { - case Name: - return account->getName(); - case Icon: - return account->getIcon(); - case AccountId: - return account->identifier(); - case Status: - return account->getStatus(); - case StatusIcon: - if (account->getStatus() == Sink::ApplicationDomain::ErrorStatus) { - return "emblem-error"; - } else if (account->getStatus() == Sink::ApplicationDomain::BusyStatus) { - return "view-refresh"; - } else if (account->getStatus() == Sink::ApplicationDomain::ConnectedStatus) { - return "checkmark"; - } - case ShowStatus: - return (account->getStatus() != Sink::ApplicationDomain::OfflineStatus); - } - return QIdentityProxyModel::data(idx, role); -} - -void AccountsModel::runQuery(const Sink::Query &query) -{ - mModel = Sink::Store::loadModel(query); - setSourceModel(mModel.data()); -} diff --git a/framework/domain/accountsmodel.h b/framework/domain/accountsmodel.h deleted file mode 100644 index e3c08cd4..00000000 --- a/framework/domain/accountsmodel.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (c) 2016 Christian Mollekopf - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library 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 Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. 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 - -namespace Sink { - class Query; -} - -class AccountsModel : public QIdentityProxyModel -{ - Q_OBJECT - -public: - AccountsModel(QObject *parent = Q_NULLPTR); - ~AccountsModel(); - - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - - enum Roles { - Name = Qt::UserRole + 1, - Icon, - AccountId, - Status, - StatusIcon, - ShowStatus - }; - Q_ENUMS(Roles) - - QHash roleNames() const; - -private: - void runQuery(const Sink::Query &query); - QSharedPointer mModel; -}; diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp index e97af4c2..a4a8857f 100644 --- a/framework/domain/composercontroller.cpp +++ b/framework/domain/composercontroller.cpp @@ -31,7 +31,6 @@ #include #include -#include "accountsmodel.h" #include "identitiesmodel.h" #include "recepientautocompletionmodel.h" #include "mailtemplates.h" diff --git a/framework/domain/mailplugin.cpp b/framework/domain/mailplugin.cpp index f9dbe3ec..2ec73644 100644 --- a/framework/domain/mailplugin.cpp +++ b/framework/domain/mailplugin.cpp @@ -25,9 +25,6 @@ #include "composercontroller.h" #include "messageparser.h" #include "retriever.h" -#include "accountfactory.h" -#include "accountscontroller.h" -#include "accountsmodel.h" #include "outboxmodel.h" #include "outboxcontroller.h" #include "mailcontroller.h" @@ -45,9 +42,6 @@ void MailPlugin::registerTypes (const char *uri) qmlRegisterType(uri, 1, 0, "ComposerController"); qmlRegisterType(uri, 1, 0, "MessageParser"); qmlRegisterType(uri, 1, 0, "Retriever"); - qmlRegisterType(uri, 1, 0, "AccountFactory"); - qmlRegisterType(uri, 1, 0, "AccountsController"); - qmlRegisterType(uri, 1, 0, "AccountsModel"); qmlRegisterType(uri, 1, 0, "OutboxController"); qmlRegisterType(uri, 1, 0, "OutboxModel"); qmlRegisterType(uri, 1, 0, "MailController"); -- cgit v1.2.3