File indexing completed on 2024-05-05 16:58:23

0001 /*
0002  *  SPDX-FileCopyrightText: 2012 Alejandro Fiestas Olivares <afiestas@kde.org>
0003  *  SPDX-FileCopyrightText: 2015 Martin Klapetek <mklapetek@kde.org>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #include "owncloud.h"
0009 #include "owncloudcontroller.h"
0010 
0011 #include <KLocalizedContext>
0012 #include <KLocalizedString>
0013 #include <KPackage/PackageLoader>
0014 
0015 #include <QQmlApplicationEngine>
0016 #include <QQmlContext>
0017 #include <QWindow>
0018 
0019 OwnCloudWizard::OwnCloudWizard(QObject *parent)
0020     : KAccountsUiPlugin(parent)
0021 {
0022     qmlRegisterUncreatableType<OwncloudController>("org.kde.kaccounts.owncloud", 1, 0, "OwncloudController", QStringLiteral("Only for enums"));
0023 }
0024 
0025 OwnCloudWizard::~OwnCloudWizard()
0026 {
0027 }
0028 
0029 void OwnCloudWizard::init(KAccountsUiPlugin::UiType type)
0030 {
0031     if (type == KAccountsUiPlugin::NewAccountDialog) {
0032         const QString packagePath(QStringLiteral("org.kde.kaccounts.owncloud"));
0033         m_engine = new QQmlApplicationEngine(this);
0034 
0035         auto ctx = new KLocalizedContext(m_engine);
0036         ctx->setTranslationDomain(packagePath);
0037         m_engine->rootContext()->setContextObject(ctx);
0038 
0039         KPackage::Package package = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/GenericQML"));
0040         package.setPath(packagePath);
0041         m_data = package.metadata();
0042 
0043         OwncloudController *helper = new OwncloudController(m_engine);
0044 
0045         connect(helper, &OwncloudController::wizardFinished, this, [this](const QString &username, const QString &password, const QVariantMap &data) {
0046             m_engine->deleteLater();
0047             Q_EMIT success(username, password, data);
0048         });
0049 
0050         connect(helper, &OwncloudController::wizardCancelled, this, [this] {
0051             m_engine->deleteLater();
0052             Q_EMIT canceled();
0053         });
0054 
0055         m_engine->rootContext()->setContextProperty(QStringLiteral("helper"), helper);
0056         m_engine->load(QUrl::fromLocalFile(package.filePath("mainscript")));
0057 
0058         if (!m_data.isValid()) {
0059             return;
0060         }
0061 
0062         Q_EMIT uiReady();
0063     }
0064 }
0065 
0066 void OwnCloudWizard::setProviderName(const QString &providerName)
0067 {
0068     Q_UNUSED(providerName)
0069 }
0070 
0071 void OwnCloudWizard::showNewAccountDialog()
0072 {
0073     QWindow *window = qobject_cast<QWindow *>(m_engine->rootObjects().first());
0074     if (window) {
0075         window->setTransientParent(transientParent());
0076         window->show();
0077         window->requestActivate();
0078         window->setTitle(m_data.name());
0079         window->setIcon(QIcon::fromTheme(m_data.iconName()));
0080     }
0081 }
0082 
0083 void OwnCloudWizard::showConfigureAccountDialog(const quint32 accountId)
0084 {
0085     Q_UNUSED(accountId)
0086 }
0087 
0088 QStringList OwnCloudWizard::supportedServicesForConfig() const
0089 {
0090     return QStringList();
0091 }