From d77d1023849c0faaf3b0d19caf34ef4bff9c52d8 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Wed, 10 Feb 2016 22:01:17 -0800 Subject: [PATCH] add support for persisting the mono preview mode option --- interface/src/PluginContainerProxy.cpp | 10 ++++++++++ interface/src/PluginContainerProxy.h | 4 ++++ libraries/plugins/src/plugins/PluginContainer.h | 4 ++++ plugins/oculus/src/OculusDisplayPlugin.cpp | 7 +++++-- tests/controllers/src/main.cpp | 2 ++ 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/interface/src/PluginContainerProxy.cpp b/interface/src/PluginContainerProxy.cpp index 048f079653..f8a9d907bb 100644 --- a/interface/src/PluginContainerProxy.cpp +++ b/interface/src/PluginContainerProxy.cpp @@ -184,3 +184,13 @@ void PluginContainerProxy::releaseOverlayTexture(uint32_t texture) { // FIXME implement present thread compositing } +/// settings interface +bool PluginContainerProxy::getBoolSetting(const QString& settingName, bool defaultValue) { + Setting::Handle settingValue(settingName, defaultValue); + return settingValue.get(); +} + +void PluginContainerProxy::setBoolSetting(const QString& settingName, bool value) { + Setting::Handle settingValue(settingName, value); + return settingValue.set(value); +} diff --git a/interface/src/PluginContainerProxy.h b/interface/src/PluginContainerProxy.h index 3adc696ba9..c08cf97abb 100644 --- a/interface/src/PluginContainerProxy.h +++ b/interface/src/PluginContainerProxy.h @@ -33,6 +33,10 @@ class PluginContainerProxy : public QObject, PluginContainer { virtual bool isForeground() override; virtual const DisplayPlugin* getActiveDisplayPlugin() const override; + /// settings interface + virtual bool getBoolSetting(const QString& settingName, bool defaultValue) override; + virtual void setBoolSetting(const QString& settingName, bool value) override; + QRect _savedGeometry{ 10, 120, 800, 600 }; std::map _exclusiveGroups; diff --git a/libraries/plugins/src/plugins/PluginContainer.h b/libraries/plugins/src/plugins/PluginContainer.h index 19859fd98b..a32b50cb94 100644 --- a/libraries/plugins/src/plugins/PluginContainer.h +++ b/libraries/plugins/src/plugins/PluginContainer.h @@ -47,6 +47,10 @@ public: virtual bool isForeground() = 0; virtual const DisplayPlugin* getActiveDisplayPlugin() const = 0; + /// settings interface + virtual bool getBoolSetting(const QString& settingName, bool defaultValue) = 0; + virtual void setBoolSetting(const QString& settingName, bool value) = 0; + QVector>& currentDisplayActions() { return _currentDisplayPluginActions; } diff --git a/plugins/oculus/src/OculusDisplayPlugin.cpp b/plugins/oculus/src/OculusDisplayPlugin.cpp index 3002c746a2..69083ac488 100644 --- a/plugins/oculus/src/OculusDisplayPlugin.cpp +++ b/plugins/oculus/src/OculusDisplayPlugin.cpp @@ -12,7 +12,6 @@ // FIXME get rid of this #include #include - #include "OculusHelpers.h" @@ -140,12 +139,16 @@ const QString OculusDisplayPlugin::NAME("Oculus Rift"); static const QString MONO_PREVIEW = "Mono Preview"; static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate"; +static const bool DEFAULT_MONO_VIEW = true; void OculusDisplayPlugin::activate() { + _monoPreview = _container->getBoolSetting("monoPreview", DEFAULT_MONO_VIEW); + _container->addMenuItem(PluginType::DISPLAY_PLUGIN, MENU_PATH(), MONO_PREVIEW, [this](bool clicked) { _monoPreview = clicked; - }, true, true); + _container->setBoolSetting("monoPreview", _monoPreview); + }, true, _monoPreview); _container->removeMenu(FRAMERATE); OculusBaseDisplayPlugin::activate(); } diff --git a/tests/controllers/src/main.cpp b/tests/controllers/src/main.cpp index fe49c2b385..da233d650c 100644 --- a/tests/controllers/src/main.cpp +++ b/tests/controllers/src/main.cpp @@ -99,6 +99,8 @@ public: virtual QOpenGLContext* getPrimaryContext() override { return nullptr; } virtual bool isForeground() override { return true; } virtual const DisplayPlugin* getActiveDisplayPlugin() const override { return nullptr; } + virtual bool getBoolSetting(const QString& settingName, bool defaultValue) override { return defaultValue; } + virtual void setBoolSetting(const QString& settingName, bool value) override { } }; class MyControllerScriptingInterface : public controller::ScriptingInterface {