Skip to content
Snippets Groups Projects
itemhandler.h 1.51 KiB
Newer Older
akiraohgaki's avatar
akiraohgaki committed
#pragma once

#include <QObject>
#include <QJsonObject>

akiraohgaki's avatar
akiraohgaki committed
namespace qtil {
akiraohgaki's avatar
akiraohgaki committed
class NetworkResource;
}

class ConfigHandler;

class ItemHandler : public QObject
{
    Q_OBJECT

public:
akiraohgaki's avatar
akiraohgaki committed
    explicit ItemHandler(ConfigHandler *configHandler, QObject *parent = nullptr);
akiraohgaki's avatar
akiraohgaki committed

signals:
    void metadataSetChanged();
    void downloadStarted(QJsonObject result);
    void downloadFinished(QJsonObject result);
    void downloadProgress(QString id, qint64 bytesReceived, qint64 bytesTotal);
akiraohgaki's avatar
akiraohgaki committed
    void saveStarted(QJsonObject result);
    void saveFinished(QJsonObject result);
akiraohgaki's avatar
akiraohgaki committed
    void installStarted(QJsonObject result);
    void installFinished(QJsonObject result);
    void uninstallStarted(QJsonObject result);
    void uninstallFinished(QJsonObject result);

public slots:
    QJsonObject metadataSet() const;

akiraohgaki's avatar
akiraohgaki committed
    void getItem(const QString &command, const QString &url, const QString &installType, const QString &filename = QString(),
                 const QString &providerKey = QString(), const QString &contentId = QString());
    void getItemByOcsUrl(const QString &ocsUrl, const QString &providerKey = QString(), const QString &contentId = QString());
akiraohgaki's avatar
akiraohgaki committed
    void uninstall(const QString &itemKey);

private slots:
akiraohgaki's avatar
akiraohgaki committed
    void networkResourceFinished(qtil::NetworkResource *resource);
akiraohgaki's avatar
akiraohgaki committed

private:
    void setMetadataSet(const QJsonObject &metadataSet);

akiraohgaki's avatar
akiraohgaki committed
    void saveDownloadedFile(qtil::NetworkResource *resource);
    void installDownloadedFile(qtil::NetworkResource *resource);
akiraohgaki's avatar
akiraohgaki committed

    ConfigHandler *configHandler_;
    QJsonObject metadataSet_;
};