From 3e0764caa84a21a60f971ec3693429a9981c5921 Mon Sep 17 00:00:00 2001 From: "kali kaneko (leap communications)" Date: Tue, 23 Jun 2020 18:47:25 +0200 Subject: [feat] hide systray if -n option is passed --- gui/main.cpp | 37 +++++++++++++++++++++++++++++-------- gui/qml/main.qml | 6 ++++-- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/gui/main.cpp b/gui/main.cpp index e5486df..8033dba 100644 --- a/gui/main.cpp +++ b/gui/main.cpp @@ -48,17 +48,40 @@ int main(int argc, char **argv) { QApplication::setApplicationName(backend.getAppName()); QApplication::setApplicationVersion(backend.getVersion()); QApplication app(argc, argv); - + app.setQuitOnLastWindowClosed(false); QCommandLineParser parser; - parser.setApplicationDescription(backend.getAppName() + ": a fast and secure VPN. Powered by Bitmask."); + parser.setApplicationDescription( + backend.getAppName() + + QApplication::translate( + "main", ": a fast and secure VPN. Powered by Bitmask.")); parser.addHelpOption(); parser.addVersionOption(); + parser.addOptions({ + { + {"n", "no-systray"}, + QApplication::translate("main", + "Do not show the systray icon (useful " + "together with gnome shell " + "extension, or to control VPN by other means)."), + }, + { + {"i", "install-helpers"}, + QApplication::translate( + "main", + "Install helpers (linux only, requires sudo)."), + }, + }); parser.process(app); - const QStringList args = parser.positionalArguments(); + bool hideSystray = parser.isSet("no-systray"); + bool installHelpers = parser.isSet("install-helpers"); - if (args.at(0) == "install-helpers") { + if (hideSystray) { + qDebug() << "Not showing systray icon because --no-systray option is set."; + } + + if (installHelpers) { qDebug() << "Will try to install helpers with sudo"; InstallHelpers(); exit(0); @@ -72,21 +95,19 @@ int main(int argc, char **argv) { translator.load(QLocale(), QLatin1String("main"), QLatin1String("_"), QLatin1String(":/i18n")); app.installTranslator(&translator); - app.setQuitOnLastWindowClosed(false); QQmlApplicationEngine engine; QQmlContext *ctx = engine.rootContext(); QJsonModel *model = new QJsonModel; - std::string json = R"({"appName": "unknown", "provider": "unknown"})"; - model->loadJson(QByteArray::fromStdString(json)); /* the backend handler has slots for calling back to Go when triggered by signals in Qml. */ ctx->setContextProperty("backend", &backend); - /* set the json model, load the qml */ + /* we pass the json model and set some useful flags */ ctx->setContextProperty("jsonModel", model); ctx->setContextProperty("debugQml", debugQml); + ctx->setContextProperty("systrayVisible", !hideSystray); engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml"))); diff --git a/gui/qml/main.qml b/gui/qml/main.qml index 2ac9398..b4aa19a 100644 --- a/gui/qml/main.qml +++ b/gui/qml/main.qml @@ -80,7 +80,7 @@ ApplicationWindow { SystemTrayIcon { id: systray - visible: true + visible: systrayVisible onActivated: { // this looks like a widget bug. middle click (reasons 3 or 4) @@ -105,7 +105,9 @@ ApplicationWindow { tooltip = qsTr("Checking status...") console.debug("systray init completed") hide(); - show(); + if (systrayVisible) { + show(); + } } menu: Menu { -- cgit v1.2.3