From 6cbf5729d0485f5672e8221e9956d230d7164250 Mon Sep 17 00:00:00 2001 From: Akira Ohgaki <akiraohgaki@gmail.com> Date: Mon, 17 Oct 2016 11:41:55 +0900 Subject: [PATCH] Code cleanup --- src/core/network.cpp | 18 +----- src/core/network.h | 4 -- src/handlers/xdgurl.cpp | 118 +++++++++++++++++++--------------------- src/handlers/xdgurl.h | 12 ++-- src/utility/file.cpp | 18 +++--- src/utility/json.cpp | 20 +++---- src/utility/json.h | 4 +- 7 files changed, 85 insertions(+), 109 deletions(-) diff --git a/src/core/network.cpp b/src/core/network.cpp index 6d040d2..f315410 100644 --- a/src/core/network.cpp +++ b/src/core/network.cpp @@ -12,7 +12,7 @@ Network::Network(const bool &async, QObject *parent) : { _manager = new QNetworkAccessManager(); connect(_manager, &QNetworkAccessManager::finished, - this, &Network::_finished); + this, &Network::finished); if (!_async) { _eventLoop = new QEventLoop(); connect(_manager, &QNetworkAccessManager::finished, @@ -41,25 +41,11 @@ QNetworkReply *Network::get(const QUrl &uri) { QNetworkReply *reply = _manager->get(QNetworkRequest(uri)); connect(reply, &QNetworkReply::downloadProgress, - this, &Network::_downloadProgress); + this, &Network::downloadProgress); if (!_async) { _eventLoop->exec(); } return reply; } -/** - * Private slots - */ - -void Network::_finished(QNetworkReply *reply) -{ - emit finished(reply); -} - -void Network::_downloadProgress(const qint64 &received, const qint64 &total) -{ - emit downloadProgress(received, total); -} - } // namespace Core diff --git a/src/core/network.h b/src/core/network.h index 374310c..3a9eac4 100644 --- a/src/core/network.h +++ b/src/core/network.h @@ -25,10 +25,6 @@ public: QNetworkReply *head(const QUrl &uri); QNetworkReply *get(const QUrl &uri); -private slots: - void _finished(QNetworkReply *reply); - void _downloadProgress(const qint64 &received, const qint64 &total); - signals: void finished(QNetworkReply *reply); void downloadProgress(const qint64 &received, const qint64 &total); diff --git a/src/handlers/xdgurl.cpp b/src/handlers/xdgurl.cpp index d7b5d52..c10a3fb 100644 --- a/src/handlers/xdgurl.cpp +++ b/src/handlers/xdgurl.cpp @@ -169,8 +169,12 @@ void XdgUrl::_installDownloadedFile(QNetworkReply *reply) Utility::File::makeDir(destination); Utility::File::remove(path); // Remove previous downloaded file - if ((type == "plasma_plasmoids" || type == "plasma4_plasmoids" || type == "plasma5_plasmoids") - && Utility::Package::installPlasmapkg(temporaryFile.fileName(), "plasmoid")) { + if ((type == "bin" || type == "appimage") + && Utility::Package::installProgram(temporaryFile.fileName(), path)) { + result["message"] = QString("The program has been installed into " + destination); + } + else if ((type == "plasma_plasmoids" || type == "plasma4_plasmoids" || type == "plasma5_plasmoids") + && Utility::Package::installPlasmapkg(temporaryFile.fileName(), "plasmoid")) { result["message"] = QString("The plasmoid has been installed"); } else if ((type == "plasma_look_and_feel" || type == "plasma5_look_and_feel") @@ -193,10 +197,6 @@ void XdgUrl::_installDownloadedFile(QNetworkReply *reply) && Utility::Package::installPlasmapkg(temporaryFile.fileName(), "windowswitcher")) { result["message"] = QString("The KWin window switcher has been installed"); } - else if ((type == "bin" || type == "appimage") - && Utility::Package::installProgram(temporaryFile.fileName(), path)) { - result["message"] = QString("The program has been installed into " + destination); - } else if (Utility::Package::uncompressArchive(temporaryFile.fileName(), destination)) { result["message"] = QString("The archive file has been uncompressed into " + destination); } @@ -217,57 +217,33 @@ void XdgUrl::_installDownloadedFile(QNetworkReply *reply) } /** - * Private slots + * Slots */ -void XdgUrl::_downloaded(QNetworkReply *reply) +void XdgUrl::process() { - if (reply->error() != QNetworkReply::NoError) { + /** + * xdgs scheme is a reserved name, so the process of xdgs + * is the same process of the xdg scheme currently. + */ + + if (!isValid()) { QJsonObject result; - result["status"] = QString("error_network"); - result["message"] = reply->errorString(); + result["status"] = QString("error_validation"); + result["message"] = QString("Invalid XDG-URL " + _xdgUrl); emit error(Utility::Json::convertObjToStr(result)); return; } - if (reply->hasRawHeader("Location")) { - QString redirectUrl = QString(reply->rawHeader("Location")); - if (redirectUrl.startsWith("/")) { - redirectUrl = reply->url().authority() + redirectUrl; - } - _network->get(QUrl(redirectUrl)); - return; - } - - if (reply->hasRawHeader("Refresh")) { - QString refreshUrl = QString(reply->rawHeader("Refresh")).split("url=").last(); - if (refreshUrl.startsWith("/")) { - refreshUrl = reply->url().authority() + refreshUrl; - } - _network->get(QUrl(refreshUrl)); - return; - } - - if (_metadata["command"].toString() == "download") { - _saveDownloadedFile(reply); - } - else if (_metadata["command"].toString() == "install") { - _installDownloadedFile(reply); - } -} - -/** - * Public slots - */ - -QString XdgUrl::getXdgUrl() -{ - return _xdgUrl; + _network->get(QUrl(_metadata["url"].toString())); + emit started(); } -QString XdgUrl::getMetadata() +void XdgUrl::openDestination() { - return Utility::Json::convertObjToStr(_metadata); + if (!_destination.isEmpty()) { + QDesktopServices::openUrl(QUrl("file://" + _destination)); + } } bool XdgUrl::isValid() @@ -289,29 +265,49 @@ bool XdgUrl::isValid() return false; } -void XdgUrl::process() +QString XdgUrl::getXdgUrl() { - /** - * xdgs scheme is a reserved name, so the process of xdgs - * is the same process of the xdg scheme currently. - */ + return _xdgUrl; +} - if (!isValid()) { +QString XdgUrl::getMetadata() +{ + return Utility::Json::convertObjToStr(_metadata); +} + +void XdgUrl::_downloaded(QNetworkReply *reply) +{ + if (reply->error() != QNetworkReply::NoError) { QJsonObject result; - result["status"] = QString("error_validation"); - result["message"] = QString("Invalid XDG-URL " + _xdgUrl); + result["status"] = QString("error_network"); + result["message"] = reply->errorString(); emit error(Utility::Json::convertObjToStr(result)); return; } - _network->get(QUrl(_metadata["url"].toString())); - emit started(); -} + if (reply->hasRawHeader("Location")) { + QString redirectUrl = QString(reply->rawHeader("Location")); + if (redirectUrl.startsWith("/")) { + redirectUrl = reply->url().authority() + redirectUrl; + } + _network->get(QUrl(redirectUrl)); + return; + } -void XdgUrl::openDestination() -{ - if (!_destination.isEmpty()) { - QDesktopServices::openUrl(QUrl("file://" + _destination)); + if (reply->hasRawHeader("Refresh")) { + QString refreshUrl = QString(reply->rawHeader("Refresh")).split("url=").last(); + if (refreshUrl.startsWith("/")) { + refreshUrl = reply->url().authority() + refreshUrl; + } + _network->get(QUrl(refreshUrl)); + return; + } + + if (_metadata["command"].toString() == "download") { + _saveDownloadedFile(reply); + } + else if (_metadata["command"].toString() == "install") { + _installDownloadedFile(reply); } } diff --git a/src/handlers/xdgurl.h b/src/handlers/xdgurl.h index 4270252..03ce745 100644 --- a/src/handlers/xdgurl.h +++ b/src/handlers/xdgurl.h @@ -36,15 +36,15 @@ private: void _saveDownloadedFile(QNetworkReply *reply); void _installDownloadedFile(QNetworkReply *reply); -private slots: - void _downloaded(QNetworkReply *reply); - public slots: - QString getXdgUrl(); - QString getMetadata(); - bool isValid(); void process(); void openDestination(); + bool isValid(); + QString getXdgUrl(); + QString getMetadata(); + +private slots: + void _downloaded(QNetworkReply *reply); signals: void started(); diff --git a/src/utility/file.cpp b/src/utility/file.cpp index 2330ba1..6f6ed15 100644 --- a/src/utility/file.cpp +++ b/src/utility/file.cpp @@ -8,6 +8,14 @@ namespace Utility { +/** + * XDG Base Directory Specification + * http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + * + * KDE System Administration/Environment Variables + * https://userbase.kde.org/KDE_System_Administration/Environment_Variables + */ + File::File(QObject *parent) : QObject(parent) {} @@ -26,11 +34,6 @@ QString File::homePath() return QDir::homePath(); } -/** - * XDG Base Directory Specification - * http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - */ - QString File::xdgDataHomePath() { QString path = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME").constData()); @@ -58,11 +61,6 @@ QString File::xdgCacheHomePath() return path; } -/** - * KDE System Administration/Environment Variables - * https://userbase.kde.org/KDE_System_Administration/Environment_Variables - */ - QString File::kdehomePath() { // KDE 4 maybe uses $KDEHOME diff --git a/src/utility/json.cpp b/src/utility/json.cpp index cbce058..d70ba2d 100644 --- a/src/utility/json.cpp +++ b/src/utility/json.cpp @@ -9,14 +9,10 @@ namespace Utility { Json::Json(QObject *parent) : QObject(parent) {} -bool Json::isValid(const QString &json) +QString Json::convertObjToStr(const QJsonObject &jsonObj) { - QJsonParseError jsonError; - QJsonDocument::fromJson(json.toUtf8(), &jsonError); - if (jsonError.error == QJsonParseError::NoError) { - return true; - } - return false; + QJsonDocument jsonDoc(jsonObj); + return QString::fromUtf8(jsonDoc.toJson()); } QJsonObject Json::convertStrToObj(const QString &json) @@ -30,10 +26,14 @@ QJsonObject Json::convertStrToObj(const QString &json) return jsonObj; } -QString Json::convertObjToStr(const QJsonObject &jsonObj) +bool Json::isValid(const QString &json) { - QJsonDocument jsonDoc(jsonObj); - return QString::fromUtf8(jsonDoc.toJson()); + QJsonParseError jsonError; + QJsonDocument::fromJson(json.toUtf8(), &jsonError); + if (jsonError.error == QJsonParseError::NoError) { + return true; + } + return false; } } // namespace Utility diff --git a/src/utility/json.h b/src/utility/json.h index 68f100b..3b7a0d2 100644 --- a/src/utility/json.h +++ b/src/utility/json.h @@ -12,9 +12,9 @@ class Json : public QObject public: explicit Json(QObject *parent = 0); - static bool isValid(const QString &json); - static QJsonObject convertStrToObj(const QString &json); static QString convertObjToStr(const QJsonObject &jsonObj); + static QJsonObject convertStrToObj(const QString &json); + static bool isValid(const QString &json); }; } // namespace Utility -- GitLab