// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include #include #include #include #if QT_CONFIG(ssl) #include #endif #include static bool parseArgs(QStringList& args, QVariantMap& parameters) { while (!args.isEmpty()) { QString param = args.takeFirst(); if (param.startsWith("--help")) { QTextStream out(stdout); out << "Usage: " << Qt::endl; out << "--plugin. - Sets parameter = value for plugin" << Qt::endl; out.flush(); return true; } if (param.startsWith("--plugin.")) { param.remove(0, 9); if (args.isEmpty() || args.first().startsWith("--")) { parameters[param] = true; } else { QString value = args.takeFirst(); if (value == "true" || value == "on" || value == "enabled") { parameters[param] = true; } else if (value == "false" || value == "off" || value == "disable") { parameters[param] = false; } else { parameters[param] = value; } } } } return false; } int main(int argc, char *argv[]) { #if QT_CONFIG(library) const QByteArray additionalLibraryPaths = qgetenv("QTLOCATION_EXTRA_LIBRARY_PATH"); for (const QByteArray &p : additionalLibraryPaths.split(':')) QCoreApplication::addLibraryPath(QString(p)); #endif QGuiApplication application(argc, argv); QVariantMap parameters; QStringList args(QCoreApplication::arguments()); if (parseArgs(args, parameters)) return 0; if (!args.contains(QStringLiteral("osm.useragent"))) parameters[QStringLiteral("osm.useragent")] = QStringLiteral("QtLocation Mapviewer example"); QQmlApplicationEngine engine; #if QT_CONFIG(ssl) engine.rootContext()->setContextProperty("supportsSsl", QSslSocket::supportsSsl()); #else engine.rootContext()->setContextProperty("supportsSsl", false); #endif engine.addImportPath(QStringLiteral(":/imports")); engine.load(QUrl(QStringLiteral("qrc:///mapviewer.qml"))); QObject::connect(&engine, SIGNAL(quit()), qApp, SLOT(quit())); QObject *item = engine.rootObjects().first(); Q_ASSERT(item); QMetaObject::invokeMethod(item, "initializeProviders", Q_ARG(QVariant, QVariant::fromValue(parameters))); return application.exec(); }