Skip to content
Snippets Groups Projects
Commit 6cbf5729 authored by akiraohgaki's avatar akiraohgaki
Browse files

Code cleanup

parent abc64c73
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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);
......
......@@ -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);
}
}
......
......@@ -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();
......
......@@ -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
......
......@@ -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
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment