Browse Source

Merge pull request #4675

anthony.bilinski (1):
      feat(login): Add command line argument to open login screen
sudden6 3 years ago
parent
commit
ce0c102011
1 changed files with 16 additions and 8 deletions
  1. 16 8
      src/main.cpp

+ 16 - 8
src/main.cpp

@@ -191,8 +191,10 @@ int main(int argc, char* argv[])
     parser.addVersionOption();
     parser.addPositionalArgument("uri", QObject::tr("Tox URI to parse"));
     parser.addOption(
-        QCommandLineOption("p", QObject::tr("Starts new instance and loads specified profile."),
+        QCommandLineOption(QStringList() << "p" << "profile", QObject::tr("Starts new instance and loads specified profile."),
                            QObject::tr("profile")));
+    parser.addOption(
+        QCommandLineOption(QStringList() << "l" << "login", QObject::tr("Starts new instance and opens the login screen.")));
     parser.process(*a);
 
     uint32_t profileId = Settings::getInstance().getCurrentProfileId();
@@ -265,16 +267,22 @@ int main(int argc, char* argv[])
     ipc.registerEventHandler("activate", &toxActivateEventHandler);
 
     uint32_t ipcDest = 0;
+    bool doIpc = true;
     QString eventType, firstParam;
     if (parser.isSet("p")) {
         profileName = parser.value("p");
         if (!Profile::exists(profileName)) {
-            qCritical() << "-p profile" << profileName + ".tox"
-                        << "doesn't exist";
-            return EXIT_FAILURE;
+            qWarning() << "-p profile" << profileName + ".tox"
+                        << "doesn't exist, opening login screen";
+            doIpc = false;
+            autoLogin = false;
+        } else {
+            ipcDest = Settings::makeProfileId(profileName);
+            autoLogin = true;
         }
-        ipcDest = Settings::makeProfileId(profileName);
-        autoLogin = true;
+    } else if (parser.isSet("l")) {
+        doIpc = false;
+        autoLogin = false;
     } else {
         profileName = Settings::getInstance().getCurrentProfile();
     }
@@ -296,13 +304,13 @@ int main(int argc, char* argv[])
         }
     }
 
-    if (!ipc.isCurrentOwner()) {
+    if (doIpc && !ipc.isCurrentOwner()) {
         time_t event = ipc.postEvent(eventType, firstParam.toUtf8(), ipcDest);
         // If someone else processed it, we're done here, no need to actually start qTox
         if (ipc.waitUntilAccepted(event, 2)) {
             if (eventType == "activate") {
                 qDebug() << "Another qTox instance is already running. If you want to start a second "
-                        "instance, please start with a profile (qtox -p <profile name>).";
+                        "instance, please open login screen (qtox -l) or start with a profile (qtox -p <profile name>).";
             } else {
                 qDebug() << "Event" << eventType << "was handled by other client.";
             }