Warning, file /network/kaccounts-providers/plugins/nextcloud-ui/nextcloudcontroller.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Rituka Patwal <ritukapatwal21@gmail.com> 0003 * SPDX-FileCopyrightText: 2015 Martin Klapetek <mklapetek@kde.org> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef QMLHELPER_H 0009 #define QMLHELPER_H 0010 0011 #include <QObject> 0012 #include <QQuickWebEngineProfile> 0013 #include <QStringList> 0014 #include <QVariant> 0015 #include <QWebEngineUrlRequestInterceptor> 0016 0017 namespace KIO 0018 { 0019 class Job; 0020 } 0021 0022 class KJob; 0023 0024 class Service 0025 { 0026 Q_GADGET 0027 Q_PROPERTY(QString id MEMBER m_id) 0028 Q_PROPERTY(QString name MEMBER m_name) 0029 Q_PROPERTY(QString description MEMBER m_description) 0030 0031 public: 0032 QString m_id; 0033 QString m_name; 0034 QString m_description; 0035 }; 0036 0037 class NextcloudUrlIntercepter : public QWebEngineUrlRequestInterceptor 0038 { 0039 void interceptRequest(QWebEngineUrlRequestInfo &info) override; 0040 }; 0041 0042 class NextcloudController : public QObject 0043 { 0044 Q_OBJECT 0045 Q_PROPERTY(bool isWorking READ isWorking NOTIFY isWorkingChanged) 0046 Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY errorMessageChanged) 0047 Q_PROPERTY(State state MEMBER m_state NOTIFY stateChanged) 0048 Q_PROPERTY(QQuickWebEngineProfile *webengineProfile MEMBER m_webengineProfile CONSTANT) 0049 Q_PROPERTY(QString loginUrl MEMBER m_loginUrl NOTIFY loginUrlChanged) 0050 Q_PROPERTY(QVariantList availableServices READ availableServices CONSTANT) 0051 0052 public: 0053 enum State { 0054 ServerUrl = 0, 0055 WebLogin, 0056 Services, 0057 }; 0058 Q_ENUM(State) 0059 0060 NextcloudController(QObject *parent = nullptr); 0061 ~NextcloudController(); 0062 0063 Q_INVOKABLE void checkServer(const QString &server); 0064 Q_INVOKABLE void finish(const QStringList disabledServices); 0065 Q_INVOKABLE void cancel(); 0066 bool isWorking(); 0067 bool isLoginComplete(); 0068 QString errorMessage() const; 0069 QVariantList availableServices() const; 0070 0071 Q_SIGNALS: 0072 void isWorkingChanged(); 0073 void errorMessageChanged(); 0074 void wizardFinished(const QString &username, const QString &password, const QVariantMap &data); 0075 void stateChanged(); 0076 void loginUrlChanged(); 0077 void wizardCancelled(); 0078 0079 private Q_SLOTS: 0080 void fileChecked(KJob *job); 0081 void dataReceived(KIO::Job *job, const QByteArray &data); 0082 void authCheckResult(KJob *job); 0083 void finalUrlHandler(const QUrl &url); 0084 0085 private: 0086 void checkServer(const QUrl &url); 0087 void figureOutServer(const QUrl &url); 0088 void setWorking(bool start); 0089 void serverCheckResult(); 0090 void wrongUrlDetected(); 0091 0092 QByteArray m_json; 0093 QString m_errorMessage; 0094 QString m_server; 0095 QString m_username; 0096 QString m_password; 0097 QStringList m_disabledServices; 0098 bool m_isWorking = false; 0099 State m_state = ServerUrl; 0100 QQuickWebEngineProfile *m_webengineProfile; 0101 NextcloudUrlIntercepter m_urlIntercepter; 0102 QString m_loginUrl; 0103 }; 0104 0105 #endif // QMLHELPER_H