#ifndef HANDLERS_XDGURL_H #define HANDLERS_XDGURL_H #include <QObject> #include <QJsonObject> class QNetworkReply; namespace utils { class Config; class Network; } namespace handlers { class XdgUrl : public QObject { Q_OBJECT public: explicit XdgUrl(const QString &xdgUrl, utils::Config *config, utils::Network *network, QObject *parent = 0); signals: void started(); void finished(const QJsonObject &result); void error(const QJsonObject &result); void downloadProgress(const qint64 &received, const qint64 &total); public slots: void process(); bool isValid(); void openDestination(); QString xdgUrl() const; QJsonObject metadata() const; private slots: void downloaded(QNetworkReply *reply); private: void parse(); void loadDestinations(); QString convertPathString(const QString &path); void saveDownloadedFile(QNetworkReply *reply); void installDownloadedFile(QNetworkReply *reply); QString xdgUrl_; utils::Config *config_; utils::Network *network_; QJsonObject metadata_; QJsonObject destinations_; QString destination_; }; } // namespace handlers #endif // HANDLERS_XDGURL_H