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

Use confighandler class

parent 9905e8f9
No related branches found
No related tags found
No related merge requests found
...@@ -8,11 +8,12 @@ ...@@ -8,11 +8,12 @@
#include "qtlib_networkresource.h" #include "qtlib_networkresource.h"
#include "qtlib_package.h" #include "qtlib_package.h"
OcsUrlHandler::OcsUrlHandler(const QString &ocsUrl, const qtlib::Config &config, QObject *parent) #include "handlers/confighandler.h"
: QObject(parent), ocsUrl_(ocsUrl), config_(config)
OcsUrlHandler::OcsUrlHandler(const QString &ocsUrl, ConfigHandler *configHandler, QObject *parent)
: QObject(parent), ocsUrl_(ocsUrl), configHandler_(configHandler)
{ {
parse(); parse();
loadDestinations();
} }
QString OcsUrlHandler::ocsUrl() const QString OcsUrlHandler::ocsUrl() const
...@@ -58,7 +59,7 @@ bool OcsUrlHandler::isValid() ...@@ -58,7 +59,7 @@ bool OcsUrlHandler::isValid()
if ((scheme == "ocs" || scheme == "ocss" || scheme == "xdg" || scheme == "xdgs") if ((scheme == "ocs" || scheme == "ocss" || scheme == "xdg" || scheme == "xdgs")
&& (command == "download" || command == "install") && (command == "download" || command == "install")
&& QUrl(url).isValid() && QUrl(url).isValid()
&& destinations_.contains(type) && configHandler_->getAppConfigInstallTypes().contains(type)
&& !filename.isEmpty()) { && !filename.isEmpty()) {
return true; return true;
} }
...@@ -68,7 +69,7 @@ bool OcsUrlHandler::isValid() ...@@ -68,7 +69,7 @@ bool OcsUrlHandler::isValid()
void OcsUrlHandler::openDestination() void OcsUrlHandler::openDestination()
{ {
QString type = metadata_["type"].toString(); QString type = metadata_["type"].toString();
QDesktopServices::openUrl(QUrl("file://" + destinations_[type].toString())); QDesktopServices::openUrl(QUrl("file://" + configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()));
} }
void OcsUrlHandler::networkResourceFinished(qtlib::NetworkResource *resource) void OcsUrlHandler::networkResourceFinished(qtlib::NetworkResource *resource)
...@@ -126,46 +127,12 @@ void OcsUrlHandler::parse() ...@@ -126,46 +127,12 @@ void OcsUrlHandler::parse()
} }
} }
void OcsUrlHandler::loadDestinations()
{
QJsonObject configDestinations = config_.get("destinations");
QJsonObject configDestinationsAlias = config_.get("destinations_alias");
foreach (const QString &key, configDestinations.keys()) {
destinations_[key] = convertPathString(configDestinations[key].toString());
}
foreach (const QString &key, configDestinationsAlias.keys()) {
QString value = configDestinationsAlias[key].toString();
if (destinations_.contains(value)) {
destinations_[key] = destinations_.value(value);
}
}
}
QString OcsUrlHandler::convertPathString(const QString &path)
{
QString newPath = path;
if (newPath.contains("$HOME")) {
newPath.replace("$HOME", qtlib::Dir::homePath());
}
else if (newPath.contains("$XDG_DATA_HOME")) {
newPath.replace("$XDG_DATA_HOME", qtlib::Dir::genericDataPath());
}
else if (newPath.contains("$KDEHOME")) {
newPath.replace("$KDEHOME", qtlib::Dir::kdehomePath());
}
return newPath;
}
void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource) void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource)
{ {
QJsonObject result; QJsonObject result;
QString type = metadata_["type"].toString(); QString type = metadata_["type"].toString();
qtlib::Dir destDir(destinations_[type].toString()); qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
destDir.make(); destDir.make();
qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString()); qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
...@@ -200,7 +167,7 @@ void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource) ...@@ -200,7 +167,7 @@ void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource)
qtlib::Package package(tempFile.path()); qtlib::Package package(tempFile.path());
QString type = metadata_["type"].toString(); QString type = metadata_["type"].toString();
qtlib::Dir destDir(destinations_[type].toString()); qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
destDir.make(); destDir.make();
qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString()); qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
......
...@@ -3,18 +3,18 @@ ...@@ -3,18 +3,18 @@
#include <QObject> #include <QObject>
#include <QJsonObject> #include <QJsonObject>
#include "qtlib_config.h"
namespace qtlib { namespace qtlib {
class NetworkResource; class NetworkResource;
} }
class ConfigHandler;
class OcsUrlHandler : public QObject class OcsUrlHandler : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit OcsUrlHandler(const QString &ocsUrl, const qtlib::Config &config, QObject *parent = 0); explicit OcsUrlHandler(const QString &ocsUrl, ConfigHandler *configHandler, QObject *parent = 0);
signals: signals:
void started(); void started();
...@@ -35,13 +35,10 @@ private slots: ...@@ -35,13 +35,10 @@ private slots:
private: private:
void parse(); void parse();
void loadDestinations();
QString convertPathString(const QString &path);
void saveDownloadedFile(qtlib::NetworkResource *resource); void saveDownloadedFile(qtlib::NetworkResource *resource);
void installDownloadedFile(qtlib::NetworkResource *resource); void installDownloadedFile(qtlib::NetworkResource *resource);
QString ocsUrl_; QString ocsUrl_;
qtlib::Config config_; ConfigHandler *configHandler_;
QJsonObject metadata_; QJsonObject metadata_;
QJsonObject destinations_;
}; };
...@@ -8,8 +8,7 @@ ...@@ -8,8 +8,7 @@
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>
#include <QQmlContext> #include <QQmlContext>
#include "qtlib_config.h" #include "handlers/confighandler.h"
#include "handlers/ocsurlhandler.h" #include "handlers/ocsurlhandler.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
...@@ -17,18 +16,18 @@ int main(int argc, char *argv[]) ...@@ -17,18 +16,18 @@ int main(int argc, char *argv[])
// Init // Init
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
qtlib::Config config(":/configs"); ConfigHandler *configHandler = new ConfigHandler();
QJsonObject configApplication = config.get("application"); QJsonObject appConfigApplication = configHandler->getAppConfigApplication();
app.setApplicationName(configApplication["name"].toString()); app.setApplicationName(appConfigApplication["name"].toString());
app.setApplicationVersion(configApplication["version"].toString()); app.setApplicationVersion(appConfigApplication["version"].toString());
app.setOrganizationName(configApplication["organization"].toString()); app.setOrganizationName(appConfigApplication["organization"].toString());
app.setOrganizationDomain(configApplication["domain"].toString()); app.setOrganizationDomain(appConfigApplication["domain"].toString());
app.setWindowIcon(QIcon::fromTheme(configApplication["id"].toString(), QIcon(configApplication["icon"].toString()))); app.setWindowIcon(QIcon::fromTheme(appConfigApplication["id"].toString(), QIcon(appConfigApplication["icon"].toString())));
// Setup CLI // Setup CLI
QCommandLineParser clParser; QCommandLineParser clParser;
clParser.setApplicationDescription(configApplication["description"].toString()); clParser.setApplicationDescription(appConfigApplication["description"].toString());
clParser.addHelpOption(); clParser.addHelpOption();
clParser.addVersionOption(); clParser.addVersionOption();
clParser.addPositionalArgument("ocsurl", "OCS-URL"); clParser.addPositionalArgument("ocsurl", "OCS-URL");
...@@ -45,7 +44,9 @@ int main(int argc, char *argv[]) ...@@ -45,7 +44,9 @@ int main(int argc, char *argv[])
// Setup QML // Setup QML
QQmlApplicationEngine qmlAppEngine; QQmlApplicationEngine qmlAppEngine;
QQmlContext *qmlContext = qmlAppEngine.rootContext(); QQmlContext *qmlContext = qmlAppEngine.rootContext();
qmlContext->setContextProperty("ocsUrlHandler", new OcsUrlHandler(ocsUrl, config, &qmlAppEngine)); configHandler->setParent(&qmlAppEngine);
qmlContext->setContextProperty("configHandler", configHandler);
qmlContext->setContextProperty("ocsUrlHandler", new OcsUrlHandler(ocsUrl, configHandler, &qmlAppEngine));
qmlAppEngine.load(QUrl("qrc:/qml/main.qml")); qmlAppEngine.load(QUrl("qrc:/qml/main.qml"));
return app.exec(); return app.exec();
......
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