And synchronize visibility settings between Interface and users.js.
Showing the changes to interface/src/Menu.cpp (1 of 7 files). Show all
Unified · Split
| @@ -155,6 +155,30 @@ Menu::Menu() { · 154 unmodified lines | ||
| 155 | 155 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0, |
| 156 | 156 | qApp, SLOT(showEditFriendsDialog())); |
| 157 | 157 | |
| 158 | + QMenu* visibilityMenu = toolsMenu->addMenu("I Am Visible To"); | |
| 159 | + { | |
| 160 | + QActionGroup* visibilityGroup = new QActionGroup(toolsMenu); | |
| 161 | + auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>(); | |
| 162 | + | |
| 163 | + QAction* visibleToEveryone = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToEveryone, | |
| 164 | + 0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::All, | |
| 165 | + this, SLOT(setVisibility())); | |
| 166 | + visibilityGroup->addAction(visibleToEveryone); | |
| 167 | + | |
| 168 | + QAction* visibleToFriends = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToFriends, | |
| 169 | + 0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::Friends, | |
| 170 | + this, SLOT(setVisibility())); | |
| 171 | + visibilityGroup->addAction(visibleToFriends); | |
| 172 | + | |
| 173 | + QAction* visibleToNoOne = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToNoOne, | |
| 174 | + 0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::None, | |
| 175 | + this, SLOT(setVisibility())); | |
| 176 | + visibilityGroup->addAction(visibleToNoOne); | |
| 177 | + | |
| 178 | + connect(discoverabilityManager.data(), &DiscoverabilityManager::discoverabilityModeChanged, | |
| 179 | + this, &Menu::visibilityChanged); | |
| 180 | + } | |
| 181 | + | |
| 158 | 182 | addActionToQMenuAndActionHash(toolsMenu, |
| 159 | 183 | MenuOption::ToolWindow, |
| 160 | 184 | Qt::CTRL | Qt::ALT | Qt::Key_T, |
| @@ -954,3 +978,29 @@ bool Menu::menuItemExists(const QString& menu, const QString& menuitem) { · 793 unmodified lines | ||
| 954 | 978 | } |
| 955 | 979 | return false; |
| 956 | 980 | }; |
| 981 | + | |
| 982 | +void Menu::setVisibility() { | |
| 983 | + auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>(); | |
| 984 | + | |
| 985 | + if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToEveryone)) { | |
| 986 | + discoverabilityManager->setDiscoverabilityMode(Discoverability::All); | |
| 987 | + } else if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToFriends)) { | |
| 988 | + discoverabilityManager->setDiscoverabilityMode(Discoverability::Friends); | |
| 989 | + } else if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToNoOne)) { | |
| 990 | + discoverabilityManager->setDiscoverabilityMode(Discoverability::None); | |
| 991 | + } else { | |
| 992 | + qDebug() << "ERROR Menu::setVisibility() called with unrecognized value."; | |
| 993 | + } | |
| 994 | +} | |
| 995 | + | |
| 996 | +void Menu::visibilityChanged(Discoverability::Mode discoverabilityMode) { | |
| 997 | + if (discoverabilityMode == Discoverability::All) { | |
| 998 | + setIsOptionChecked(MenuOption::VisibleToEveryone, true); | |
| 999 | + } else if (discoverabilityMode == Discoverability::Friends) { | |
| 1000 | + setIsOptionChecked(MenuOption::VisibleToFriends, true); | |
| 1001 | + } else if (discoverabilityMode == Discoverability::None) { | |
| 1002 | + setIsOptionChecked(MenuOption::VisibleToNoOne, true); | |
| 1003 | + } else { | |
| 1004 | + qDebug() << "ERROR Menu::visibilityChanged() called with unrecognized value."; | |
| 1005 | + } | |
| 1006 | +} | |