diff --git a/interface/resources/qml/controls-uit/ComboBox.qml b/interface/resources/qml/controls-uit/ComboBox.qml index be6a439e57..3ce297ef80 100644 --- a/interface/resources/qml/controls-uit/ComboBox.qml +++ b/interface/resources/qml/controls-uit/ComboBox.qml @@ -20,6 +20,7 @@ FocusScope { HifiConstants { id: hifi } property alias model: comboBox.model; + property alias editable: comboBox.editable property alias comboBox: comboBox readonly property alias currentText: comboBox.currentText; property alias currentIndex: comboBox.currentIndex; diff --git a/interface/resources/qml/hifi/tablet/InputConfiguration.qml b/interface/resources/qml/hifi/tablet/InputConfiguration.qml index fc65f8a3d4..10f03f9edf 100644 --- a/interface/resources/qml/hifi/tablet/InputConfiguration.qml +++ b/interface/resources/qml/hifi/tablet/InputConfiguration.qml @@ -20,6 +20,8 @@ Rectangle { color: hifi.colors.baseGray + property var pluginSettings: null + Rectangle { width: inputConfiguration.width height: 1 @@ -71,17 +73,22 @@ Rectangle { HifiControls.ComboBox { id: box width: 160 - + editable: true colorScheme: hifi.colorSchemes.dark model: inputPlugins() + + onCurrentIndexChanged: { + var object = {"Test": "hello"}; + InputConfiguration.configurationSettings(object, box.currentText); + } } HifiControls.CheckBox { onClicked: { if (checked) { - console.log("button checked"); - Tablet.getTablet(""); - InputConfiguration.inputPlugins(); + box.model = InputConfiguration.activeInputPlugins(); + } else { + box.model = InputConfiguration.inputPlugins(); } } } @@ -89,7 +96,6 @@ Rectangle { } function inputPlugins() { - var plugins = ["temp"]; - return plugins + return InputConfiguration.inputPlugins(); } } diff --git a/libraries/plugins/src/plugins/InputConfiguration.cpp b/libraries/plugins/src/plugins/InputConfiguration.cpp index c15316406b..8f8daf716a 100644 --- a/libraries/plugins/src/plugins/InputConfiguration.cpp +++ b/libraries/plugins/src/plugins/InputConfiguration.cpp @@ -8,19 +8,43 @@ #include "InputConfiguration.h" - +#include "DisplayPlugin.h" +#include "InputPlugin.h" #include "PluginManager.h" InputConfiguration::InputConfiguration() { - } -void InputConfiguration::inputPlugins() { - PluginManager* inputPlugin = PluginManager::getInstance(); -} - -void InputConfiguration::enabledInputPlugins() { - qDebug() << "getting enabled plugins"; +QStringList InputConfiguration::inputPlugins() { + QStringList inputPlugins; + for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { + inputPlugins << QString(plugin->getName()); + } + return inputPlugins; } +QStringList InputConfiguration::activeInputPlugins() { + QStringList activePlugins; + for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { + if (plugin->isActive()) { + activePlugins << QString(plugin->getName()); + } + } + return activePlugins; +} + +QString InputConfiguration::configurationLayout(QString pluginName) { + QString sourcePath; + + for (auto plugin : PluginManager::getInstance()->getInputPlugins()) { + if (plugin->getName() == pluginName) { + qDebug() << "------------> testing <----------"; + } + } + return sourcePath; +} + +void InputConfiguration::configurationSettings(QJsonObject configurationSettings, QString pluginName) { + qDebug() << configurationSettings["Test"]; +} diff --git a/libraries/plugins/src/plugins/InputConfiguration.h b/libraries/plugins/src/plugins/InputConfiguration.h index d8174737cf..2a0093d5b2 100644 --- a/libraries/plugins/src/plugins/InputConfiguration.h +++ b/libraries/plugins/src/plugins/InputConfiguration.h @@ -12,15 +12,20 @@ #include #include +#include +#include +#include #include class InputConfiguration : public QObject, public Dependency { Q_OBJECT public: InputConfiguration(); - - void inputPlugins(); - void enabledInputPlugins(); + + Q_INVOKABLE QStringList inputPlugins(); + Q_INVOKABLE QStringList activeInputPlugins(); + Q_INVOKABLE QString configurationLayout(QString pluginName); + Q_INVOKABLE void configurationSettings(QJsonObject configurationSettings, QString pluginName); }; #endif diff --git a/libraries/plugins/src/plugins/InputPlugin.h b/libraries/plugins/src/plugins/InputPlugin.h index 0db0b24420..eb8aca660b 100644 --- a/libraries/plugins/src/plugins/InputPlugin.h +++ b/libraries/plugins/src/plugins/InputPlugin.h @@ -11,6 +11,7 @@ #pragma once #include "Plugin.h" +#include namespace controller { struct InputCalibrationData; @@ -25,5 +26,5 @@ public: // If an input plugin is only a single device, it will only return it's primary name. virtual QStringList getSubdeviceNames() { return { getName() }; }; virtual bool isHandController() const = 0; + virtual void inputPluginConfigurationSettings(const QJsonObject configurationSettings) { } }; - diff --git a/plugins/hifiCodec/CMakeLists.txt b/plugins/hifiCodec/CMakeLists.txt index 28c1dc3807..15572e8266 100644 --- a/plugins/hifiCodec/CMakeLists.txt +++ b/plugins/hifiCodec/CMakeLists.txt @@ -8,7 +8,7 @@ set(TARGET_NAME hifiCodec) setup_hifi_client_server_plugin() -link_hifi_libraries(audio plugins) +link_hifi_libraries(audio plugins input-plugins display-plugins) add_dependency_external_projects(hifiAudioCodec) target_include_directories(${TARGET_NAME} PRIVATE ${HIFIAUDIOCODEC_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${HIFIAUDIOCODEC_LIBRARIES}) diff --git a/plugins/hifiNeuron/CMakeLists.txt b/plugins/hifiNeuron/CMakeLists.txt index a9ed8cca6e..e3a725ca2f 100644 --- a/plugins/hifiNeuron/CMakeLists.txt +++ b/plugins/hifiNeuron/CMakeLists.txt @@ -10,7 +10,7 @@ if (APPLE OR WIN32) set(TARGET_NAME hifiNeuron) setup_hifi_plugin(Script Qml Widgets) - link_hifi_libraries(shared controllers ui plugins input-plugins) + link_hifi_libraries(shared controllers ui plugins input-plugins display-plugins) target_neuron() endif() diff --git a/plugins/hifiSdl2/CMakeLists.txt b/plugins/hifiSdl2/CMakeLists.txt index 7e499e314a..86bda5a15d 100644 --- a/plugins/hifiSdl2/CMakeLists.txt +++ b/plugins/hifiSdl2/CMakeLists.txt @@ -8,5 +8,5 @@ set(TARGET_NAME hifiSdl2) setup_hifi_plugin(Script Qml Widgets) -link_hifi_libraries(shared controllers ui plugins input-plugins script-engine) +link_hifi_libraries(shared controllers ui plugins input-plugins script-engine display-plugins) target_sdl2() diff --git a/plugins/hifiSixense/CMakeLists.txt b/plugins/hifiSixense/CMakeLists.txt index 14676217db..54884bddff 100644 --- a/plugins/hifiSixense/CMakeLists.txt +++ b/plugins/hifiSixense/CMakeLists.txt @@ -9,6 +9,6 @@ if (NOT ANDROID) set(TARGET_NAME hifiSixense) setup_hifi_plugin(Script Qml Widgets) - link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins) + link_hifi_libraries(shared controllers ui plugins ui-plugins input-plugins display-plugins) target_sixense() endif () diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 53500a3353..d505e91511 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -94,6 +94,9 @@ bool ViveControllerManager::isSupported() const { return openVrSupported(); } +void ViveControllerManager::inputPluginConfigurationSettings(const QJsonObject configurationSettings) { +} + bool ViveControllerManager::activate() { InputPlugin::activate(); diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index a76adaa8f9..1ac920228a 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -42,6 +42,8 @@ public: bool isHandController() const override { return true; } + void inputPluginConfigurationSettings(const QJsonObject configurationSettings) override; + bool activate() override; void deactivate() override; @@ -145,6 +147,7 @@ private: bool _triggersPressedHandled { false }; bool _calibrated { false }; bool _timeTilCalibrationSet { false }; + bool _calibrate { false }; mutable std::recursive_mutex _lock; QString configToString(Config config); diff --git a/plugins/pcmCodec/CMakeLists.txt b/plugins/pcmCodec/CMakeLists.txt index 900a642a88..5e52705033 100644 --- a/plugins/pcmCodec/CMakeLists.txt +++ b/plugins/pcmCodec/CMakeLists.txt @@ -8,6 +8,6 @@ set(TARGET_NAME pcmCodec) setup_hifi_client_server_plugin() -link_hifi_libraries(shared plugins) +link_hifi_libraries(shared plugins input-plugins display-plugins) install_beside_console()