From ecf67282d5b43ae43473e9b6736625867c5badfe Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 12 Mar 2016 12:29:52 +1300 Subject: [PATCH] Add separators to HMD menus --- interface/resources/qml/menus/VrMenuItem.qml | 22 ++++++++++++++++++- .../qml/styles-uit/HifiConstants.qml | 1 + libraries/ui/src/VrMenu.cpp | 14 ++++++++++++ libraries/ui/src/VrMenu.h | 1 + libraries/ui/src/ui/Menu.cpp | 6 ++++- 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/menus/VrMenuItem.qml b/interface/resources/qml/menus/VrMenuItem.qml index 636728c890..5854a75ef5 100644 --- a/interface/resources/qml/menus/VrMenuItem.qml +++ b/interface/resources/qml/menus/VrMenuItem.qml @@ -28,7 +28,7 @@ Item { CheckBox { id: check - // FIXME: Shouild use radio buttons if source.exclusiveGroup. + // FIXME: Should use radio buttons if source.exclusiveGroup. anchors { left: parent.left leftMargin: hifi.dimensions.menuPadding.x @@ -60,6 +60,26 @@ Item { visible: source.visible } + Item { + id: separator + anchors { + fill: parent + leftMargin: hifi.dimensions.menuPadding.x + check.width + rightMargin: hifi.dimensions.menuPadding.x + tail.width + } + visible: source.type === MenuItemType.Separator + + Rectangle { + anchors { + left: parent.left + right: parent.right + verticalCenter: parent.verticalCenter + } + height: 1 + color: hifi.colors.lightGray50 + } + } + Item { // Space for shortcut key or disclosure icon. id: tail diff --git a/interface/resources/qml/styles-uit/HifiConstants.qml b/interface/resources/qml/styles-uit/HifiConstants.qml index 718c1e32cb..2a1053c2b6 100644 --- a/interface/resources/qml/styles-uit/HifiConstants.qml +++ b/interface/resources/qml/styles-uit/HifiConstants.qml @@ -71,6 +71,7 @@ Item { readonly property color baseGrayShadow25: "#40252525" readonly property color baseGrayHighlight40: "#66575757" readonly property color baseGrayHighlight15: "#26575757" + readonly property color lightGray50: "#806a6a6a" readonly property color lightGrayText80: "#ccafafaf" readonly property color faintGray80: "#cce3e3e3" readonly property color faintGray50: "#80e3e3e3" diff --git a/libraries/ui/src/VrMenu.cpp b/libraries/ui/src/VrMenu.cpp index 76acf5d18a..41768a5349 100644 --- a/libraries/ui/src/VrMenu.cpp +++ b/libraries/ui/src/VrMenu.cpp @@ -190,6 +190,20 @@ void VrMenu::addAction(QMenu* menu, QAction* action) { bindActionToQmlAction(result, action); } +void VrMenu::addSeparator(QMenu* menu) { + Q_ASSERT(MenuUserData::forObject(menu)); + MenuUserData* userData = MenuUserData::forObject(menu); + if (!userData) { + return; + } + QObject* menuQml = findMenuObject(userData->uuid.toString()); + Q_ASSERT(menuQml); + + bool invokeResult = QMetaObject::invokeMethod(menuQml, "addSeparator", Qt::DirectConnection); + Q_ASSERT(invokeResult); + Q_UNUSED(invokeResult); // FIXME - apparently we haven't upgraded the Qt on our unix Jenkins environments to 5.5.x +} + void VrMenu::insertAction(QAction* before, QAction* action) { QObject* beforeQml{ nullptr }; { diff --git a/libraries/ui/src/VrMenu.h b/libraries/ui/src/VrMenu.h index b092b63566..d03887821f 100644 --- a/libraries/ui/src/VrMenu.h +++ b/libraries/ui/src/VrMenu.h @@ -28,6 +28,7 @@ public: VrMenu(QObject* parent = nullptr); void addMenu(QMenu* menu); void addAction(QMenu* parent, QAction* action); + void addSeparator(QMenu* parent); void insertAction(QAction* before, QAction* action); void removeAction(QAction* action); diff --git a/libraries/ui/src/ui/Menu.cpp b/libraries/ui/src/ui/Menu.cpp index 1b70213876..a5d801869d 100644 --- a/libraries/ui/src/ui/Menu.cpp +++ b/libraries/ui/src/ui/Menu.cpp @@ -511,7 +511,11 @@ void MenuWrapper::setEnabled(bool enabled) { } QAction* MenuWrapper::addSeparator() { - return _realMenu->addSeparator(); + QAction* action = _realMenu->addSeparator(); + VrMenu::executeOrQueue([=](VrMenu* vrMenu) { + vrMenu->addSeparator(_realMenu); + }); + return action; } void MenuWrapper::addAction(QAction* action) {