**
****************************************************************************/
+#include <QCommandLineParser>
#include <QGuiApplication>
#include <QNetworkAccessManager>
#include <QNetworkProxy>
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);