Skip to content
Snippets Groups Projects
xdgurl.h 1.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • akiraohgaki's avatar
    akiraohgaki committed
    #ifndef HANDLERS_XDGURL_H
    #define HANDLERS_XDGURL_H
    
    #include <QObject>
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include <QJsonObject>
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    class QNetworkReply;
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    namespace core {
    
    akiraohgaki's avatar
    akiraohgaki committed
    class Config;
    class Network;
    }
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    namespace handlers {
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    class XdgUrl : public QObject
    {
        Q_OBJECT
    
    private:
    
    akiraohgaki's avatar
    akiraohgaki committed
        QString xdgUrl_;
    
    akiraohgaki's avatar
    akiraohgaki committed
        core::Config *config_;
        core::Network *network_;
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        QJsonObject metadata_;
        QJsonObject destinations_;
        QString destination_;
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    public:
    
    akiraohgaki's avatar
    akiraohgaki committed
        explicit XdgUrl(const QString &xdgUrl, core::Config *config, core::Network *network, QObject *parent = 0);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    private:
    
    akiraohgaki's avatar
    akiraohgaki committed
        void parse_();
        void loadDestinations_();
        QString convertPathString_(const QString &path);
        void saveDownloadedFile_(QNetworkReply *reply);
        void installDownloadedFile_(QNetworkReply *reply);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    public slots:
    
    akiraohgaki's avatar
    akiraohgaki committed
        void process();
    
    akiraohgaki's avatar
    akiraohgaki committed
        void openDestination();
    
    akiraohgaki's avatar
    akiraohgaki committed
        bool isValid();
        QString getXdgUrl();
    
    akiraohgaki's avatar
    akiraohgaki committed
        QJsonObject getMetadata();
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    private slots:
    
    akiraohgaki's avatar
    akiraohgaki committed
        void downloaded_(QNetworkReply *reply);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    signals:
    
    akiraohgaki's avatar
    akiraohgaki committed
        void started();
    
    akiraohgaki's avatar
    akiraohgaki committed
        void finished(const QJsonObject &result);
        void error(const QJsonObject &result);
    
        void downloadProgress(const qint64 &received, const qint64 &total);
    
    akiraohgaki's avatar
    akiraohgaki committed
    };
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    } // namespace handlers
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    #endif // HANDLERS_XDGURL_H