summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Klinger2016-09-27 16:22:06 +0200
committerChristian Klinger2016-09-27 16:22:06 +0200
commit4c35ed7f24244c651afea6e7b9e577e2be84c905 (patch)
tree6535e84d4184ce6d706a9542cf55afcd595392a7
parentMerge branch 'master' of git.openslx.org:pvs2 (diff)
downloadpvs2-4c35ed7f24244c651afea6e7b9e577e2be84c905.tar.gz
pvs2-4c35ed7f24244c651afea6e7b9e577e2be84c905.tar.xz
pvs2-4c35ed7f24244c651afea6e7b9e577e2be84c905.zip
improved option parsing.
-rw-r--r--src/client/clientapp/clientapp.cpp16
-rw-r--r--src/client/clientapp/clientapp.h5
-rw-r--r--src/client/main.cpp5
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();