mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 09:57:26 +02:00
Add menu items that set visibility
And synchronize visibility settings between Interface and users.js.
This commit is contained in:
parent
be69c0b58f
commit
cbf2012bf5
7 changed files with 106 additions and 34 deletions
|
@ -68,8 +68,6 @@ var usersWindow = (function () {
|
||||||
|
|
||||||
myVisibility,
|
myVisibility,
|
||||||
VISIBILITY_VALUES = ["all", "friends", "none"],
|
VISIBILITY_VALUES = ["all", "friends", "none"],
|
||||||
visibilityInterval,
|
|
||||||
VISIBILITY_POLL_INTERVAL = 5000, // ms = 5s
|
|
||||||
|
|
||||||
MENU_NAME = "Tools",
|
MENU_NAME = "Tools",
|
||||||
MENU_ITEM = "Users Online",
|
MENU_ITEM = "Users Online",
|
||||||
|
@ -298,15 +296,6 @@ var usersWindow = (function () {
|
||||||
usersTimer = Script.setTimeout(pollUsers, HTTP_GET_TIMEOUT); // Try again after a longer delay.
|
usersTimer = Script.setTimeout(pollUsers, HTTP_GET_TIMEOUT); // Try again after a longer delay.
|
||||||
};
|
};
|
||||||
|
|
||||||
function pollVisibility() {
|
|
||||||
var currentVisibility = myVisibility;
|
|
||||||
|
|
||||||
myVisibility = GlobalServices.findableBy;
|
|
||||||
if (myVisibility !== currentVisibility) {
|
|
||||||
updateVisibilityControls();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setVisible(visible) {
|
function setVisible(visible) {
|
||||||
var i;
|
var i;
|
||||||
|
|
||||||
|
@ -339,6 +328,16 @@ var usersWindow = (function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onFindableByChanged(event) {
|
||||||
|
var i;
|
||||||
|
|
||||||
|
for (i = 0; i < visibilityControls2D.length; i += 1) {
|
||||||
|
visibilityControls2D[i].selected = event === VISIBILITY_VALUES[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
updateVisibilityControls();
|
||||||
|
}
|
||||||
|
|
||||||
function onMousePressEvent(event) {
|
function onMousePressEvent(event) {
|
||||||
var clickedOverlay,
|
var clickedOverlay,
|
||||||
numLinesBefore,
|
numLinesBefore,
|
||||||
|
@ -349,7 +348,6 @@ var usersWindow = (function () {
|
||||||
lineClicked,
|
lineClicked,
|
||||||
userClicked,
|
userClicked,
|
||||||
i,
|
i,
|
||||||
visibilityChanged,
|
|
||||||
delta;
|
delta;
|
||||||
|
|
||||||
if (!isVisible) {
|
if (!isVisible) {
|
||||||
|
@ -381,21 +379,12 @@ var usersWindow = (function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
visibilityChanged = false;
|
|
||||||
for (i = 0; i < visibilityControls2D.length; i += 1) {
|
for (i = 0; i < visibilityControls2D.length; i += 1) {
|
||||||
// Don't need to test radioOverlay if it us under textOverlay.
|
// Don't need to test radioOverlay if it us under textOverlay.
|
||||||
if (clickedOverlay === visibilityControls2D[i].textOverlay && event.x <= visibilityControls2D[i].optionWidth) {
|
if (clickedOverlay === visibilityControls2D[i].textOverlay && event.x <= visibilityControls2D[i].optionWidth) {
|
||||||
GlobalServices.findableBy = VISIBILITY_VALUES[i];
|
GlobalServices.findableBy = VISIBILITY_VALUES[i];
|
||||||
visibilityChanged = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (visibilityChanged) {
|
|
||||||
for (i = 0; i < visibilityControls2D.length; i += 1) {
|
|
||||||
// Don't need to handle radioOverlay if it us under textOverlay.
|
|
||||||
visibilityControls2D[i].selected = clickedOverlay === visibilityControls2D[i].textOverlay;
|
|
||||||
}
|
|
||||||
updateVisibilityControls();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clickedOverlay === scrollbarBar2D) {
|
if (clickedOverlay === scrollbarBar2D) {
|
||||||
scrollbarBarClickedAt = (event.y - scrollbarBarPosition.y) / scrollbarBarHeight;
|
scrollbarBarClickedAt = (event.y - scrollbarBarPosition.y) / scrollbarBarHeight;
|
||||||
|
@ -651,9 +640,9 @@ var usersWindow = (function () {
|
||||||
});
|
});
|
||||||
Menu.menuItemEvent.connect(onMenuItemEvent);
|
Menu.menuItemEvent.connect(onMenuItemEvent);
|
||||||
|
|
||||||
Script.update.connect(onScriptUpdate);
|
GlobalServices.findableByChanged.connect(onFindableByChanged);
|
||||||
|
|
||||||
visibilityInterval = Script.setInterval(pollVisibility, VISIBILITY_POLL_INTERVAL);
|
Script.update.connect(onScriptUpdate);
|
||||||
|
|
||||||
pollUsers();
|
pollUsers();
|
||||||
|
|
||||||
|
@ -664,7 +653,6 @@ var usersWindow = (function () {
|
||||||
|
|
||||||
Menu.removeMenuItem(MENU_NAME, MENU_ITEM);
|
Menu.removeMenuItem(MENU_NAME, MENU_ITEM);
|
||||||
|
|
||||||
Script.clearInterval(visibilityInterval);
|
|
||||||
Script.clearTimeout(usersTimer);
|
Script.clearTimeout(usersTimer);
|
||||||
Overlays.deleteOverlay(windowPane2D);
|
Overlays.deleteOverlay(windowPane2D);
|
||||||
Overlays.deleteOverlay(windowHeading2D);
|
Overlays.deleteOverlay(windowHeading2D);
|
||||||
|
|
|
@ -24,7 +24,7 @@ const Discoverability::Mode DEFAULT_DISCOVERABILITY_MODE = Discoverability::All;
|
||||||
DiscoverabilityManager::DiscoverabilityManager() :
|
DiscoverabilityManager::DiscoverabilityManager() :
|
||||||
_mode("discoverabilityMode", DEFAULT_DISCOVERABILITY_MODE)
|
_mode("discoverabilityMode", DEFAULT_DISCOVERABILITY_MODE)
|
||||||
{
|
{
|
||||||
|
qRegisterMetaType<Discoverability::Mode>("Discoverability::Mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString API_USER_LOCATION_PATH = "/api/v1/user/location";
|
const QString API_USER_LOCATION_PATH = "/api/v1/user/location";
|
||||||
|
@ -93,5 +93,7 @@ void DiscoverabilityManager::setDiscoverabilityMode(Discoverability::Mode discov
|
||||||
// if we just got set to no discoverability, make sure that we delete our location in DB
|
// if we just got set to no discoverability, make sure that we delete our location in DB
|
||||||
removeLocation();
|
removeLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emit discoverabilityModeChanged(discoverabilityMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -35,7 +35,10 @@ public slots:
|
||||||
|
|
||||||
Discoverability::Mode getDiscoverabilityMode() { return static_cast<Discoverability::Mode>(_mode.get()); }
|
Discoverability::Mode getDiscoverabilityMode() { return static_cast<Discoverability::Mode>(_mode.get()); }
|
||||||
void setDiscoverabilityMode(Discoverability::Mode discoverabilityMode);
|
void setDiscoverabilityMode(Discoverability::Mode discoverabilityMode);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void discoverabilityModeChanged(Discoverability::Mode discoverabilityMode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DiscoverabilityManager();
|
DiscoverabilityManager();
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,30 @@ Menu::Menu() {
|
||||||
addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0,
|
addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0,
|
||||||
qApp, SLOT(showEditFriendsDialog()));
|
qApp, SLOT(showEditFriendsDialog()));
|
||||||
|
|
||||||
|
QMenu* visibilityMenu = toolsMenu->addMenu("I Am Visible To");
|
||||||
|
{
|
||||||
|
QActionGroup* visibilityGroup = new QActionGroup(toolsMenu);
|
||||||
|
auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
|
||||||
|
|
||||||
|
QAction* visibleToEveryone = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToEveryone,
|
||||||
|
0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::All,
|
||||||
|
this, SLOT(setVisibility()));
|
||||||
|
visibilityGroup->addAction(visibleToEveryone);
|
||||||
|
|
||||||
|
QAction* visibleToFriends = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToFriends,
|
||||||
|
0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::Friends,
|
||||||
|
this, SLOT(setVisibility()));
|
||||||
|
visibilityGroup->addAction(visibleToFriends);
|
||||||
|
|
||||||
|
QAction* visibleToNoOne = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToNoOne,
|
||||||
|
0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::None,
|
||||||
|
this, SLOT(setVisibility()));
|
||||||
|
visibilityGroup->addAction(visibleToNoOne);
|
||||||
|
|
||||||
|
connect(discoverabilityManager.data(), &DiscoverabilityManager::discoverabilityModeChanged,
|
||||||
|
this, &Menu::visibilityChanged);
|
||||||
|
}
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(toolsMenu,
|
addActionToQMenuAndActionHash(toolsMenu,
|
||||||
MenuOption::ToolWindow,
|
MenuOption::ToolWindow,
|
||||||
Qt::CTRL | Qt::ALT | Qt::Key_T,
|
Qt::CTRL | Qt::ALT | Qt::Key_T,
|
||||||
|
@ -954,3 +978,29 @@ bool Menu::menuItemExists(const QString& menu, const QString& menuitem) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void Menu::setVisibility() {
|
||||||
|
auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
|
||||||
|
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToEveryone)) {
|
||||||
|
discoverabilityManager->setDiscoverabilityMode(Discoverability::All);
|
||||||
|
} else if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToFriends)) {
|
||||||
|
discoverabilityManager->setDiscoverabilityMode(Discoverability::Friends);
|
||||||
|
} else if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToNoOne)) {
|
||||||
|
discoverabilityManager->setDiscoverabilityMode(Discoverability::None);
|
||||||
|
} else {
|
||||||
|
qDebug() << "ERROR Menu::setVisibility() called with unrecognized value.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::visibilityChanged(Discoverability::Mode discoverabilityMode) {
|
||||||
|
if (discoverabilityMode == Discoverability::All) {
|
||||||
|
setIsOptionChecked(MenuOption::VisibleToEveryone, true);
|
||||||
|
} else if (discoverabilityMode == Discoverability::Friends) {
|
||||||
|
setIsOptionChecked(MenuOption::VisibleToFriends, true);
|
||||||
|
} else if (discoverabilityMode == Discoverability::None) {
|
||||||
|
setIsOptionChecked(MenuOption::VisibleToNoOne, true);
|
||||||
|
} else {
|
||||||
|
qDebug() << "ERROR Menu::visibilityChanged() called with unrecognized value.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
#include <MenuItemProperties.h>
|
#include <MenuItemProperties.h>
|
||||||
|
|
||||||
|
#include "DiscoverabilityManager.h"
|
||||||
|
|
||||||
class Settings;
|
class Settings;
|
||||||
|
|
||||||
class Menu : public QMenuBar {
|
class Menu : public QMenuBar {
|
||||||
|
@ -64,6 +66,9 @@ public slots:
|
||||||
bool isOptionChecked(const QString& menuOption) const;
|
bool isOptionChecked(const QString& menuOption) const;
|
||||||
void setIsOptionChecked(const QString& menuOption, bool isChecked);
|
void setIsOptionChecked(const QString& menuOption, bool isChecked);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void setVisibility();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static Menu* _instance;
|
static Menu* _instance;
|
||||||
Menu();
|
Menu();
|
||||||
|
@ -94,6 +99,7 @@ private:
|
||||||
int findPositionOfMenuItem(QMenu* menu, const QString& searchMenuItem);
|
int findPositionOfMenuItem(QMenu* menu, const QString& searchMenuItem);
|
||||||
int positionBeforeSeparatorIfNeeded(QMenu* menu, int requestedPosition);
|
int positionBeforeSeparatorIfNeeded(QMenu* menu, int requestedPosition);
|
||||||
|
|
||||||
|
void visibilityChanged(Discoverability::Mode discoverabilityMode);
|
||||||
|
|
||||||
QHash<QString, QAction*> _actionHash;
|
QHash<QString, QAction*> _actionHash;
|
||||||
};
|
};
|
||||||
|
@ -249,6 +255,9 @@ namespace MenuOption {
|
||||||
const QString TurnWithHead = "Turn using Head";
|
const QString TurnWithHead = "Turn using Head";
|
||||||
const QString PackageModel = "Package Model";
|
const QString PackageModel = "Package Model";
|
||||||
const QString Visage = "Visage";
|
const QString Visage = "Visage";
|
||||||
|
const QString VisibleToEveryone = "Everyone";
|
||||||
|
const QString VisibleToFriends = "Friends";
|
||||||
|
const QString VisibleToNoOne = "No one";
|
||||||
const QString Wireframe = "Wireframe";
|
const QString Wireframe = "Wireframe";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,10 @@ GlobalServicesScriptingInterface::GlobalServicesScriptingInterface() {
|
||||||
_downloading = false;
|
_downloading = false;
|
||||||
connect(Application::getInstance(), &Application::renderingInWorldInterface,
|
connect(Application::getInstance(), &Application::renderingInWorldInterface,
|
||||||
this, &GlobalServicesScriptingInterface::checkDownloadInfo);
|
this, &GlobalServicesScriptingInterface::checkDownloadInfo);
|
||||||
|
|
||||||
|
auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
|
||||||
|
connect(discoverabilityManager.data(), &DiscoverabilityManager::discoverabilityModeChanged,
|
||||||
|
this, &GlobalServicesScriptingInterface::discoverabilityModeChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalServicesScriptingInterface::~GlobalServicesScriptingInterface() {
|
GlobalServicesScriptingInterface::~GlobalServicesScriptingInterface() {
|
||||||
|
@ -45,16 +49,24 @@ void GlobalServicesScriptingInterface::loggedOut() {
|
||||||
emit GlobalServicesScriptingInterface::disconnected(QString("logout"));
|
emit GlobalServicesScriptingInterface::disconnected(QString("logout"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString GlobalServicesScriptingInterface::findableByString(Discoverability::Mode discoverabilityMode) const {
|
||||||
|
if (discoverabilityMode == Discoverability::None) {
|
||||||
|
return "none";
|
||||||
|
} else if (discoverabilityMode == Discoverability::Friends) {
|
||||||
|
return "friends";
|
||||||
|
} else if (discoverabilityMode == Discoverability::All) {
|
||||||
|
return "all";
|
||||||
|
} else {
|
||||||
|
qDebug() << "GlobalServices findableByString called with an unrecognized value.";
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString GlobalServicesScriptingInterface::getFindableBy() const {
|
QString GlobalServicesScriptingInterface::getFindableBy() const {
|
||||||
auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
|
auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
|
||||||
|
return findableByString(discoverabilityManager->getDiscoverabilityMode());
|
||||||
if (discoverabilityManager->getDiscoverabilityMode() == Discoverability::None) {
|
|
||||||
return "none";
|
|
||||||
} else if (discoverabilityManager->getDiscoverabilityMode() == Discoverability::Friends) {
|
|
||||||
return "friends";
|
|
||||||
} else {
|
|
||||||
return "all";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GlobalServicesScriptingInterface::setFindableBy(const QString& discoverabilityMode) {
|
void GlobalServicesScriptingInterface::setFindableBy(const QString& discoverabilityMode) {
|
||||||
|
@ -71,6 +83,10 @@ void GlobalServicesScriptingInterface::setFindableBy(const QString& discoverabil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GlobalServicesScriptingInterface::discoverabilityModeChanged(Discoverability::Mode discoverabilityMode) {
|
||||||
|
emit findableByChanged(findableByString(discoverabilityMode));
|
||||||
|
}
|
||||||
|
|
||||||
DownloadInfoResult::DownloadInfoResult() :
|
DownloadInfoResult::DownloadInfoResult() :
|
||||||
downloading(QList<float>()),
|
downloading(QList<float>()),
|
||||||
pending(0.0f)
|
pending(0.0f)
|
||||||
|
|
|
@ -53,17 +53,21 @@ private slots:
|
||||||
|
|
||||||
QString getFindableBy() const;
|
QString getFindableBy() const;
|
||||||
void setFindableBy(const QString& discoverabilityMode);
|
void setFindableBy(const QString& discoverabilityMode);
|
||||||
|
void discoverabilityModeChanged(Discoverability::Mode discoverabilityMode);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void connected();
|
void connected();
|
||||||
void disconnected(const QString& reason);
|
void disconnected(const QString& reason);
|
||||||
void myUsernameChanged(const QString& username);
|
void myUsernameChanged(const QString& username);
|
||||||
void downloadInfoChanged(DownloadInfoResult info);
|
void downloadInfoChanged(DownloadInfoResult info);
|
||||||
|
void findableByChanged(const QString& discoverabilityMode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GlobalServicesScriptingInterface();
|
GlobalServicesScriptingInterface();
|
||||||
~GlobalServicesScriptingInterface();
|
~GlobalServicesScriptingInterface();
|
||||||
|
|
||||||
|
QString findableByString(Discoverability::Mode discoverabilityMode) const;
|
||||||
|
|
||||||
bool _downloading;
|
bool _downloading;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue