diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 21732763f0..87f63c4b78 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -170,7 +170,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _runningScriptsWidget(NULL), _runningScriptsWidgetWasVisible(false), _trayIcon(new QSystemTrayIcon(_window)), - _speechRecognizer(), _lastNackTime(usecTimestampNow()), _lastSendDownstreamAudioStats(usecTimestampNow()) { @@ -1444,10 +1443,6 @@ void Application::setLowVelocityFilter(bool lowVelocityFilter) { getSixenseManager()->setLowVelocityFilter(lowVelocityFilter); } -void Application::setSpeechRecognitionEnabled(bool enabled) { - _speechRecognizer.setEnabled(enabled); -} - void Application::doKillLocalVoxels() { _wantToKillLocalVoxels = true; } @@ -3664,7 +3659,7 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript scriptEngine->registerGlobalObject("Camera", cameraScriptable); connect(scriptEngine, SIGNAL(finished(const QString&)), cameraScriptable, SLOT(deleteLater())); - scriptEngine->registerGlobalObject("SpeechRecognizer", &_speechRecognizer); + scriptEngine->registerGlobalObject("SpeechRecognizer", Menu::getInstance()->getSpeechRecognizer()); ClipboardScriptingInterface* clipboardScriptable = new ClipboardScriptingInterface(); scriptEngine->registerGlobalObject("Clipboard", clipboardScriptable); diff --git a/interface/src/Application.h b/interface/src/Application.h index 2fc6822b81..a356b26725 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -53,7 +53,6 @@ #include "Menu.h" #include "MetavoxelSystem.h" #include "PacketHeaders.h" -#include "SpeechRecognizer.h" #include "Stars.h" #include "avatar/Avatar.h" #include "avatar/AvatarManager.h" @@ -325,8 +324,6 @@ public slots: void setRenderVoxels(bool renderVoxels); void setLowVelocityFilter(bool lowVelocityFilter); - bool getSpeechRecognitionEnabled() { return _speechRecognizer.getEnabled(); } - void setSpeechRecognitionEnabled(bool enabled); void doKillLocalVoxels(); void loadDialog(); void loadScriptURLDialog(); @@ -596,8 +593,6 @@ private: QSystemTrayIcon* _trayIcon; - SpeechRecognizer _speechRecognizer; - quint64 _lastNackTime; quint64 _lastSendDownstreamAudioStats; }; diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 4350aef288..bb9ed9a566 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -94,6 +94,9 @@ Menu::Menu() : _octreeStatsDialog(NULL), _lodToolsDialog(NULL), _userLocationsDialog(NULL), +#ifdef Q_OS_MAC + _speechRecognizer(), +#endif _maxVoxels(DEFAULT_MAX_VOXELS_PER_SYSTEM), _voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE), _oculusUIAngularSize(DEFAULT_OCULUS_UI_ANGULAR_SIZE), @@ -233,8 +236,12 @@ Menu::Menu() : QMenu* toolsMenu = addMenu("Tools"); addActionToQMenuAndActionHash(toolsMenu, MenuOption::MetavoxelEditor, 0, this, SLOT(showMetavoxelEditor())); addActionToQMenuAndActionHash(toolsMenu, MenuOption::ScriptEditor, Qt::ALT | Qt::Key_S, this, SLOT(showScriptEditor())); - addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ControlWithSpeech, Qt::CTRL | Qt::SHIFT | Qt::Key_C, true, - Application::getInstance(), SLOT(setSpeechRecognitionEnabled(bool))); + +#ifdef Q_OS_MAC + QAction* speechRecognizerAction = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ControlWithSpeech, + Qt::CTRL | Qt::SHIFT | Qt::Key_C, _speechRecognizer.getEnabled(), &_speechRecognizer, SLOT(setEnabled(bool))); + connect(&_speechRecognizer, SIGNAL(enabledUpdated(bool)), speechRecognizerAction, SLOT(setChecked(bool))); +#endif #ifdef HAVE_QXMPP _chatAction = addActionToQMenuAndActionHash(toolsMenu, @@ -653,7 +660,10 @@ void Menu::loadSettings(QSettings* settings) { _snapshotsLocation = settings->value("snapshotsLocation", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).toString(); setScriptsLocation(settings->value("scriptsLocation", QString()).toString()); - Application::getInstance()->setSpeechRecognitionEnabled(settings->value("speechRecognitionEnabled", false).toBool()); + +#ifdef Q_OS_MAC + _speechRecognizer.setEnabled(settings->value("speechRecognitionEnabled", false).toBool()); +#endif settings->beginGroup("View Frustum Offset Camera"); // in case settings is corrupt or missing loadSetting() will check for NaN @@ -702,7 +712,9 @@ void Menu::saveSettings(QSettings* settings) { settings->setValue("boundaryLevelAdjust", _boundaryLevelAdjust); settings->setValue("snapshotsLocation", _snapshotsLocation); settings->setValue("scriptsLocation", _scriptsLocation); - settings->setValue("speechRecognitionEnabled", Application::getInstance()->getSpeechRecognitionEnabled()); +#ifdef Q_OS_MAC + settings->setValue("speechRecognitionEnabled", _speechRecognizer.getEnabled()); +#endif settings->beginGroup("View Frustum Offset Camera"); settings->setValue("viewFrustumOffsetYaw", _viewFrustumOffset.yaw); settings->setValue("viewFrustumOffsetPitch", _viewFrustumOffset.pitch); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index ca58c72a88..9f43898214 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -22,6 +22,7 @@ #include #include #include +#include "SpeechRecognizer.h" #include "location/LocationManager.h" #include "ui/PreferencesDialog.h" @@ -137,6 +138,10 @@ public: void setBoundaryLevelAdjust(int boundaryLevelAdjust); int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; } +#ifdef Q_OS_MAC + SpeechRecognizer* getSpeechRecognizer() { return &_speechRecognizer; } +#endif + // User Tweakable PPS from Voxel Server int getMaxVoxelPacketsPerSecond() const { return _maxVoxelPacketsPerSecond; } void setMaxVoxelPacketsPerSecond(int maxVoxelPacketsPerSecond) { _maxVoxelPacketsPerSecond = maxVoxelPacketsPerSecond; } @@ -274,6 +279,9 @@ private: OctreeStatsDialog* _octreeStatsDialog; LodToolsDialog* _lodToolsDialog; UserLocationsDialog* _userLocationsDialog; +#ifdef Q_OS_MAC + SpeechRecognizer _speechRecognizer; +#endif int _maxVoxels; float _voxelSizeScale; float _oculusUIAngularSize;