You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wowlet/src/vr/qml/SettingsPage.qml

169 lines
4.4 KiB

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.2
import "."
import "common"
ColumnLayout {
id: root
property bool needsRestart: false
spacing: 30
Layout.fillHeight: true
Layout.fillWidth: true
ColumnLayout {
spacing: 30
Layout.topMargin: 40
Layout.fillWidth: true
Layout.leftMargin: 40
Layout.rightMargin: 40
MyText {
Layout.fillWidth: true
fontSize: 26
text: "Settings"
wrap: true
}
Rectangle {
color: Style.dividerColor
height: 1
Layout.topMargin: 10
Layout.fillWidth: true
}
RowLayout {
spacing: 30
MyText {
text: "Theme"
}
MyComboBox {
id: themeCombo
Layout.preferredHeight: 60
Layout.preferredWidth: 378
displayText: "-"
model: [""]
delegate: ItemDelegate {
width: parent.width
text: modelData.text
hoverEnabled: true
contentItem: MyText {
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
text: parent.text
color: parent.enabled ? Style.fontColor : Style.fontColorDimmed
}
background: Rectangle {
color: parent.pressed ? "#406288" : (parent.hovered ? "#365473" : "#2c435d")
}
}
onCurrentIndexChanged: {
displayText = themeCombo.model[currentIndex]["text"];
if(displayText !== "" && displayText !== appWindow.theme) {
appWindow.changeTheme(displayText);
needsRestart = true;
}
}
}
}
RowLayout {
spacing: 30
MyText {
text: "Streamer mode (" + (appWindow.streamerMode ? "ON" : "OFF") + ")"
}
RowLayout {
spacing: 20
Layout.fillWidth: true
Layout.preferredHeight: 56
MyPushButton {
Layout.preferredWidth: 100
enabled: !appWindow.streamerMode
opacity: !appWindow.streamerMode ? 1.0 : 0.3
text: "On"
onClicked: {
appWindow.streamerMode = !appWindow.streamerMode;
WowletVR.setStreamerMode(appWindow.streamerMode);
}
}
MyPushButton {
Layout.preferredWidth: 100
enabled: appWindow.streamerMode
opacity: appWindow.streamerMode ? 1.0 : 0.3
text: "Off"
onClicked: {
appWindow.streamerMode = !appWindow.streamerMode;
WowletVR.setStreamerMode(appWindow.streamerMode);
}
}
}
}
}
Component.onCompleted: {
}
MyDialogOkPopup {
id: restartPopup
dialogTitle: "Restart required"
dialogText: "WowletVR needs a restart to load the theme. Exiting."
onClosed: {
OverlayController.exitApp();
}
}
MyPushButton {
text: "Back"
Layout.leftMargin: 40
Layout.preferredWidth: 220
onClicked: {
if(root.needsRestart) {
restartPopup.open();
} else {
mainView.pop();
}
}
}
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
function onPageCompleted(previousView){
}
Connections {
target: appWindow
function onInitTheme() {
// populate combobox
let themeComboBoxItems = [{ value: 0, text: ""}];
for (let _theme in appWindow.themes){
if (!appWindow.themes.hasOwnProperty(_theme))
continue;
themeComboBoxItems.push({ value: 0, text: _theme });
}
themeCombo.model = themeComboBoxItems;
themeCombo.displayText = appWindow.theme;
}
}
}
// OverlayController.exitApp();