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
height: addressBarDialog.implicitHeight
onShownChanged: addressBarDialog.observeShownChanged(shown);
Component.onCompleted: {
root.parentChanged.connect(center);
center();

View file

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

View file

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

View file

@ -16,6 +16,7 @@
#include "DependencyManager.h"
#include "AddressManager.h"
#include "DialogsManager.h"
HIFI_QML_DEF(AddressBarDialog)
@ -74,3 +75,6 @@ void AddressBarDialog::displayAddressNotFoundMessage() {
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 loadBack();
Q_INVOKABLE void loadForward();
Q_INVOKABLE void observeShownChanged(bool visible);
bool _backEnabled;
bool _forwardEnabled;

View file

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

View file

@ -55,16 +55,20 @@ var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
var browseExamplesButton = toolBar.addButton({
imageURL: toolIconUrl + "examples-01.svg",
objectName: "examples",
yOffset: 50,
alpha: 0.9,
buttonState: 1,
alpha: 0.9
});
var browseExamplesButtonDown = false;
browseExamplesButton.clicked.connect(function(){
function onExamplesWindowVisibilityChanged() {
browseExamplesButton.writeProperty('buttonState', examplesWindow.visible ? 0 : 1);
}
function onClick() {
toggleExamples();
});
}
browseExamplesButton.clicked.connect(onClick);
examplesWindow.visibleChanged.connect(onExamplesWindowVisibilityChanged);
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",
imageURL: Script.resolvePath("assets/images/tools/directory-01.svg"),
visible: true,
yOffset: 50,
buttonState: 1,
alpha: 0.9,
});
button.clicked.connect(function(){
function onAddressBarShown(visible) {
button.writeProperty('buttonState', visible ? 0 : 1);
}
function onClicked(){
DialogsManager.toggleAddressBar();
});
}
button.clicked.connect(onClicked);
DialogsManager.addressBarShown.connect(onAddressBarShown);
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 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) {
button = toolBar.addButton({
objectName: "hmdToggle",
imageURL: Script.resolvePath("assets/images/tools/hmd-switch-01.svg"),
visible: true,
yOffset: 50,
alpha: 0.9,
});
onHmdChanged(HMD.active);
button.clicked.connect(function(){
var isDesktop = Menu.isOptionChecked(desktopMenuItemName);
Menu.setIsOptionChecked(isDesktop ? headset : desktopMenuItemName, true);
});
button.clicked.connect(onClicked);
HMD.displayModeChanged.connect(onHmdChanged);
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({
objectName: "mute",
imageURL: Script.resolvePath("assets/images/tools/microphone.svg"),
imageURL: Script.resolvePath("assets/images/tools/mic-01.svg"),
visible: true,
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";
Menu.setIsOptionChecked(menuItem, !Menu.isOptionChecked(menuItem));
});
}
button.clicked.connect(onClicked);
AudioDevice.muteToggled.connect(onMuteToggled);
Script.scriptEnding.connect(function () {
button.clicked.disconnect();
button.clicked.disconnect(onClicked);
AudioDevice.muteToggled.disconnect(onMuteToggled);
});