Skip to content
Snippets Groups Projects
Forked from DFN2 / ocs-url
280 commits behind the upstream repository.
xdgurl.h 1.13 KiB
#pragma once

#include <QObject>
#include <QJsonObject>

#include "qtlibs/config.h"

namespace qtlibs {
class NetworkResource;
}

namespace handlers {

class XdgUrl : public QObject
{
    Q_OBJECT

public:
    explicit XdgUrl(const QString &xdgUrl, const qtlibs::Config &config, QObject *parent = 0);

signals:
    void started();
    void finishedWithSuccess(const QJsonObject &result);
    void finishedWithError(const QJsonObject &result);
    void downloadProgress(const qint64 &bytesReceived, const qint64 &bytesTotal);

public slots:
    QString xdgUrl() const;
    QJsonObject metadata() const;

    void process();
    bool isValid();
    void openDestination();

private slots:
    void networkResourceFinished(qtlibs::NetworkResource *resource);

private:
    void parse();
    void loadDestinations();
    QString convertPathString(const QString &path);
    void saveDownloadedFile(qtlibs::NetworkResource *resource);
    void installDownloadedFile(qtlibs::NetworkResource *resource);

    QString xdgUrl_;
    qtlibs::Config config_;
    QJsonObject metadata_;
    QJsonObject destinations_;
    QString destination_;
};

} // namespace handlers