File indexing completed on 2024-04-21 15:02:24

0001 /*
0002     SPDX-FileCopyrightText: 2019 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #ifndef KNSQUICK_AUTHOR_H
0008 #define KNSQUICK_AUTHOR_H
0009 
0010 #include <QObject>
0011 #include <QQmlParserStatus>
0012 #include <entryinternal.h>
0013 
0014 namespace KNewStuffQuick
0015 {
0016 class AuthorPrivate;
0017 /**
0018  * @short Encapsulates a KNSCore::Author for use in Qt Quick
0019  *
0020  * This class takes care of initialisation of a KNSCore::Author when assigned an engine, provider ID and username.
0021  * If the data is not yet cached, it will be requested from the provider, and updated for display
0022  * @since 5.63
0023  */
0024 class Author : public QObject, public QQmlParserStatus
0025 {
0026     Q_OBJECT
0027     Q_INTERFACES(QQmlParserStatus)
0028     /**
0029      * The NewStuffQuickEngine to interact with servers through
0030      */
0031     Q_PROPERTY(QObject *engine READ engine WRITE setEngine NOTIFY engineChanged)
0032     /**
0033      * The ID of the provider which the user is registered on
0034      */
0035     Q_PROPERTY(QString providerId READ providerId WRITE setProviderId NOTIFY providerIdChanged)
0036     /**
0037      * The user ID for the user this object represents
0038      */
0039     Q_PROPERTY(QString username READ username WRITE setUsername NOTIFY usernameChanged)
0040 
0041     Q_PROPERTY(QString name READ name NOTIFY dataChanged)
0042     Q_PROPERTY(QString description READ description NOTIFY dataChanged)
0043     Q_PROPERTY(QString homepage READ homepage NOTIFY dataChanged)
0044     Q_PROPERTY(QString profilepage READ profilepage NOTIFY dataChanged)
0045     Q_PROPERTY(QUrl avatarUrl READ avatarUrl NOTIFY dataChanged)
0046 public:
0047     explicit Author(QObject *parent = nullptr);
0048     ~Author() override;
0049     void classBegin() override;
0050     void componentComplete() override;
0051 
0052     QObject *engine() const;
0053     void setEngine(QObject *newEngine);
0054     Q_SIGNAL void engineChanged();
0055 
0056     QString providerId() const;
0057     void setProviderId(const QString &providerId);
0058     Q_SIGNAL void providerIdChanged();
0059 
0060     QString username() const;
0061     void setUsername(const QString &username);
0062     Q_SIGNAL void usernameChanged();
0063 
0064     QString name() const;
0065     QString description() const;
0066     QString homepage() const;
0067     QString profilepage() const;
0068     QUrl avatarUrl() const;
0069     Q_SIGNAL void dataChanged();
0070 
0071 private:
0072     const std::unique_ptr<AuthorPrivate> d;
0073 };
0074 }
0075 
0076 #endif // KNSQUICK_AUTHOR_H