From 9bfadc71a4fb694ae3946711d04acdfe009264c0 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 10 Mar 2016 11:57:08 +0100 Subject: A factory to load account plugins. --- framework/domain/accountfactory.cpp | 72 +++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 framework/domain/accountfactory.cpp (limited to 'framework/domain/accountfactory.cpp') diff --git a/framework/domain/accountfactory.cpp b/framework/domain/accountfactory.cpp new file mode 100644 index 00000000..d54f70a2 --- /dev/null +++ b/framework/domain/accountfactory.cpp @@ -0,0 +1,72 @@ +/* + 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 + +AccountFactory::AccountFactory(QObject *parent) + : QObject(parent) +{ + +} + +QString AccountFactory::name() const +{ + return "Maildir"; +} + +QString AccountFactory::icon() const +{ + return "icon"; +} + +QVariant AccountFactory::ui() const +{ + return createComponent(getAccountType()); +} + +QByteArray AccountFactory::getAccountType() const +{ + return "maildir"; +} + +QString AccountFactory::uiPath() const +{ + auto accountType = getAccountType(); + auto package = KPackage::PackageLoader::self()->loadPackage("KPackage/GenericQML", "org.kube.accounts." + accountType); + Q_ASSERT(package.isValid()); + return package.filePath("mainscript"); +} + +QVariant AccountFactory::createComponent(const QByteArray &accountType) const const +{ + qWarning() << "Trying to load accounts package " << accountType << mAccountId; + auto engine = qmlEngine(this); + Q_ASSERT(engine); + auto component = new QQmlComponent(engine, QUrl::fromLocalFile(uiPath()), QQmlComponent::PreferSynchronous); + for (const auto &error : component->errors()) { + qWarning() << error.toString(); + } + Q_ASSERT(component->isReady()); + return QVariant::fromValue(component); +} -- cgit v1.2.3