aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-07-01 18:13:01 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-07-01 18:13:01 +0200
commitaa8198eec380659fd3538e058b50c24b0f88743c (patch)
treeb9ae32ac4192de87054a8892d4e654a45737a04e /src/main.cpp
parentAdd browser.locale and browser.translation (diff)
downloadsmolbote-aa8198eec380659fd3538e058b50c24b0f88743c.tar.xz
Code cleanup
Clean up MainWindow Configuration is now a std::unique_ptr Connect downloads and request interceptor to all profiles
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp45
1 files changed, 16 insertions, 29 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 85bf5f0..00a57d5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -20,7 +20,7 @@
int main(int argc, char **argv)
{
// create and load configuration
- std::shared_ptr<Configuration> config = std::make_shared<Configuration>();
+ std::unique_ptr<Configuration> config = std::make_unique<Configuration>(nullptr);
#ifdef QT_DEBUG
QObject::connect(config.get(), &Configuration::settingChanged, [](const std::string &path, const QString &value) {
qDebug("!!! setting changed %s=[%s]", path.c_str(), qUtf8Printable(value));
@@ -83,7 +83,6 @@ int main(int argc, char **argv)
Browser app(argc, argv);
// set this, otherwise the webview becomes black when using a stylesheet
app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true);
- app.setConfiguration(config);
// translator
if(config->exists("browser.locale")) {
@@ -102,15 +101,21 @@ int main(int argc, char **argv)
delete translator;
}
+ // command line arguments
+ auto arguments = config->value<std::vector<std::string>>("args");
+
+ auto socket = config->value<QString>("socket");
+ auto session = config->value<QString>("browser.session");
+ auto profile = config->value<QString>("profile.default");
+
+ app.setConfiguration(config);
+ app.setup(profile.value());
- app.setup(QString::fromStdString(config->value<std::string>("profile.default").value()));
for(const Plugin &plugin : plugins) {
app.registerPlugin(plugin);
}
- auto arguments = config->value<std::vector<std::string>>("args");
QStringList urls;
-
if(arguments) {
for(const auto &u : arguments.value()) {
if(pluginCommands.contains(QString::fromStdString(u))) {
@@ -122,43 +127,25 @@ int main(int argc, char **argv)
}
// set up socket
- bool isSingleInstance = app.bindLocalSocket(QString::fromStdString(config->value<std::string>("socket").value()));
+ bool isSingleInstance = app.bindLocalSocket(socket.value());
+ if(isSingleInstance) {
#ifdef QT_DEBUG
- qDebug("bindLocalSocket(%s) = %s", qUtf8Printable(QString::fromStdString(config->value<std::string>("socket").value())), isSingleInstance ? "true" : "false");
+ qDebug("Local socket bound");
#endif
- // if we are the only instance, set up the browser
- if(isSingleInstance) {
- auto stylesheet = config->value<std::string>("browser.stylesheet");
- if(stylesheet) {
- QFile f(QString::fromStdString(stylesheet.value()));
- if(f.open(QIODevice::ReadOnly)) {
- app.setStyleSheet(f.readAll());
- f.close();
- }
- }
-
QObject::connect(&app, &Browser::messageAvailable, &app, &Browser::createSession);
}
- if(config->exists("session")) {
- QFile sessionJson(config->value<QString>("session").value());
+ if(session) {
+ QFile sessionJson(session.value());
if(sessionJson.open(QIODevice::ReadOnly | QIODevice::Text)) {
app.sendMessage(sessionJson.readAll());
sessionJson.close();
} else {
qWarning("Could not open session [%s].", qUtf8Printable(sessionJson.fileName()));
}
- } else if(config->exists("browser.session")) {
- QFile sessionJson(config->value<QString>("browser.session").value());
- if(sessionJson.open(QIODevice::ReadOnly | QIODevice::Text)) {
- app.sendMessage(sessionJson.readAll());
- sessionJson.close();
- } else {
- qWarning("Could not open browser.session [%s].", qUtf8Printable(sessionJson.fileName()));
- }
} else
- app.sendMessage(Session::toJsonObject(config->value<QString>("profile.default").value(), urls));
+ app.sendMessage(Session::toJsonObject(profile.value(), urls));
if(isSingleInstance)
return app.exec();