summaryrefslogtreecommitdiff
path: root/src/application_instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/application_instance.cpp')
-rw-r--r--src/application_instance.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/application_instance.cpp b/src/application_instance.cpp
new file mode 100644
index 00000000..c2005acd
--- /dev/null
+++ b/src/application_instance.cpp
@@ -0,0 +1,50 @@
+/* ============================================================
+ * The rekonq project
+ * ============================================================
+ * SPDX-License-Identifier: GPL-3.0-only
+ * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net>
+ * ============================================================
+ * Description: Application Main Class
+ * Instance communication and Command Line parsing
+ * ============================================================ */
+
+#include "application.hpp"
+#include <QCommandLineParser>
+
+static const char *description = "A lightweight Web Browser based on Qt WebEngine";
+
+void Application::parseCommandLine(int instanceId, const QByteArray &message)
+{
+ // Initialize command line args
+ QCommandLineParser parser;
+ parser.setApplicationDescription(description);
+ parser.addHelpOption();
+ parser.addVersionOption();
+
+ // Define the command line options
+ QCommandLineOption options_incognito("incognito", QCoreApplication::translate("main", "Open in incognito mode"));
+ QCommandLineOption options_webapp("webapp",
+ QCoreApplication::translate("main", "Open URL as web app (in a simple window)"));
+ QCommandLineOption options_plugin({"l", "load"}, QCoreApplication::translate("main", "Add plugin to load path"),
+ "path");
+ parser.addOptions({options_incognito, options_webapp, options_plugin});
+
+ // Define the positional arguments
+ parser.addPositionalArgument("URL", QCoreApplication::translate("main", "Location to open"));
+
+ if (instanceId == this->instanceId()) parser.process(*this);
+ else {
+ QStringList arguments;
+ for (const auto &arg : message.split('\n')) arguments.append(arg);
+ parser.process(arguments);
+ }
+
+ if (parser.isSet(options_plugin)) {
+ for (const auto &plugin : parser.values(options_plugin)) this->registerPlugin(plugin);
+ }
+
+ const auto positionalArguments = parser.positionalArguments();
+ if (parser.isSet(options_webapp))
+ positionalArguments.isEmpty() ? this->newWebApp()
+ : this->newWebApp(QUrl::fromUserInput(positionalArguments.first()));
+}