History

Merge pull request #4565 from ctrlaltdavid/20422

CR for #20422 - Add the ability to manage friends via Interface

Brad Davis committed 11 years ago

Commit 605cf192 parents c7540af 349cc3211 files · +198 −50Browse files

Showing the changes to interface/src/Menu.cpp (1 of 11 files). Show all

Unified · Split

interface/src/Menu.cpp+52−0
@@ -152,6 +152,32 @@ Menu::Menu() { · 151 unmodified lines
152152
153153 addActionToQMenuAndActionHash(toolsMenu, MenuOption::Chat, Qt::Key_Backslash,
154154 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+ }
155181
156182 addActionToQMenuAndActionHash(toolsMenu,
157183 MenuOption::ToolWindow,
@@ -950,3 +976,29 @@ bool Menu::menuItemExists(const QString& menu, const QString& menuitem) { · 792 unmodified lines
950976 }
951977 return false;
952978 };
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+}