main.qml Example File
configureButtons/main.qml
/****************************************************************************
**
** Copyright (C) 2015 BogDan Vatra <bogdan@kde.org>
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt Gamepad module
**
** $QT_BEGIN_LICENSE:LGPL3$
** 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 http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.2
import QtQuick.Window 2.0
import QtGamepad 1.0
ApplicationWindow {
visible : true
title : qsTr ("Configure gamepad" )
width : 400
height : 600
Component .onCompleted: {
if (Qt .platform .os === "android" )
visibility = Window .Maximized
}
property Button checkedButton : null
function pressButton (button)
{
if (checkedButton !== null && button !== checkedButton )
checkedButton .checked = false ;
checkedButton = button
}
Gamepad {
id : gamepad
deviceId : GamepadManager .connectedGamepads .length > 0 ? GamepadManager .connectedGamepads [0 ] : -1
onDeviceIdChanged : GamepadManager .setCancelConfigureButton (deviceId , GamepadManager .ButtonStart );
}
Connections {
target : GamepadManager
onButtonConfigured : pressButton (null )
onAxisConfigured : pressButton (null )
onConfigurationCanceled : pressButton (null )
}
Rectangle {
id : headerRectangle
anchors .top: parent .top
anchors .right: parent .right
anchors .left: parent .left
height : headerLayout .implicitHeight + 16
color : "white"
z : 1
ColumnLayout {
id : headerLayout
anchors .top: parent .top
anchors .right: parent .right
anchors .left: parent .left
anchors .margins: 8
Label {
text : qsTr ("Gamepad configuration Utility" )
font .pointSize: 16
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Connected gamepads" )
}
ComboBox {
Layout .fillWidth: true
model : GamepadManager .connectedGamepads
onCurrentIndexChanged : gamepad .deviceId [GamepadManager .connectedGamepads [currentIndex ]]
}
}
Label {
text : qsTr ("Start button cancel's current configuration" )
Layout .fillWidth: true
}
}
}
Flickable {
id : scrollArea
anchors .top: headerRectangle .bottom
anchors .right: parent .right
anchors .left: parent .left
anchors .bottom: parent .bottom
anchors .margins: 8
contentHeight : contentLayout .implicitHeight
ScrollIndicator .vertical: ScrollIndicator { }
ColumnLayout {
id : contentLayout
width : parent .width
ColumnLayout {
GroupBox {
title : qsTr ("Configure Gamepad Buttons" )
Layout .fillWidth: true
ColumnLayout {
anchors .fill: parent
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("ButtonA" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonA ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonA );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("ButtonB" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonB ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonB );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("ButtonX" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonX ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonX );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("ButtonY" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonY ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonY );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("ButtonStart" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonStart ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonStart );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("ButtonSelect" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonSelect ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonSelect );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button L1" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonL1 ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonL1 );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button R1" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonR1 ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonR1 );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button L2" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonL2 ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonL2 );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button R2" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonR2 ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonR2 );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button L3" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonL3 ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonL3 );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button R3" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonR3 ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonR3 );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button Up" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonUp ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonUp );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button Down" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .buttonDown ? qsTr ("DOWN" ) : qsTr ("UP" )
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonDown );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button Left" )
horizontalAlignment : Text .AlignRight
}
Label {
Layout .fillWidth: true
text : gamepad .buttonLeft ? qsTr ("DOWN" ) : qsTr ("UP" )
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonLeft );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button Right" )
horizontalAlignment : Text .AlignRight
}
Label {
Layout .fillWidth: true
text : gamepad .buttonRight ? qsTr ("DOWN" ) : qsTr ("UP" )
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonRight );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button Center" )
horizontalAlignment : Text .AlignRight
}
Label {
Layout .fillWidth: true
text : gamepad .buttonCenter ? qsTr ("DOWN" ) : qsTr ("UP" )
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonCenter );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("Button Guide" )
horizontalAlignment : Text .AlignRight
}
Label {
Layout .fillWidth: true
text : gamepad .buttonGuide ? qsTr ("DOWN" ) : qsTr ("UP" )
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureButton (gamepad .deviceId , GamepadManager .ButtonGuide );
}
}
}
}
}
GroupBox {
title : qsTr ("Gamepad Axies" )
Layout .fillWidth: true
ColumnLayout {
anchors .fill: parent
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("AxisLeftX" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .axisLeftX
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureAxis (gamepad .deviceId , GamepadManager .AxisLeftX );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("AxisLeftY" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .axisLeftY
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureAxis (gamepad .deviceId , GamepadManager .AxisLeftY );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("AxisRightX" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .axisRightX
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureAxis (gamepad .deviceId , GamepadManager .AxisRightX );
}
}
}
RowLayout {
Layout .fillWidth: true
Label {
text : qsTr ("AxisRightY" )
horizontalAlignment : Text .AlignRight
}
Label {
text : gamepad .axisRightY
Layout .fillWidth: true
horizontalAlignment : Text .AlignRight
}
Button {
text : qsTr ("Configure" )
checkable : true
enabled : !checked
onCheckedChanged : {
pressButton (this);
if (checked )
GamepadManager .configureAxis (gamepad .deviceId , GamepadManager .AxisRightY );
}
}
}
Item {
Layout .fillHeight: true
}
}
}
}
}
}
}