Files
OpenVR-AdvancedSettings-frame/src/res/qml/UtilitiesPage.qml
T
Vasily f5000a0ee0 Refactor Media Control Keys QML into smaller bits
The old QML was a giant mess of implementation details and logic.
Reducing the buttons to only 2 essential properties allows the
MediaControllerKeys object to be more easily understood.

Moving the MediaControllerKeys into its own QML file allows the
resulting page to be more easily understood and individual pieces
swapped in and out.

The current QML directory structure is non-existent, breaking parts down
into cohesive folders will allow for easier understanding of the bigger
picture.
2019-01-13 16:47:38 +01:00

384 lines
13 KiB
QML

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import matzman666.advsettings 1.0
import "media_keys"
MyStackViewPage {
headerText: "Utilities"
content: ColumnLayout {
spacing: 18
GroupBox {
id: keyboardGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Keyboard Utilities"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
MyText {
text: "Send to active application: "
}
RowLayout {
spacing: 18
MyPushButton {
text: "Keyboard Input"
Layout.preferredWidth: 200
onClicked: {
OverlayController.showKeyboard("", 601)
}
Connections {
target: OverlayController
onKeyBoardInputSignal: {
if (userValue == 601) {
UtilitiesTabController.sendKeyboardInput(input)
}
}
}
}
MyPushButton {
text: "Enter"
Layout.preferredWidth: 200
onClicked: {
UtilitiesTabController.sendKeyboardEnter()
}
}
MyPushButton {
text: "Alt-Tab"
Layout.preferredWidth: 200
onClicked: {
UtilitiesTabController.sendKeyboardAltTab()
}
}
MyPushButton {
text: "Backspace"
Layout.preferredWidth: 200
onClicked: {
UtilitiesTabController.sendKeyboardBackspace(1)
}
}
MyPushButton {
text: "10x Backspace"
Layout.preferredWidth: 200
onClicked: {
UtilitiesTabController.sendKeyboardBackspace(10)
}
}
}
}
}
GroupBox {
id: alarmGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Alarm Clock"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
RowLayout {
MyToggleButton {
id: alarmClockToggle
text: ""
onCheckedChanged: {
UtilitiesTabController.setAlarmEnabled(checked, false)
}
}
Item {
Layout.fillWidth: true
}
MyTextField {
id: alarmClockHourText
text: "00"
keyBoardUID: 602
Layout.preferredWidth: 50
horizontalAlignment: Text.AlignHCenter
function onInputEvent(input) {
var val = parseInt(input)
if (!isNaN(val)) {
if (val < 0) {
val = 0
} else if (val > 23) {
val = 23
}
UtilitiesTabController.setAlarmTimeHour(val, false)
}
setAlarmHourText(UtilitiesTabController.alarmTimeHour)
}
}
MyText {
text: ":"
}
MyTextField {
id: alarmClockMinuteText
text: "00"
keyBoardUID: 603
Layout.preferredWidth: 50
horizontalAlignment: Text.AlignHCenter
function onInputEvent(input) {
var val = parseInt(input)
if (!isNaN(val)) {
if (val < 0) {
val = 0
} else if (val > 59) {
val = 59
}
UtilitiesTabController.setAlarmTimeMinute(val, false)
}
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
}
}
Item {
Layout.fillWidth: true
}
MyPushButton2 {
Layout.preferredWidth: 200
text: "Current Time"
onClicked: {
UtilitiesTabController.setAlarmTimeToCurrentTime()
}
}
MyPushButton2 {
Layout.leftMargin: 50
Layout.preferredWidth: 120
text: "+1 Hour"
onClicked: {
UtilitiesTabController.modAlarmTimeHour(1)
}
}
MyPushButton2 {
Layout.preferredWidth: 120
text: "-1 Hour"
onClicked: {
UtilitiesTabController.modAlarmTimeHour(-1)
}
}
MyPushButton2 {
text: "+5 Min"
Layout.leftMargin: 50
Layout.preferredWidth: 120
onClicked: {
UtilitiesTabController.modAlarmTimeMinute(5)
}
}
MyPushButton2 {
Layout.preferredWidth: 120
text: "-5 Min"
onClicked: {
UtilitiesTabController.modAlarmTimeMinute(-5)
}
}
}
RowLayout {
MyToggleButton {
id: alarmDontAnnoyToggle
text: "Don't Annoy me"
onCheckedChanged: {
UtilitiesTabController.setAlarmIsModal(!checked, false)
}
}
}
}
}
GroupBox {
id: steamDesktopGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Steam Desktop Overlay Width"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
ColumnLayout {
RowLayout {
MyPushButton2 {
id: steamDesktopWidthMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
steamDesktopWidthSlider.value -= 1.0
}
}
MySlider {
id: steamDesktopWidthSlider
from: 0.1
to: 32.0
stepSize: 0.1
value: 1.0
Layout.fillWidth: true
onPositionChanged: {
var val = this.from + ( this.position * (this.to - this.from))
steamDesktopWidthText.text = val.toFixed(1)
}
onValueChanged: {
UtilitiesTabController.setSteamDesktopOverlayWidth(value, false)
steamDesktopWidthText.text = value.toFixed(1)
}
}
MyPushButton2 {
id: steamDesktopWidthPlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
steamDesktopWidthSlider.value += 1.0
}
}
MyTextField {
id: steamDesktopWidthText
text: "0.0"
keyBoardUID: 611
Layout.preferredWidth: 100
Layout.leftMargin: 10
horizontalAlignment: Text.AlignHCenter
function onInputEvent(input) {
var val = parseFloat(input)
if (!isNaN(val)) {
if (val < 0.1) {
val = 0.1
}
steamDesktopWidthSlider.value = val
UtilitiesTabController.setSteamDesktopOverlayWidth(val, false)
}
text = UtilitiesTabController.steamDesktopOverlayWidth.toFixed(1)
}
}
}
}
}
}
MediaControllerKeys {
id: mediaKeysGroupBox
}
Item {
Layout.fillHeight: true
}
Component.onCompleted: {
alarmClockToggle.checked = UtilitiesTabController.alarmEnabled
alarmDontAnnoyToggle.checked = !UtilitiesTabController.alarmIsModal
setAlarmHourText(UtilitiesTabController.alarmTimeHour)
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
alarmGroupBox.visible = !OverlayController.desktopMode
keyboardGroupBox.visible = !OverlayController.desktopMode
steamDesktopGroupBox.visible = UtilitiesTabController.steamDesktopOverlayAvailable
if (steamDesktopGroupBox.visible) {
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
}
}
Connections {
target: UtilitiesTabController
onAlarmEnabledChanged: {
alarmClockToggle.checked = UtilitiesTabController.alarmEnabled
}
onAlarmIsModalChanged: {
alarmDontAnnoyToggle.checked = !UtilitiesTabController.alarmIsModal
}
onAlarmTimeHourChanged: {
setAlarmHourText(UtilitiesTabController.alarmTimeHour)
}
onAlarmTimeMinuteChanged: {
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
}
onSteamDesktopOverlayAvailableChanged: {
steamDesktopGroupBox.visible = UtilitiesTabController.steamDesktopOverlayAvailable
if (steamDesktopGroupBox.visible) {
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
}
}
onSteamDesktopOverlayWidthChanged: {
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
}
}
}
function setAlarmHourText(value) {
if (value < 9) {
alarmClockHourText.text = "0" + value
} else {
alarmClockHourText.text = value
}
}
function setAlarmMinuteText(value) {
if (value < 9) {
alarmClockMinuteText.text = "0" + value
} else {
alarmClockMinuteText.text = value
}
}
}