From c9b00d9b114eac7fe0f50c63cf2eede704c8f067 Mon Sep 17 00:00:00 2001 From: aqua Date: Wed, 17 Aug 2022 15:31:23 +0300 Subject: Pass command line from secondary to primary instance --- src/application_instance.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/application_instance.cpp (limited to 'src/application_instance.cpp') 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 + * ============================================================ + * Description: Application Main Class + * Instance communication and Command Line parsing + * ============================================================ */ + +#include "application.hpp" +#include + +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())); +} -- cgit v1.2.1