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 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0, | 155 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0, |
| 156 | qApp, SLOT(showEditFriendsDialog())); | 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 | addActionToQMenuAndActionHash(toolsMenu, | 182 | addActionToQMenuAndActionHash(toolsMenu, |
| 159 | MenuOption::ToolWindow, | 183 | MenuOption::ToolWindow, |
| 160 | Qt::CTRL | Qt::ALT | Qt::Key_T, | 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 | return false; | 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 | } | ||