stateful hud toolbar buttons

This commit is contained in:
howard-stearns 2016-06-30 16:24:11 -07:00
parent 1f451269cd
commit ff55644fe8
10 changed files with 59 additions and 24 deletions

View file

@ -30,6 +30,7 @@ Window {
width: addressBarDialog.implicitWidth width: addressBarDialog.implicitWidth
height: addressBarDialog.implicitHeight height: addressBarDialog.implicitHeight
onShownChanged: addressBarDialog.observeShownChanged(shown);
Component.onCompleted: { Component.onCompleted: {
root.parentChanged.connect(center); root.parentChanged.connect(center);
center(); center();

View file

@ -18,6 +18,8 @@
DialogsManagerScriptingInterface::DialogsManagerScriptingInterface() { DialogsManagerScriptingInterface::DialogsManagerScriptingInterface() {
connect(DependencyManager::get<DialogsManager>().data(), &DialogsManager::addressBarToggled, connect(DependencyManager::get<DialogsManager>().data(), &DialogsManager::addressBarToggled,
this, &DialogsManagerScriptingInterface::addressBarToggled); this, &DialogsManagerScriptingInterface::addressBarToggled);
connect(DependencyManager::get<DialogsManager>().data(), &DialogsManager::addressBarShown,
this, &DialogsManagerScriptingInterface::addressBarShown);
} }
void DialogsManagerScriptingInterface::toggleAddressBar() { void DialogsManagerScriptingInterface::toggleAddressBar() {

View file

@ -24,6 +24,7 @@ public slots:
signals: signals:
void addressBarToggled(); void addressBarToggled();
void addressBarShown(bool visible);
}; };
#endif #endif

View file

@ -16,6 +16,7 @@
#include "DependencyManager.h" #include "DependencyManager.h"
#include "AddressManager.h" #include "AddressManager.h"
#include "DialogsManager.h"
HIFI_QML_DEF(AddressBarDialog) HIFI_QML_DEF(AddressBarDialog)
@ -74,3 +75,6 @@ void AddressBarDialog::displayAddressNotFoundMessage() {
OffscreenUi::critical("", "There is no address information for that user or place"); OffscreenUi::critical("", "There is no address information for that user or place");
} }
void AddressBarDialog::observeShownChanged(bool visible) {
DependencyManager::get<DialogsManager>()->emitAddressBarShown(visible);
}

View file

@ -38,6 +38,7 @@ protected:
Q_INVOKABLE void loadHome(); Q_INVOKABLE void loadHome();
Q_INVOKABLE void loadBack(); Q_INVOKABLE void loadBack();
Q_INVOKABLE void loadForward(); Q_INVOKABLE void loadForward();
Q_INVOKABLE void observeShownChanged(bool visible);
bool _backEnabled; bool _backEnabled;
bool _forwardEnabled; bool _forwardEnabled;

View file

@ -40,6 +40,7 @@ public:
QPointer<HMDToolsDialog> getHMDToolsDialog() const { return _hmdToolsDialog; } QPointer<HMDToolsDialog> getHMDToolsDialog() const { return _hmdToolsDialog; }
QPointer<LodToolsDialog> getLodToolsDialog() const { return _lodToolsDialog; } QPointer<LodToolsDialog> getLodToolsDialog() const { return _lodToolsDialog; }
QPointer<OctreeStatsDialog> getOctreeStatsDialog() const { return _octreeStatsDialog; } QPointer<OctreeStatsDialog> getOctreeStatsDialog() const { return _octreeStatsDialog; }
void emitAddressBarShown(bool visible) { emit addressBarShown(visible); }
public slots: public slots:
void toggleAddressBar(); void toggleAddressBar();
@ -60,6 +61,7 @@ public slots:
signals: signals:
void addressBarToggled(); void addressBarToggled();
void addressBarShown(bool visible);
private slots: private slots:
void hmdToolsClosed(); void hmdToolsClosed();

View file

@ -55,16 +55,20 @@ var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
var browseExamplesButton = toolBar.addButton({ var browseExamplesButton = toolBar.addButton({
imageURL: toolIconUrl + "examples-01.svg", imageURL: toolIconUrl + "examples-01.svg",
objectName: "examples", objectName: "examples",
yOffset: 50, buttonState: 1,
alpha: 0.9, alpha: 0.9
}); });
var browseExamplesButtonDown = false; function onExamplesWindowVisibilityChanged() {
browseExamplesButton.writeProperty('buttonState', examplesWindow.visible ? 0 : 1);
browseExamplesButton.clicked.connect(function(){ }
function onClick() {
toggleExamples(); toggleExamples();
}); }
browseExamplesButton.clicked.connect(onClick);
examplesWindow.visibleChanged.connect(onExamplesWindowVisibilityChanged);
Script.scriptEnding.connect(function () { Script.scriptEnding.connect(function () {
browseExamplesButton.clicked.disconnect(); browseExamplesButton.clicked.disconnect(onClick);
examplesWindow.visibleChanged.disconnect(onExamplesWindowVisibilityChanged);
}); });

View file

@ -16,14 +16,20 @@ var button = toolBar.addButton({
objectName: "goto", objectName: "goto",
imageURL: Script.resolvePath("assets/images/tools/directory-01.svg"), imageURL: Script.resolvePath("assets/images/tools/directory-01.svg"),
visible: true, visible: true,
yOffset: 50, buttonState: 1,
alpha: 0.9, alpha: 0.9,
}); });
button.clicked.connect(function(){ function onAddressBarShown(visible) {
button.writeProperty('buttonState', visible ? 0 : 1);
}
function onClicked(){
DialogsManager.toggleAddressBar(); DialogsManager.toggleAddressBar();
}); }
button.clicked.connect(onClicked);
DialogsManager.addressBarShown.connect(onAddressBarShown);
Script.scriptEnding.connect(function () { Script.scriptEnding.connect(function () {
button.clicked.disconnect(); button.clicked.disconnect(onClicked);
DialogsManager.addressBarShown.disconnect(onAddressBarShown);
}); });

