blob: 89efc9833c092de7e59710fe63f96ca612d7c0f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
import QtQuick 2.0
Item {
id: menu
property int gap: 0
property int button: 0
property alias orientation: menuView.orientation
property alias count: menuModel.count
property int itemHeight //to create menu just set menu item height and width, do not set menu's height and width explicitly
property int itemWidth
// height: (menuView.orientation == ListView.Horizontal)? itemHeight : itemHeight * count
width: (menuView.orientation == ListView.Horizontal)? itemWidth * count : itemWidth
signal clicked
function setModel(objects)
{
for (var i=0; i< objects.length; i++){
menuModel.append({"label": objects[i], "enabledItem" : true})
}
height = (menuView.orientation == ListView.Horizontal)? itemHeight : itemHeight * count
}
function disableItem(index){
menuModel.set(index, {"enabledItem": false})
}
function enableItem(index){
menuModel.set(index, {"enabledItem": true})
}
ListModel {
id: menuModel
}
Component{
id: menuItemDelegate
Item {
height: itemHeight
width: itemWidth
BorderImage {
id: menuItemImage;
source: "../resources/menuItem.sci";
height: parent.height + 14;
width: parent.width
y: -7
}
Text {
id: menuItemText
text: label;
elide: Text.ElideLeft
font.bold: true;
color: "white"
style: Text.Raised;
styleColor: "dimgrey"
anchors.verticalCenter: parent.verticalCenter
Component.onCompleted: {
if (menuView.orientation == ListView.Horizontal){
anchors.horizontalCenter = parent.horizontalCenter
}
else {
anchors.left = parent.left
anchors.leftMargin = 10
}
}
}
MouseArea {
id: mouseRegion
anchors.fill: parent
hoverEnabled: true
enabled: enabledItem
onClicked: {
button = index
menu.clicked()
}
}
states: [
State {
name: "Pressed"
when: mouseRegion.pressed == true
PropertyChanges { target: menuItemImage; source: "../resources/menuItem_pressed.png"}
PropertyChanges { target: menuItemText; style: Text.Sunken }
},
State {
name: "Hovered"
when: mouseRegion.containsMouse == true
PropertyChanges { target: menuItemImage; source: "../resources/menuItem_hovered.png"}
},
State {
name: "Disabled"
when: mouseRegion.enabled == false
PropertyChanges { target: menuItemText; color: "grey"}
}
]
}
}
ListView {
id: menuView
anchors.fill: parent
model: menuModel
delegate: menuItemDelegate
spacing: gap
interactive: false
}
}
|