From 4c35ed7f24244c651afea6e7b9e577e2be84c905 Mon Sep 17 00:00:00 2001 From: Christian Klinger Date: Tue, 27 Sep 2016 16:22:06 +0200 Subject: improved option parsing. --- src/client/clientapp/clientapp.cpp | 16 ++++++++++++---- src/client/clientapp/clientapp.h | 5 ++++- src/client/main.cpp | 5 +++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/client/clientapp/clientapp.cpp b/src/client/clientapp/clientapp.cpp index ce0b5f3..05289e5 100644 --- a/src/client/clientapp/clientapp.cpp +++ b/src/client/clientapp/clientapp.cpp @@ -6,7 +6,7 @@ ClientApp::ClientApp(int& argc, char** argv) : QApplication(argc, argv), _connec setOrganizationDomain("openslx.org"); setApplicationName("pvsclient"); - parseParameters(); + _arguments = parseParameters(); initConfiguration(); @@ -28,9 +28,10 @@ ClientApp::ClientApp(int& argc, char** argv) : QApplication(argc, argv), _connec }; -/* parse arguments */ -void ClientApp::parseParameters() { - for (QString a : arguments()) { +/* parse arguments and return a list with the unused arguments */ +QStringList ClientApp::parseParameters() { + QStringList rest; + for (QString a : QApplication::arguments()) { if (a == "--exam-mode") { _examMode = true; } else if (a == "--auto") { @@ -38,8 +39,11 @@ void ClientApp::parseParameters() { } else if (a.startsWith("--session=")) { _connectionMode = ConnectionMode::Session; _sessionName = a.replace("--session=", ""); + } else { + rest << a; } } + return rest; } void ClientApp::initConfiguration() { /* configuration */ @@ -66,3 +70,7 @@ void ClientApp::initConfiguration() { } } while (false); } + +QStringList ClientApp::arguments() { + return _arguments; +} diff --git a/src/client/clientapp/clientapp.h b/src/client/clientapp/clientapp.h index 5571cb0..0636080 100644 --- a/src/client/clientapp/clientapp.h +++ b/src/client/clientapp/clientapp.h @@ -26,13 +26,16 @@ class ClientApp : public QApplication { ConnectionMode _connectionMode; /* way of automatically connection to a session on startup*/ QString _sessionName; /* only set when _connectionMode == Session */ Toolbar* _toolbar; + QStringList _arguments; void initConfiguration(); - void parseParameters(); + QStringList parseParameters(); public: ClientApp(int& argc, char** argv); bool isExamMode() const { return _examMode; }; + + virtual QStringList arguments(); }; diff --git a/src/client/main.cpp b/src/client/main.cpp index 8f256d7..2730475 100644 --- a/src/client/main.cpp +++ b/src/client/main.cpp @@ -12,6 +12,11 @@ int main(int argc, char** argv) if (a == "--usage" || a == "--help") { qStdout() << "Usage: pvsclient [--exam-mode] [--auto|--session=xxx|\"\"]" << endl; exit(0); + } else if (a.contains("pvsclient")) { + /* do nothing */ + } else { + qStdout() << "Unknown argument: " << a << endl; + exit(1); } } return app.exec(); -- cgit v1.2.3-55-g7522