diff options
Diffstat (limited to 'examples/quick/keyinteraction/focus')
6 files changed, 67 insertions, 28 deletions
diff --git a/examples/quick/keyinteraction/focus/Core/ContextMenu.qml b/examples/quick/keyinteraction/focus/Core/ContextMenu.qml index c5430aa650..31b5e1b83d 100644 --- a/examples/quick/keyinteraction/focus/Core/ContextMenu.qml +++ b/examples/quick/keyinteraction/focus/Core/ContextMenu.qml @@ -52,6 +52,7 @@ import QtQuick 2.1 FocusScope { id: container + required property Item keyRightTarget property bool open: false @@ -62,7 +63,7 @@ FocusScope { anchors.fill: parent color: "#D1DBBD" focus: true - Keys.onRightPressed: mainView.focus = true + Keys.onRightPressed: container.keyRightTarget.focus = true Text { anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; margins: 30 } diff --git a/examples/quick/keyinteraction/focus/Core/GridMenu.qml b/examples/quick/keyinteraction/focus/Core/GridMenu.qml index 3f62adc792..78d6654957 100644 --- a/examples/quick/keyinteraction/focus/Core/GridMenu.qml +++ b/examples/quick/keyinteraction/focus/Core/GridMenu.qml @@ -51,12 +51,11 @@ import QtQuick 2.1 FocusScope { + id: menu property alias interactive: gridView.interactive - - onActiveFocusChanged: { - if (activeFocus) - mainView.state = "showGridViews" - } + required property Item keyUpTarget + required property Item keyDownTarget + required property Item keyLeftTarget Rectangle { anchors.fill: parent @@ -73,13 +72,15 @@ FocusScope { focus: true model: 12 - KeyNavigation.up: tabMenu - KeyNavigation.down: listMenu - KeyNavigation.left: contextMenu + KeyNavigation.up: menu.keyUpTarget + KeyNavigation.down: menu.keyDownTarget + KeyNavigation.left: menu.keyLeftTarget delegate: Item { id: container - width: GridView.view.cellWidth; height: GridView.view.cellHeight + width: GridView.view.cellWidth + height: GridView.view.cellHeight + required property int index Rectangle { id: content @@ -97,7 +98,7 @@ FocusScope { hoverEnabled: true onClicked: { - container.GridView.view.currentIndex = index + container.GridView.view.currentIndex = container.index container.forceActiveFocus() } } diff --git a/examples/quick/keyinteraction/focus/Core/ListMenu.qml b/examples/quick/keyinteraction/focus/Core/ListMenu.qml index d8e9daba78..694ae3cac6 100644 --- a/examples/quick/keyinteraction/focus/Core/ListMenu.qml +++ b/examples/quick/keyinteraction/focus/Core/ListMenu.qml @@ -48,21 +48,22 @@ ** ****************************************************************************/ +import QtQml 2.1 import QtQuick 2.1 FocusScope { + id: menu clip: true - - onActiveFocusChanged: { - if (activeFocus) - mainView.state = "showListViews" - } + required property Item keyUpTarget + required property Item keyLeftTarget ListView { id: list1 y: activeFocus ? 10 : 40; width: parent.width / 3; height: parent.height - 20 focus: true - KeyNavigation.up: gridMenu; KeyNavigation.left: contextMenu; KeyNavigation.right: list2 + KeyNavigation.up: menu.keyUpTarget + KeyNavigation.left: menu.keyLeftTarget + KeyNavigation.right: list2 model: 10; cacheBuffer: 200 delegate: ListViewDelegate {} @@ -74,7 +75,9 @@ FocusScope { ListView { id: list2 y: activeFocus ? 10 : 40; x: parseInt(parent.width / 3); width: parent.width / 3; height: parent.height - 20 - KeyNavigation.up: gridMenu; KeyNavigation.left: list1; KeyNavigation.right: list3 + KeyNavigation.up: menu.keyUpTarget + KeyNavigation.left: list1 + KeyNavigation.right: list3 model: 10; cacheBuffer: 200 delegate: ListViewDelegate {} @@ -86,7 +89,8 @@ FocusScope { ListView { id: list3 y: activeFocus ? 10 : 40; x: parseInt(2 * parent.width / 3); width: parent.width / 3; height: parent.height - 20 - KeyNavigation.up: gridMenu; KeyNavigation.left: list2 + KeyNavigation.up: menu.keyUpTarget + KeyNavigation.left: list2 model: 10; cacheBuffer: 200 delegate: ListViewDelegate {} diff --git a/examples/quick/keyinteraction/focus/Core/ListViewDelegate.qml b/examples/quick/keyinteraction/focus/Core/ListViewDelegate.qml index b1dde9ddc5..5a2957eab0 100644 --- a/examples/quick/keyinteraction/focus/Core/ListViewDelegate.qml +++ b/examples/quick/keyinteraction/focus/Core/ListViewDelegate.qml @@ -52,6 +52,8 @@ import QtQuick 2.1 Item { id: container + required property int index + width: ListView.view.width; height: 60; anchors.leftMargin: 10; anchors.rightMargin: 10 Rectangle { @@ -67,7 +69,7 @@ Item { Text { id: label anchors.centerIn: content - text: "List element " + (index + 1) + text: "List element " + (container.index + 1) color: "#193441" font.pixelSize: 14 } @@ -78,7 +80,7 @@ Item { hoverEnabled: true onClicked: { - container.ListView.view.currentIndex = index + container.ListView.view.currentIndex = container.index container.forceActiveFocus() } } diff --git a/examples/quick/keyinteraction/focus/Core/TabMenu.qml b/examples/quick/keyinteraction/focus/Core/TabMenu.qml index a40e070b2c..11b3d005c3 100644 --- a/examples/quick/keyinteraction/focus/Core/TabMenu.qml +++ b/examples/quick/keyinteraction/focus/Core/TabMenu.qml @@ -51,10 +51,9 @@ import QtQuick 2.1 FocusScope { - onActiveFocusChanged: { - if (activeFocus) - mainView.state = "showTabViews" - } + id: menu + required property Item keyUpTarget + required property Item keyDownTarget Rectangle { anchors.fill: parent @@ -76,8 +75,8 @@ FocusScope { activeFocusOnTab: true focus: true - KeyNavigation.up: listMenu - KeyNavigation.down: gridMenu + KeyNavigation.up: menu.keyUpTarget + KeyNavigation.down: menu.keyDownTarget Rectangle { id: content diff --git a/examples/quick/keyinteraction/focus/focus.qml b/examples/quick/keyinteraction/focus/focus.qml index e07df57697..9db9ab48bc 100644 --- a/examples/quick/keyinteraction/focus/focus.qml +++ b/examples/quick/keyinteraction/focus/focus.qml @@ -48,6 +48,7 @@ ** ****************************************************************************/ +import QtQml 2.1 import QtQuick 2.1 import "Core" @@ -67,20 +68,45 @@ Rectangle { id: tabMenu y: 160; width: parent.width; height: 160 + keyUpTarget: listMenu + keyDownTarget: gridMenu + focus: true activeFocusOnTab: true + + onActiveFocusChanged: { + if (activeFocus) + mainView.state = "showTabViews" + } } GridMenu { id: gridMenu y: 320; width: parent.width; height: 320 activeFocusOnTab: true + + keyUpTarget: tabMenu + keyDownTarget: listMenu + keyLeftTarget: contextMenu + + onActiveFocusChanged: { + if (activeFocus) + mainView.state = "showGridViews" + } } ListMenu { id: listMenu y: 640; width: parent.width; height: 320 activeFocusOnTab: true + + keyUpTarget: gridMenu + keyLeftTarget: contextMenu + + onActiveFocusChanged: { + if (activeFocus) + mainView.state = "showListViews" + } } Rectangle { @@ -129,7 +155,13 @@ Rectangle { } } - ContextMenu { id: contextMenu; x: -265; width: 260; height: parent.height } + ContextMenu { + keyRightTarget: mainView + id: contextMenu + x: -265 + width: 260 + height: parent.height + } states: State { name: "contextMenuOpen" |