mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-12 10:52:32 +02:00
stateful hud toolbar buttons
This commit is contained in:
parent
1f451269cd
commit
ff55644fe8
10 changed files with 59 additions and 24 deletions
|
@ -30,6 +30,7 @@ Window {
|
|||
width: addressBarDialog.implicitWidth
|
||||
height: addressBarDialog.implicitHeight
|
||||
|
||||
onShownChanged: addressBarDialog.observeShownChanged(shown);
|
||||
Component.onCompleted: {
|
||||
root.parentChanged.connect(center);
|
||||
center();
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -24,6 +24,7 @@ public slots:
|
|||
|
||||
signals:
|
||||
void addressBarToggled();
|
||||
void addressBarShown(bool visible);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue