From 30b57b62da05ecda410206d3ebaadf0a325a9273 Mon Sep 17 00:00:00 2001
From: Dante Ruiz <dante@highfidelity.io>
Date: Thu, 19 Jan 2017 01:32:51 +0000
Subject: [PATCH] toggle help

---
 interface/src/scripting/MenuScriptingInterface.cpp |  4 ++++
 interface/src/scripting/MenuScriptingInterface.h   |  2 ++
 libraries/ui/src/ui/Menu.cpp                       |  5 +++++
 libraries/ui/src/ui/Menu.h                         |  2 ++
 scripts/system/help.js                             | 14 ++++++++++++--
 5 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/interface/src/scripting/MenuScriptingInterface.cpp b/interface/src/scripting/MenuScriptingInterface.cpp
index df75d331d6..06f0f4acb5 100644
--- a/interface/src/scripting/MenuScriptingInterface.cpp
+++ b/interface/src/scripting/MenuScriptingInterface.cpp
@@ -147,3 +147,7 @@ void MenuScriptingInterface::triggerOption(const QString& menuOption) {
     QMetaObject::invokeMethod(Menu::getInstance(), "triggerOption", Q_ARG(const QString&, menuOption));    
 }
 
+void MenuScriptingInterface::closeInfoView(const QString& path) {
+    QMetaObject::invokeMethod(Menu::getInstance(), "closeInfoView", Q_ARG(const QString&, path));
+}
+
diff --git a/interface/src/scripting/MenuScriptingInterface.h b/interface/src/scripting/MenuScriptingInterface.h
index b1c389f733..b1b4a75366 100644
--- a/interface/src/scripting/MenuScriptingInterface.h
+++ b/interface/src/scripting/MenuScriptingInterface.h
@@ -182,6 +182,8 @@ public slots:
      */
     void setMenuEnabled(const QString& menuName, bool isEnabled);
 
+    void closeInfoView(const QString& path);
+
 signals:
     /**jsdoc
      * This is a signal that is emitted when a menu item is clicked.
diff --git a/libraries/ui/src/ui/Menu.cpp b/libraries/ui/src/ui/Menu.cpp
index ba24adfc3f..364268830b 100644
--- a/libraries/ui/src/ui/Menu.cpp
+++ b/libraries/ui/src/ui/Menu.cpp
@@ -256,6 +256,11 @@ bool Menu::isOptionChecked(const QString& menuOption) const {
     return false;
 }
 
+void Menu::closeInfoView(const QString& path) {
+    auto offscreenUi = DependencyManager::get<OffscreenUi>();
+    offscreenUi->hide(path);
+}
+
 void Menu::triggerOption(const QString& menuOption) {
     QAction* action = _actionHash.value(menuOption);
     if (action) {
diff --git a/libraries/ui/src/ui/Menu.h b/libraries/ui/src/ui/Menu.h
index 2711fc5921..32e916816e 100644
--- a/libraries/ui/src/ui/Menu.h
+++ b/libraries/ui/src/ui/Menu.h
@@ -114,6 +114,8 @@ public slots:
 
     void toggleDeveloperMenus();
     void toggleAdvancedMenus();
+
+    void closeInfoView(const QString& path);
     
     void triggerOption(const QString& menuOption);
 
diff --git a/scripts/system/help.js b/scripts/system/help.js
index 23a162d767..1b6501c963 100644
--- a/scripts/system/help.js
+++ b/scripts/system/help.js
@@ -19,7 +19,7 @@
         icon: "icons/tablet-icons/help-i.svg",
         text: "HELP"
     });
-
+    var enabled = false;
     function onClicked() {
         var HELP_URL = Script.resourcesPath() + "html/help.html";
 
@@ -38,7 +38,17 @@
             defaultTab = "gamepad";
         }
         var queryParameters = "handControllerName=" + handControllerName + "&defaultTab=" + defaultTab;
-        Menu.triggerOption('Help...');
+        print("Help enabled " + Menu.isMenuEnabled("Help..."))
+
+        if (enabled) {
+            Menu.closeInfoView('InfoView_html/help.html');
+            enabled = !enabled;
+            button.editProperties({isActive: enabled});
+        } else {
+            Menu.triggerOption('Help...');
+            enabled = !enabled;
+            button.editProperties({isActive: enabled});
+        }
     }
 
     button.clicked.connect(onClicked);