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 @@
#include "qtlib_networkresource.h"
#include "qtlib_package.h"
OcsUrlHandler::OcsUrlHandler(const QString &ocsUrl, const qtlib::Config &config, QObject *parent)
: QObject(parent), ocsUrl_(ocsUrl), config_(config)
#include "handlers/confighandler.h"
OcsUrlHandler::OcsUrlHandler(const QString &ocsUrl, ConfigHandler *configHandler, QObject *parent)
: QObject(parent), ocsUrl_(ocsUrl), configHandler_(configHandler)
{
parse();
loadDestinations();
}
QString OcsUrlHandler::ocsUrl() const
......@@ -58,7 +59,7 @@ bool OcsUrlHandler::isValid()
if ((scheme == "ocs" || scheme == "ocss" || scheme == "xdg" || scheme == "xdgs")
&& (command == "download" || command == "install")
&& QUrl(url).isValid()
&& destinations_.contains(type)
&& configHandler_->getAppConfigInstallTypes().contains(type)
&& !filename.isEmpty()) {
return true;
}
......@@ -68,7 +69,7 @@ bool OcsUrlHandler::isValid()
void OcsUrlHandler::openDestination()
{
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)
......@@ -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)
{
QJsonObject result;
QString type = metadata_["type"].toString();
qtlib::Dir destDir(destinations_[type].toString());
qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
destDir.make();
qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
......@@ -200,7 +167,7 @@ void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource)
qtlib::Package package(tempFile.path());
QString type = metadata_["type"].toString();
qtlib::Dir destDir(destinations_[type].toString());
qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
destDir.make();
qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
......
......@@ -3,18 +3,18 @@
#include <QObject>
#include <QJsonObject>
#include "qtlib_config.h"
namespace qtlib {
class NetworkResource;
}
class ConfigHandler;
class OcsUrlHandler : public QObject
{
Q_OBJECT
public:
explicit OcsUrlHandler(const QString &ocsUrl, const qtlib::Config &config, QObject *parent = 0);
explicit OcsUrlHandler(const QString &ocsUrl, ConfigHandler *configHandler, QObject *parent = 0);
signals:
void started();
......@@ -35,13 +35,10 @@ private slots:
private:
void parse();
void loadDestinations();
QString convertPathString(const QString &path);
void saveDownloadedFile(qtlib::NetworkResource *resource);
void installDownloadedFile(qtlib::NetworkResource *resource);
QString ocsUrl_;
qtlib::Config config_;
ConfigHandler *configHandler_;
QJsonObject metadata_;
QJsonObject destinations_;
};
......@@ -8,8 +8,7 @@
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "qtlib_config.h"
#include "handlers/confighandler.h"
#include "handlers/ocsurlhandler.h"
int main(int argc, char *argv[])
......@@ -17,18 +16,18 @@ int main(int argc, char *argv[])
// Init
QGuiApplication app(argc, argv);
qtlib::Config config(":/configs");
QJsonObject configApplication = config.get("application");
ConfigHandler *configHandler = new ConfigHandler();
QJsonObject appConfigApplication = configHandler->getAppConfigApplication();
app.setApplicationName(configApplication["name"].toString());
app.setApplicationVersion(configApplication["version"].toString());
app.setOrganizationName(configApplication["organization"].toString());
app.setOrganizationDomain(configApplication["domain"].toString());
app.setWindowIcon(QIcon::fromTheme(configApplication["id"].toString(), QIcon(configApplication["icon"].toString())));
app.setApplicationName(appConfigApplication["name"].toString());
app.setApplicationVersion(appConfigApplication["version"].toString());
app.setOrganizationName(appConfigApplication["organization"].toString());
app.setOrganizationDomain(appConfigApplication["domain"].toString());
app.setWindowIcon(QIcon::fromTheme(appConfigApplication["id"].toString(), QIcon(appConfigApplication["icon"].toString())));
// Setup CLI
QCommandLineParser clParser;
clParser.setApplicationDescription(configApplication["description"].toString());
clParser.setApplicationDescription(appConfigApplication["description"].toString());
clParser.addHelpOption();
clParser.addVersionOption();
clParser.addPositionalArgument("ocsurl", "OCS-URL");
......@@ -45,7 +44,9 @@ int main(int argc, char *argv[])
// Setup QML
QQmlApplicationEngine qmlAppEngine;
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"));
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