CR for #20422 - Add the ability to manage friends via Interface
Showing the changes to interface/src/Menu.cpp (1 of 11 files). Show all
Unified · Split
| @@ -152,6 +152,32 @@ Menu::Menu() { · 151 unmodified lines | |||
| 152 | 152 | ||
| 153 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::Chat, Qt::Key_Backslash, | 153 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::Chat, Qt::Key_Backslash, |
| 154 | dialogsManager.data(), SLOT(showIRCLink())); | 154 | dialogsManager.data(), SLOT(showIRCLink())); |
| 155 | addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0, | ||
| 156 | qApp, SLOT(showFriendsWindow())); | ||
| 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 | } | ||
| 155 | 181 | ||
| 156 | addActionToQMenuAndActionHash(toolsMenu, | 182 | addActionToQMenuAndActionHash(toolsMenu, |
| 157 | MenuOption::ToolWindow, | 183 | MenuOption::ToolWindow, |
| @@ -950,3 +976,29 @@ bool Menu::menuItemExists(const QString& menu, const QString& menuitem) { · 792 unmodified lines | |||
| 950 | } | 976 | } |
| 951 | return false; | 977 | return false; |
| 952 | }; | 978 | }; |
| 979 | |||
| 980 | void Menu::setVisibility() { | ||
| 981 | auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>(); | ||
| 982 | |||
| 983 | if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToEveryone)) { | ||
| 984 | discoverabilityManager->setDiscoverabilityMode(Discoverability::All); | ||
| 985 | } else if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToFriends)) { | ||
| 986 | discoverabilityManager->setDiscoverabilityMode(Discoverability::Friends); | ||
| 987 | } else if (Menu::getInstance()->isOptionChecked(MenuOption::VisibleToNoOne)) { | ||
| 988 | discoverabilityManager->setDiscoverabilityMode(Discoverability::None); | ||
| 989 | } else { | ||
| 990 | qDebug() << "ERROR Menu::setVisibility() called with unrecognized value."; | ||
| 991 | } | ||
| 992 | } | ||
| 993 | |||
| 994 | void Menu::visibilityChanged(Discoverability::Mode discoverabilityMode) { | ||
| 995 | if (discoverabilityMode == Discoverability::All) { | ||
| 996 | setIsOptionChecked(MenuOption::VisibleToEveryone, true); | ||
| 997 | } else if (discoverabilityMode == Discoverability::Friends) { | ||
| 998 | setIsOptionChecked(MenuOption::VisibleToFriends, true); | ||
| 999 | } else if (discoverabilityMode == Discoverability::None) { | ||
| 1000 | setIsOptionChecked(MenuOption::VisibleToNoOne, true); | ||
| 1001 | } else { | ||
| 1002 | qDebug() << "ERROR Menu::visibilityChanged() called with unrecognized value."; | ||
| 1003 | } | ||
| 1004 | } | ||