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
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
982void 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
996void 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}