1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge pull request #4675

anthony.bilinski (1):
      feat(login): Add command line argument to open login screen
This commit is contained in:
sudden6 2017-09-27 19:43:14 +02:00
commit ce0c102011
No known key found for this signature in database
GPG Key ID: 279509B499E032B9

View File

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