// // main.cpp // tests/gpu-test/src // // Copyright 2015 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include const QString& getResourcesDir() { static QString dir; if (dir.isEmpty()) { QDir path(__FILE__); path.cdUp(); dir = path.cleanPath(path.absoluteFilePath("../../../interface/resources/")) + "/"; qDebug() << "Resources Path: " << dir; } return dir; } const QString& getQmlDir() { static QString dir; if (dir.isEmpty()) { dir = getResourcesDir() + "qml/"; qDebug() << "Qml Path: " << dir; } return dir; } const QString& getTestQmlDir() { static QString dir; if (dir.isEmpty()) { QDir path(__FILE__); path.cdUp(); dir = path.cleanPath(path.absoluteFilePath("../")) + "/qml/"; qDebug() << "Qml Test Path: " << dir; } return dir; } using namespace controller; class PluginContainerProxy : public QObject, PluginContainer { Q_OBJECT public: virtual ~PluginContainerProxy() {} virtual void addMenu(const QString& menuName) override {} virtual void removeMenu(const QString& menuName) override {} virtual QAction* addMenuItem(PluginType type, const QString& path, const QString& name, std::function onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") override { return nullptr; } virtual void removeMenuItem(const QString& menuName, const QString& menuItem) override {} virtual bool isOptionChecked(const QString& name) override { return false; } virtual void setIsOptionChecked(const QString& path, bool checked) override {} virtual void setFullscreen(const QScreen* targetScreen, bool hideMenu = true) override {} virtual void unsetFullscreen(const QScreen* avoidScreen = nullptr) override {} virtual void showDisplayPluginsTools() override {} virtual void requestReset() override {} virtual bool makeRenderingContextCurrent() override { return true; } virtual void releaseSceneTexture(uint32_t texture) override {} virtual void releaseOverlayTexture(uint32_t texture) override {} virtual GLWidget* getPrimaryWidget() override { return nullptr; } virtual QWindow* getPrimaryWindow() override { return nullptr; } virtual QOpenGLContext* getPrimaryContext() override { return nullptr; } virtual bool isForeground() override { return true; } virtual const DisplayPlugin* getActiveDisplayPlugin() const override { return nullptr; } }; class MyControllerScriptingInterface : public controller::ScriptingInterface { public: virtual void registerControllerTypes(QScriptEngine* engine) {}; }; int main(int argc, char** argv) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; auto rootContext = engine.rootContext(); new PluginContainerProxy(); // Simulate our application idle loop QTimer timer; QObject::connect(&timer, &QTimer::timeout, [] { static float last = secTimestampNow(); float now = secTimestampNow(); float delta = now - last; last = now; foreach(auto inputPlugin, PluginManager::getInstance()->getInputPlugins()) { inputPlugin->pluginUpdate(delta, false); } auto userInputMapper = DependencyManager::get(); userInputMapper->update(delta); }); timer.start(50); { DependencyManager::set(); foreach(auto inputPlugin, PluginManager::getInstance()->getInputPlugins()) { QString name = inputPlugin->getName(); inputPlugin->activate(); auto userInputMapper = DependencyManager::get(); if (name == KeyboardMouseDevice::NAME) { userInputMapper->registerDevice(std::dynamic_pointer_cast(inputPlugin)->getInputDevice()); } inputPlugin->pluginUpdate(0, false); } rootContext->setContextProperty("Controllers", new MyControllerScriptingInterface()); } qDebug() << getQmlDir(); rootContext->setContextProperty("ResourcePath", getQmlDir()); engine.setBaseUrl(QUrl::fromLocalFile(getQmlDir())); engine.addImportPath(getQmlDir()); engine.load(getTestQmlDir() + "main.qml"); for (auto pathItem : engine.importPathList()) { qDebug() << pathItem; } app.exec(); return 0; } #include "main.moc"