diff options
Diffstat (limited to 'src/Runtime/ogl-runtime/tools/viewer/qml/StyledMenuItem.qml')
-rw-r--r-- | src/Runtime/ogl-runtime/tools/viewer/qml/StyledMenuItem.qml | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/src/Runtime/ogl-runtime/tools/viewer/qml/StyledMenuItem.qml b/src/Runtime/ogl-runtime/tools/viewer/qml/StyledMenuItem.qml new file mode 100644 index 00000000..79049a90 --- /dev/null +++ b/src/Runtime/ogl-runtime/tools/viewer/qml/StyledMenuItem.qml @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt 3D Studio. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.7 +import QtQuick.Controls 2.2 + +MenuItem { + id: control + + property alias shortcut: shortcut.sequence + property string shortcutText + property alias itemSpacerWidth: itemSpacer.width + property alias shortcutSpacerWidth: shortcutSpacer.width + property alias itemWidth: itemLabel.width + property alias shortcutWidth: shortcutLabel.width + property bool showArrow: false + property int arrowWidth: arrow.width + property int checkMarkWidth: checkMark.width + property bool showCheckMark: false + property Menu arrowMenu: null + + hoverEnabled: true + width: contentItem.width + leftPadding + rightPadding + height: contentItem.height + topPadding + bottomPadding + padding: 0 + leftPadding: 0 + rightPadding: 0 + + MouseArea { + anchors.fill: parent + onPressed: { + if (showArrow) { + if (!arrowMenu.visible) { + arrowMenuDelay.stop(); + arrowMenu.open(); + } + } else { + mouse.accepted = false; + } + } + } + + onHoveredChanged: { + if (showArrow) + arrowMenuDelay.start(); + } + + Timer { + id: arrowMenuDelay + interval: 500 + repeat: false + onTriggered: { + if (arrowMenu.visible) { + if (!control.hovered && !arrowMenu.hovered) + arrowMenu.close(); + } else { + if (control.hovered) + arrowMenu.open(); + } + } + } + + Shortcut { + id: shortcut + context: Qt.ApplicationShortcut + onActivated: control.triggered() + } + + contentItem: Row { + width: checkMark.width + itemLabel.width + itemSpacer.width + + shortcutLabel.width + shortcutSpacer.width + arrow.width + height: _controlBaseHeight + Item { + id: checkMark + width: 16 + height: _controlBaseHeight + Image { + anchors.fill: parent + visible: control.showCheckMark + fillMode: Image.Pad + source: "qrc:/images/check.png" + } + } + Label { + id: itemLabel + text: control.text + font.pixelSize: _fontSize + horizontalAlignment: Text.AlignLeft + color: control.enabled ? _textColor : _disabledColor + verticalAlignment: Text.AlignVCenter + clip: true + width: contentWidth + height: _controlBaseHeight + } + Item { + id: itemSpacer + width: _controlPadding + height: _controlBaseHeight + } + Label { + id: shortcutLabel + text: shortcut.nativeText === "" ? control.shortcutText : shortcut.nativeText + font.pixelSize: _fontSize + horizontalAlignment: Text.AlignLeft + color: control.enabled ? _textColor : _disabledColor + verticalAlignment: Text.AlignVCenter + clip: true + width: contentWidth + height: _controlBaseHeight + } + Item { + id: shortcutSpacer + width: 0 + height: _controlBaseHeight + } + Item { + id: arrow + width: 16 + height: _controlBaseHeight + Image { + anchors.fill: parent + visible: control.showArrow + fillMode: Image.Pad + source: "qrc:/images/arrow.png" + } + } + } + background: Rectangle { + width: control.width + height: control.height + color: control.hovered ? _menuSelectionColor : _menuBackgroundColor + } +} |