File indexing completed on 2025-01-19 10:46:00
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 }