OptionList.qml
2.7 KB
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
/* Webcamoid, webcam capture application.
* Copyright (C) 2015 Gonzalo Exequiel Pedone
*
* Webcamoid is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Webcamoid is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
*
* Web-Site: http://webcamoid.github.io/
*/
import QtQuick
import QtQuick.Controls
Container {
id: container
implicitWidth: contentItem.childrenRect.width
implicitHeight: contentItem.childrenRect.height
focusPolicy: Qt.StrongFocus
clip: true
Accessible.name: currentItem? currentItem.text: ""
Accessible.role: Accessible.MenuBar
property bool enableHighlight: true
function setupChildrens() {
for (var i in contentChildren) {
contentChildren[i].parent = container
if (enableHighlight && contentChildren[i].highlighted != null)
contentChildren[i].highlighted = i == currentIndex
contentChildren[i].width = container.width
if (contentChildren[i].onClicked != null)
contentChildren[i].onClicked.connect((i => () => setCurrentIndex(i))(i))
onCurrentIndexChanged.connect((i => function () {
let item = itemAt(i)
if (enableHighlight && item && item.highlighted != null)
item.highlighted = i == currentIndex
})(i))
container.onWidthChanged.connect((i => function () {
var obj = itemAt(i)
if (obj)
obj.width = container.width
})(i))
}
}
Keys.onUpPressed: {
if (currentIndex <= 0)
setCurrentIndex(count - 1)
else
decrementCurrentIndex()
}
Keys.onDownPressed: {
if (currentIndex >= count - 1)
setCurrentIndex(0)
else
incrementCurrentIndex()
}
Component.onCompleted: setupChildrens()
onContentChildrenChanged: setupChildrens()
onCurrentItemChanged:
if (currentItem)
currentItem.forceActiveFocus()
contentItem: ListView {
id: optionList
model: container.contentModel
snapMode: ListView.SnapOneItem
currentIndex: container.currentIndex
}
}