mirror of
https://github.com/overte-org/overte.git
synced 2025-04-27 06:56:29 +02:00
113 lines
3.5 KiB
QML
113 lines
3.5 KiB
QML
//
|
|
// VrMenuItem.qml
|
|
//
|
|
// Created by Bradley Austin Davis on 29 Apr 2015
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
import QtQuick 2.5
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Controls.Styles 1.4
|
|
|
|
import "../controls-uit"
|
|
import "../styles-uit"
|
|
|
|
Item {
|
|
id: root
|
|
HifiConstants { id: hifi }
|
|
property alias text: label.text
|
|
property var source
|
|
|
|
implicitHeight: source.visible ? 2 * label.implicitHeight : 0
|
|
implicitWidth: 2 * hifi.dimensions.menuPadding.x + check.width + label.width + tail.width
|
|
visible: source.visible
|
|
width: parent.width
|
|
|
|
CheckBox {
|
|
id: check
|
|
// FIXME: Should use radio buttons if source.exclusiveGroup.
|
|
anchors {
|
|
left: parent.left
|
|
leftMargin: hifi.dimensions.menuPadding.x
|
|
top: label.top
|
|
topMargin: 0
|
|
}
|
|
width: 20
|
|
visible: source.visible && source.type === 1 && source.checkable
|
|
checked: setChecked()
|
|
function setChecked() {
|
|
if (!source || source.type !== 1 || !source.checkable) {
|
|
return false;
|
|
}
|
|
// FIXME this works for native QML menus but I don't think it will
|
|
// for proxied QML menus
|
|
return source.checked;
|
|
}
|
|
}
|
|
|
|
RalewaySemiBold {
|
|
id: label
|
|
size: hifi.fontSizes.rootMenu
|
|
font.capitalization: isSubMenu ? Font.MixedCase : Font.AllUppercase
|
|
anchors.left: check.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
color: source.enabled ? hifi.colors.baseGrayShadow : hifi.colors.baseGrayShadow50
|
|
enabled: source.visible && (source.type !== 0 ? source.enabled : false)
|
|
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 {
|
|
id: tail
|
|
width: 48 + (shortcut.visible ? shortcut.width : 0)
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
right: parent.right
|
|
rightMargin: hifi.dimensions.menuPadding.x
|
|
}
|
|
|
|
RalewayLight {
|
|
id: shortcut
|
|
text: source.shortcut ? source.shortcut : ""
|
|
size: hifi.fontSizes.shortcutText
|
|
color: hifi.colors.baseGrayShadow
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: 15
|
|
visible: source.visible && text != ""
|
|
}
|
|
|
|
HiFiGlyphs {
|
|
text: hifi.glyphs.disclosureExpand
|
|
color: source.enabled ? hifi.colors.baseGrayShadow : hifi.colors.baseGrayShadow25
|
|
size: 2 * hifi.fontSizes.rootMenuDisclosure
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
horizontalAlignment: Text.AlignRight
|
|
visible: source.visible && (source.type === 2)
|
|
}
|
|
}
|
|
}
|