networkaccessmanagerfactory example: introduced QCommandLineParser
authorOliver Wolff <oliver.wolff@digia.com>
Mon, 10 Mar 2014 12:40:36 +0000 (13:40 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 12 Mar 2014 11:39:59 +0000 (12:39 +0100)
Change-Id: I6385ee0c33a0a8cb411dbbdf5f6ea10f5ebde1a5
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
examples/qml/networkaccessmanagerfactory/main.cpp

index 2cd9fa0..9fe8882 100644 (file)
@@ -38,6 +38,7 @@
 **
 ****************************************************************************/
 
+#include <QCommandLineParser>
 #include <QGuiApplication>
 #include <QNetworkAccessManager>
 #include <QNetworkProxy>
@@ -82,20 +83,36 @@ int main(int argc, char ** argv)
 
     QGuiApplication app(argc, argv);
 
-    for (int i = 1; i < argc; ++i) {
-        QString arg(argv[i]);
-        if (arg == "-host" && i < argc-1) {
-            proxyHost = argv[++i];
-        } else if (arg == "-port" && i < argc-1) {
-            arg = argv[++i];
-            proxyPort = arg.toInt();
-        } else if (arg[0] != '-') {
-            source = QUrl::fromLocalFile(arg);
-        } else {
-            qWarning() << "Usage: networkaccessmanagerfactory [-host <proxy> -port <port>] [file]";
+    QCommandLineParser parser;
+    QCommandLineOption proxyHostOption("host", "The proxy host to use.", "host");
+    parser.addOption(proxyHostOption);
+    QCommandLineOption proxyPortOption("port", "The proxy port to use.", "port", "0");
+    parser.addOption(proxyPortOption);
+    parser.addPositionalArgument("file", "The file to use.");
+    QCommandLineOption helpOption = parser.addHelpOption();
+    parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
+    QStringList arguments = QCoreApplication::arguments();
+    if (!parser.parse(arguments)) {
+        qWarning() << parser.helpText() << '\n' << parser.errorText();
+        exit(1);
+    }
+    if (parser.isSet(helpOption)) {
+        qWarning() << parser.helpText();
+        exit(0);
+    }
+    if (parser.isSet(proxyHostOption))
+        proxyHost = parser.value(proxyHostOption);
+    if (parser.isSet(proxyPortOption)) {
+        bool ok = true;
+        proxyPort = parser.value(proxyPortOption).toInt(&ok);
+        if (!ok || proxyPort < 1 || proxyPort > 65535) {
+            qWarning() << parser.helpText() << "\nNo valid port given. It should\
+                          be a number between 1 and 65535";
             exit(1);
         }
     }
+    if (parser.positionalArguments().count() == 1)
+        source = QUrl::fromLocalFile(parser.positionalArguments().first());
 
     QQuickView view;
     view.engine()->setNetworkAccessManagerFactory(new MyNetworkAccessManagerFactory);