View file

@ -20,23 +20,28 @@ var desktopMenuItemName = "Desktop";
var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system"); var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
var button; var button;
function onHmdChanged(isHmd) {
button.writeProperty('buttonState', isHmd ? 0 : 1);
}
function onClicked(){
var isDesktop = Menu.isOptionChecked(desktopMenuItemName);
Menu.setIsOptionChecked(isDesktop ? headset : desktopMenuItemName, true);
}
if (headset) { if (headset) {
button = toolBar.addButton({ button = toolBar.addButton({
objectName: "hmdToggle", objectName: "hmdToggle",
imageURL: Script.resolvePath("assets/images/tools/hmd-switch-01.svg"), imageURL: Script.resolvePath("assets/images/tools/hmd-switch-01.svg"),
visible: true, visible: true,
yOffset: 50,
alpha: 0.9, alpha: 0.9,
}); });
onHmdChanged(HMD.active);
button.clicked.connect(function(){ button.clicked.connect(onClicked);
var isDesktop = Menu.isOptionChecked(desktopMenuItemName); HMD.displayModeChanged.connect(onHmdChanged);
Menu.setIsOptionChecked(isDesktop ? headset : desktopMenuItemName, true);
});
Script.scriptEnding.connect(function () { Script.scriptEnding.connect(function () {
button.clicked.disconnect(); button.clicked.disconnect(onClicked);
HMD.displayModeChanged.disconnect(onHmdChanged);
}); });
} }

View file

@ -14,16 +14,25 @@ var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
var button = toolBar.addButton({ var button = toolBar.addButton({
objectName: "mute", objectName: "mute",
imageURL: Script.resolvePath("assets/images/tools/microphone.svg"), imageURL: Script.resolvePath("assets/images/tools/mic-01.svg"),
visible: true, visible: true,
alpha: 0.9, alpha: 0.9,
}); });
button.clicked.connect(function(){ function onMuteToggled() {
// We could just toggle state, but we're less likely to get out of wack if we read the AudioDevice.
// muted => "on" button state => buttonState 1
button.writeProperty('buttonState', AudioDevice.getMuted() ? 1 : 0);
}
onMuteToggled();
function onClicked(){
var menuItem = "Mute Microphone"; var menuItem = "Mute Microphone";
Menu.setIsOptionChecked(menuItem, !Menu.isOptionChecked(menuItem)); Menu.setIsOptionChecked(menuItem, !Menu.isOptionChecked(menuItem));
}); }
button.clicked.connect(onClicked);
AudioDevice.muteToggled.connect(onMuteToggled);
Script.scriptEnding.connect(function () { Script.scriptEnding.connect(function () {
button.clicked.disconnect(); button.clicked.disconnect(onClicked);
AudioDevice.muteToggled.disconnect(onMuteToggled);
}); });