int main(int argc, char **argv) { QApplication app(argc, argv); const QUrl documentUrl = QUrl("qrc:///main.qml"); QQmlEngine engine; #ifdef Q_OS_MACOS engine.addImportPath(QStringLiteral("%1/../PlugIns").arg(QCoreApplication::applicationDirPath())); #else engine.addImportPath(PLUGIN_IMPORT_PATH); #endif Editor editor; engine.rootContext()->setContextProperty("_editor", &editor); QObject::connect(&engine, &QQmlEngine::quit, QCoreApplication::instance(), &QCoreApplication::quit); QQmlComponent component(&engine, documentUrl); QWidget *widget = qobject_cast<QWidget*>(component.create()); if (!widget) qFatal("Failed to create widget from QML"); widget->show(); return app.exec(); }
int main(int argc, char* argv[]) { QScopedPointer<qf::core::LogDevice> file_log_device(qf::core::FileLogDevice::install()); file_log_device->setDomainTresholds(argc, argv); file_log_device->setPrettyDomain(true); qfError() << QThread::currentThread() << "QFLog(ERROR) test OK."; qfWarning() << "QFLog(WARNING) test OK."; qfInfo() << "QFLog(INFO) test OK."; qfDebug() << "QFLog(DEBUG) test OK."; TheApp app(argc, argv); QCoreApplication::setOrganizationName("OrienteeringTools"); QCoreApplication::setOrganizationDomain("sourceforge.net"); QCoreApplication::setApplicationName("QSiCli"); QQmlEngine engine; #ifdef Q_OS_UNIX engine.addImportPath(QCoreApplication::applicationDirPath() + "/../lib/qml"); #else engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml"); #endif engine.rootContext()->setContextProperty("TheApp", &app); QUrl extensions_url = QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/divers/qsicli/extensions/qml/init.qml"); qfDebug() << "creating extensions on path:" << extensions_url.toString(); QQmlComponent component(&engine, extensions_url); if(!component.isReady()) { qfError() << component.errorString(); } else { QObject *extensions_root = qobject_cast<QWidget*>(component.create()); qfDebug() << "extensions created" << extensions_root; } MainWindow w; //qDebug() << "showing main window"; w.show(); //qDebug() << "enterring the message loop"; int ret = app.exec(); qfInfo() << "bye ..."; return ret; }
void tst_qrcqml::qrcImport() { QFETCH(QString, importPath); QFETCH(QString, token); QQmlEngine e; e.addImportPath(importPath); QQmlComponent c(&e, QUrl("qrc:///importtest.qml")); QVERIFY(c.isReady()); QObject *o = c.create(); QVERIFY(o); QCOMPARE(o->property("tokenProperty").toString(), token); delete o; }
void QuickAndroidTests::loading() { QStringList res; QQueue<QString> queue; queue.enqueue(":/QuickAndroid"); QQmlEngine engine; engine.addImportPath("qrc:///"); while (queue.size()) { QString path = queue.dequeue(); QDir dir(path); QFileInfoList infos = dir.entryInfoList(QStringList()); for (int i = 0 ; i < infos.size();i++) { QFileInfo info = infos.at(i); if (info.fileName() == "." || info.fileName() == "..") continue; if (info.isDir()) { queue.enqueue(info.absoluteFilePath()); continue; } QUrl url = info.absoluteFilePath().remove(0,1); url.setScheme("qrc"); if (info.suffix() != "qml") { continue; } QFile file(":" + url.path()); QVERIFY(file.open(QIODevice::ReadOnly)); QString content = file.readAll(); content = content.toLower(); // Skip singleton module as it can not be loaded directly if (content.indexOf("pragma singleton") != -1) { qDebug() << QString("%1 : Skipped (singleton)").arg(url.toString()); continue; } QQmlComponent comp(&engine); comp.loadUrl(url); if (comp.isError()) { qDebug() << QString("%1 : Load Failed. Reason : %2").arg(info.absoluteFilePath()).arg(comp.errorString()); } QVERIFY(!comp.isError()); qDebug() << QString("%1 : Passed").arg(info.absoluteFilePath()); } } }
void QuickFluxUnitTests::loading() { QFETCH(QString, input); QQmlEngine engine; engine.addImportPath("qrc:///"); QQmlComponent comp(&engine); QString path = QtShell::realpath_strip(input); QUrl url = QUrl::fromLocalFile(path); QString content = QtShell::cat(path); comp.setData(content.toUtf8(), url); if (comp.isError()) { qDebug() << QString("%1 : Load Failed. Reason : %2").arg(input).arg(comp.errorString()); } QVERIFY(!comp.isError()); }
int main(int argc, char *argv[]) { QOptions options(get_common_options()); options.add(QLatin1String("QMLPlayer options")) ("scale", 1.0, QLatin1String("scale of graphics context. 0: auto")) ; options.parse(argc, argv); if (options.value(QLatin1String("help")).toBool()) { options.print(); return 0; } QGuiApplication app(argc, argv); QDir::setCurrent(qApp->applicationDirPath()); qDebug() << "arguments======= " << app.arguments(); set_opengl_backend(options.option(QStringLiteral("gl")).value().toString(), app.arguments().first()); load_qm(QStringList() << QStringLiteral("QMLPlayer"), options.value(QStringLiteral("language")).toString()); QtQuick2ApplicationViewer viewer; QString binDir = qApp->applicationDirPath(); if (binDir.endsWith(QLatin1String(".app/Contents/MacOS"))) { binDir.remove(QLatin1String(".app/Contents/MacOS")); binDir = binDir.left(binDir.lastIndexOf(QLatin1String("/"))); } QQmlEngine *engine = viewer.engine(); if (!engine->importPathList().contains(binDir)) engine->addImportPath(binDir); qDebug() << engine->importPathList(); engine->rootContext()->setContextProperty(QStringLiteral("PlayerConfig"), &Config::instance()); qDebug(">>>>>>>>devicePixelRatio: %f", qApp->devicePixelRatio()); QScreen *sc = app.primaryScreen(); qDebug() << "dpi phy: " << sc->physicalDotsPerInch() << ", logical: " << sc->logicalDotsPerInch() << ", dpr: " << sc->devicePixelRatio() << "; vis rect:" << sc->virtualGeometry(); // define a global var for js and qml engine->rootContext()->setContextProperty(QStringLiteral("screenPixelDensity"), qApp->primaryScreen()->physicalDotsPerInch()*qApp->primaryScreen()->devicePixelRatio()); qreal r = sc->physicalDotsPerInch()/sc->logicalDotsPerInch(); if (std::isinf(r) || std::isnan(r)) #if defined(Q_OS_ANDROID) r = 2.0; #else r = 1.0; #endif float sr = options.value(QStringLiteral("scale")).toFloat(); #if defined(Q_OS_ANDROID) sr = r; if (sr > 2.0) sr = 2.0; //FIXME #endif if (qFuzzyIsNull(sr)) sr = r; engine->rootContext()->setContextProperty(QStringLiteral("scaleRatio"), sr); QString qml = QStringLiteral("qml/QMLPlayer/main.qml"); if (QFile(qApp->applicationDirPath() + QLatin1String("/") + qml).exists()) qml.prepend(qApp->applicationDirPath() + QLatin1String("/")); else qml.prepend(QLatin1String("qrc:///")); viewer.setMainQmlFile(qml); viewer.show(); QOption op = options.option(QStringLiteral("width")); if (op.isSet()) viewer.setWidth(op.value().toInt()); op = options.option(QStringLiteral("height")); if (op.isSet()) viewer.setHeight(op.value().toInt()); op = options.option(QStringLiteral("x")); if (op.isSet()) viewer.setX(op.value().toInt()); op = options.option(QStringLiteral("y")); if (op.isSet()) viewer.setY(op.value().toInt()); if (options.value(QStringLiteral("fullscreen")).toBool()) viewer.showFullScreen(); viewer.setTitle(QStringLiteral("QMLPlayer based on QtAV. [email protected]")); /* * find root item, then root.init(argv). so we can deal with argv in qml */ #if 1 QString json = app.arguments().join(QStringLiteral("\",\"")); json.prepend(QLatin1String("[\"")).append(QLatin1String("\"]")); json.replace(QLatin1String("\\"), QLatin1String("/")); //FIXME QMetaObject::invokeMethod(viewer.rootObject(), "init", Q_ARG(QVariant, json)); //#else QObject *player = viewer.rootObject()->findChild<QObject*>(QStringLiteral("player")); if (player) { AppEventFilter *ae = new AppEventFilter(player, player); qApp->installEventFilter(ae); } QString file; #ifdef Q_OS_ANDROID file = QAndroidJniObject::callStaticObjectMethod("org.qtav.qmlplayer.QMLPlayerActivity" , "getUrl" , "()Ljava/lang/String;") .toString(); #endif if (app.arguments().size() > 1) { file = options.value(QStringLiteral("file")).toString(); if (file.isEmpty()) { if (argc > 1 && !app.arguments().last().startsWith(QLatin1Char('-')) && !app.arguments().at(argc-2).startsWith(QLatin1Char('-'))) file = app.arguments().last(); } } qDebug() << "file: " << file; if (player && !file.isEmpty()) { if (!file.startsWith(QLatin1String("file:")) && QFile(file).exists()) file.prepend(QLatin1String("file:")); //qml use url and will add qrc: if no scheme file.replace(QLatin1String("\\"), QLatin1String("/")); //qurl QMetaObject::invokeMethod(player, "play", Q_ARG(QUrl, QUrl(file))); } #endif QObject::connect(viewer.rootObject(), SIGNAL(requestFullScreen()), &viewer, SLOT(showFullScreen())); QObject::connect(viewer.rootObject(), SIGNAL(requestNormalSize()), &viewer, SLOT(showNormal())); ScreenSaver::instance().disable(); //restore in dtor return app.exec(); }
int main(int argc, char** argv) { QApplication app(argc, argv); app.setApplicationDisplayName("Peruse"); app.setOrganizationDomain("kde.org"); QCommandLineParser parser; // TODO file option for opening comics by passing them through on the command line parser.addHelpOption(); parser.process(app); if (parser.positionalArguments().size() > 1) { parser.showHelp(1); } KDeclarative::KDeclarative kdeclarative; QQmlEngine engine; kdeclarative.setDeclarativeEngine(&engine); kdeclarative.setupBindings(); bool osIsWindows = false; #ifdef Q_OS_WIN // Because windows is a bit funny with paths and whatnot, just so the thing with the lib paths... QDir appdir(qApp->applicationDirPath()); appdir.cdUp(); engine.addImportPath(appdir.canonicalPath() + "/lib/qml"); osIsWindows = true; // Hey, let's try and avoid all those extra stale processes, right? qputenv("KDE_FORK_SLAVES", "true"); #endif engine.rootContext()->setContextProperty("osIsWindows", osIsWindows); QQmlContext* objectContext = engine.rootContext(); QString platformEnv(qgetenv("PLASMA_PLATFORM")); engine.rootContext()->setContextProperty("PLASMA_PLATFORM", platformEnv); // Yes, i realise this is a touch on the ugly side. I have found no better way to allow for // things like the archive book model to create imageproviders for the archives engine.rootContext()->setContextProperty("globalQmlEngine", &engine); engine.rootContext()->setContextProperty("maxTextureSize", getMaxTextureSize()); QString path; if (platformEnv.startsWith("phone")) { path = QStandardPaths::locate(QStandardPaths::DataLocation, "qml/MobileMain.qml"); } else { path = QStandardPaths::locate(QStandardPaths::DataLocation, "qml/Main.qml"); } int rt = 0; QQmlComponent component(&engine, path); if (component.isError()) { qCritical() << "Failed to load the component from disk. Reported error was:" << component.errorString(); rt = -1; } else { if(component.status() == QQmlComponent::Ready) { QObject* obj = component.create(objectContext); if(obj) { rt = app.exec(); } else { qCritical() << "Failed to create an object from our component"; rt = -2; } } else { qCritical() << "Failed to make the Qt Quick component ready. Status is:" << component.status(); rt = -3; } } return rt; }