// // 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& getQmlDir() { static QString dir; if (dir.isEmpty()) { QDir path(__FILE__); path.cdUp(); dir = path.cleanPath(path.absoluteFilePath("../qml/")) + "/"; qDebug() << "Qml Path: " << dir; } return dir; } using namespace controller; class PluginContainerProxy : public QObject, PluginContainer { Q_OBJECT public: PluginContainerProxy() { Plugin::setContainer(this); } virtual ~PluginContainerProxy() {} virtual void addMenu(const QString& menuName) override {} virtual void removeMenu(const QString& menuName) override {} virtual QAction* addMenuItem(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 QGLWidget* getPrimarySurface() 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; 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) { auto keyboardMouseDevice = static_cast(inputPlugin.data()); // TODO: this seems super hacky keyboardMouseDevice->registerToUserInputMapper(*userInputMapper); } inputPlugin->pluginUpdate(0, false); } auto rootContext = engine.rootContext(); rootContext->setContextProperty("Controllers", new MyControllerScriptingInterface()); } engine.load(getQmlDir() + "main.qml"); app.exec(); return 0; } #include "main.moc"