History

Add menu items that set visibility

And synchronize visibility settings between Interface and users.js.

David Rowe committed 11 years ago

Commit cbf20121 parent be69c0b7 files · +104 −32Browse files

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

Unified · Split

interface/src/Menu.cpp+50−0
@@ -155,6 +155,30 @@ Menu::Menu() { · 154 unmodified lines
155155 addActionToQMenuAndActionHash(toolsMenu, MenuOption::AddRemoveFriends, 0,
156156 qApp, SLOT(showEditFriendsDialog()));
157157
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+
158182 addActionToQMenuAndActionHash(toolsMenu,
159183 MenuOption::ToolWindow,
160184 Qt::CTRL | Qt::ALT | Qt::Key_T,
@@ -954,3 +978,29 @@ bool Menu::menuItemExists(const QString& menu, const QString& menuitem) { · 793 unmodified lines
954978 }
955979 return false;
956980 };
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+}