File indexing completed on 2024-12-01 13:08:21
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Martin Klapetek <mklapetek@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 * 0006 */ 0007 0008 #ifndef KACCOUNTSUIPLUGIN_H 0009 #define KACCOUNTSUIPLUGIN_H 0010 0011 #include "kaccounts_export.h" 0012 0013 #include <QObject> 0014 0015 class QWindow; 0016 0017 namespace KAccounts 0018 { 0019 0020 class KACCOUNTS_EXPORT KAccountsUiPlugin : public QObject 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 enum UiType { 0026 NewAccountDialog, 0027 ConfigureAccountDialog, 0028 }; 0029 0030 explicit KAccountsUiPlugin(QObject *parent = nullptr); 0031 ~KAccountsUiPlugin() override; 0032 0033 virtual void init(UiType type) = 0; 0034 0035 /** 0036 * Sets the selected Accounts-SSO provider to the plugin 0037 */ 0038 virtual void setProviderName(const QString &providerName) = 0; 0039 0040 /** 0041 * Called when the dialog for creating new account should show 0042 */ 0043 virtual void showNewAccountDialog() = 0; 0044 0045 /** 0046 * Called when an existing account should be configured 0047 * @param accountId The ID of the account that should be configured 0048 */ 0049 virtual void showConfigureAccountDialog(const quint32 accountId) = 0; 0050 0051 /** 0052 * Returns a list of services which this plugin supports 0053 * configuration of, for example "IM" supports config 0054 * of IM/KTp accounts 0055 */ 0056 virtual QStringList supportedServicesForConfig() const = 0; 0057 0058 QWindow *transientParent() const; 0059 0060 Q_SIGNALS: 0061 /** 0062 * Sometimes the plugins might take time to initialize the UI 0063 * completely, whenever they are ready, this signal should be 0064 * emitted to tell kaccounts that the plugin is ready to display 0065 * the dialog 0066 */ 0067 void uiReady(); 0068 0069 /** 0070 * This should be emitted when the plugin finishes building the UI 0071 * for configuring the selected account 0072 */ 0073 void configUiReady(); 0074 0075 /** 0076 * Emitted when user successfully authenticated using this plugin 0077 * The params are the username & password that the user used to 0078 * authenticate themselves and any additional data that might be needed 0079 */ 0080 void success(const QString &username, const QString &password, const QVariantMap &additionalData); 0081 0082 /** 0083 * Emit this to start an auth session. Any values in data are passed to the started session. 0084 * This is useful e.g. when doing oauth login but you need to show a UI to get some data before. 0085 */ 0086 void startAuthSession(const QVariantMap &data); 0087 0088 /** 0089 * Emitted when there has been an error during the authentication 0090 * 0091 * @param errorString The error that has occurred 0092 */ 0093 void error(const QString &errorString); 0094 0095 /** 0096 * Emitted when the user cancels the account creation 0097 */ 0098 void canceled(); 0099 }; 0100 0101 }; 0102 0103 Q_DECLARE_INTERFACE(KAccounts::KAccountsUiPlugin, "org.kde.kaccounts.UiPlugin") 0104 0105 #endif // KACCOUNTSUIPLUGIN_H