fix: Alles in eine Datei (Main.qml) integriert
- Settings.qml Inhalt direkt in Main.qml als zweite Page eingebunden - import "." entfernt (verursachte Type Settings unavailable Fehler) - showValue: false entfernt (nicht unterstützt in QtQuick.Controls 2.4) - Separate Settings.qml Datei gelöscht Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
+184
-204
@@ -75,210 +75,7 @@ MainView {
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
currentIndex: 0
|
currentIndex: 0
|
||||||
|
|
||||||
// SEITE 1: EINSTELLUNGEN
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
Settings {
|
|
||||||
id: settingsPage
|
|
||||||
}
|
|
||||||
=======
|
|
||||||
// ================================================================
|
|
||||||
// SEITE 1: EINSTELLUNGEN (Inline-Komponente)
|
|
||||||
// ================================================================
|
|
||||||
Component {
|
|
||||||
id: settingsComponent
|
|
||||||
Page {
|
|
||||||
id: settingsPage
|
|
||||||
objectName: 'settingsPage'
|
|
||||||
|
|
||||||
property bool settingsInitialized: false
|
|
||||||
property var currentFortuneList: "classic"
|
|
||||||
property real musicVolume: 0.5
|
|
||||||
property real crackVolume: 1.0
|
|
||||||
|
|
||||||
header: PageHeader {
|
|
||||||
title: "Einstellungen"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Timer für PyOtherSide Initialisierung
|
|
||||||
Timer {
|
|
||||||
id: initTimer
|
|
||||||
interval: 1000
|
|
||||||
running: true
|
|
||||||
repeat: false
|
|
||||||
onTriggered: {
|
|
||||||
try {
|
|
||||||
// Einstellungen laden
|
|
||||||
currentFortuneList = py.call_sync("fortunecookie.get_current_fortune_list", []);
|
|
||||||
musicVolume = py.call_sync("fortunecookie.get_music_volume", []);
|
|
||||||
crackVolume = py.call_sync("fortunecookie.get_crack_volume", []);
|
|
||||||
|
|
||||||
// Slider Werte setzen
|
|
||||||
musicVolumeSlider.value = musicVolume;
|
|
||||||
crackVolumeSlider.value = crackVolume;
|
|
||||||
|
|
||||||
// Spruchlisten ComboBox füllen
|
|
||||||
var lists = py.call_sync("fortunecookie.get_fortune_lists_with_description", []);
|
|
||||||
fortuneListCombo.model = lists;
|
|
||||||
|
|
||||||
// Aktuelle Liste auswählen (vergleiche nur den Listennamen, nicht die Beschreibung)
|
|
||||||
for (var i = 0; i < fortuneListCombo.count; i++) {
|
|
||||||
var text = fortuneListCombo.textAt(i);
|
|
||||||
var listName = text.split(" - ")[0];
|
|
||||||
if (listName === currentFortuneList) {
|
|
||||||
fortuneListCombo.currentIndex = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
settingsInitialized = true;
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
console.log("ERROR: Einstellungen nicht geladen: " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: units.gu(2)
|
|
||||||
spacing: units.gu(2)
|
|
||||||
|
|
||||||
// Spacer für Header
|
|
||||||
Item {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: units.gu(2)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ============================================================
|
|
||||||
// SPRUCHLISTEN-AUSWAHL
|
|
||||||
// ============================================================
|
|
||||||
|
|
||||||
Label {
|
|
||||||
text: "Spruchliste:"
|
|
||||||
Layout.fillWidth: true
|
|
||||||
fontSize: "large"
|
|
||||||
}
|
|
||||||
|
|
||||||
ComboBox {
|
|
||||||
id: fortuneListCombo
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: units.gu(8)
|
|
||||||
|
|
||||||
onActivated: {
|
|
||||||
var newListFull = fortuneListCombo.currentText;
|
|
||||||
// Extrahiere den Listennamen (Teil vor " - ")
|
|
||||||
var newList = newListFull.split(" - ")[0];
|
|
||||||
py.call("fortunecookie.set_fortune_list", [newList], function() {
|
|
||||||
console.log("Spruchliste gewaehlt: " + newList);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ============================================================
|
|
||||||
// LAUTSTÄRKE - MUSIK
|
|
||||||
// ============================================================
|
|
||||||
|
|
||||||
Label {
|
|
||||||
text: "Musik-Lautstärke:"
|
|
||||||
Layout.fillWidth: true
|
|
||||||
fontSize: "large"
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
spacing: units.gu(2)
|
|
||||||
|
|
||||||
Slider {
|
|
||||||
id: musicVolumeSlider
|
|
||||||
Layout.fillWidth: true
|
|
||||||
minimumValue: 0.0
|
|
||||||
maximumValue: 1.0
|
|
||||||
stepSize: 0.1
|
|
||||||
value: 0.5
|
|
||||||
|
|
||||||
onValueChanged: {
|
|
||||||
var volume = musicVolumeSlider.value;
|
|
||||||
py.call("fortunecookie.set_music_volume", [volume]);
|
|
||||||
musicVolumeLabel.text = Math.round(volume * 100) + "%";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Label {
|
|
||||||
id: musicVolumeLabel
|
|
||||||
text: Math.round(musicVolumeSlider.value * 100) + "%"
|
|
||||||
width: units.gu(10)
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
fontSize: "medium"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ============================================================
|
|
||||||
// LAUTSTÄRKE - KNACK-GERÄUSCH
|
|
||||||
// ============================================================
|
|
||||||
|
|
||||||
Label {
|
|
||||||
text: "Knack-Lautstärke:"
|
|
||||||
Layout.fillWidth: true
|
|
||||||
fontSize: "large"
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
spacing: units.gu(2)
|
|
||||||
|
|
||||||
Slider {
|
|
||||||
id: crackVolumeSlider
|
|
||||||
Layout.fillWidth: true
|
|
||||||
minimumValue: 0.0
|
|
||||||
maximumValue: 1.0
|
|
||||||
stepSize: 0.1
|
|
||||||
value: 1.0
|
|
||||||
|
|
||||||
onValueChanged: {
|
|
||||||
var volume = crackVolumeSlider.value;
|
|
||||||
py.call("fortunecookie.set_crack_volume", [volume]);
|
|
||||||
crackVolumeLabel.text = Math.round(volume * 100) + "%";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Label {
|
|
||||||
id: crackVolumeLabel
|
|
||||||
text: Math.round(crackVolumeSlider.value * 100) + "%"
|
|
||||||
width: units.gu(10)
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
fontSize: "medium"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ============================================================
|
|
||||||
// ZURÜCK-BUTTON
|
|
||||||
// ============================================================
|
|
||||||
|
|
||||||
Item {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: units.gu(10)
|
|
||||||
}
|
|
||||||
|
|
||||||
Button {
|
|
||||||
text: "Zurück"
|
|
||||||
Layout.fillWidth: false
|
|
||||||
Layout.preferredWidth: units.gu(20)
|
|
||||||
Layout.preferredHeight: units.gu(8)
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
|
|
||||||
onClicked: {
|
|
||||||
mainStack.currentIndex = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Settings-Page erstellen
|
|
||||||
Component.onCompleted: {
|
|
||||||
var comp = settingsComponent.createObject(mainStack);
|
|
||||||
mainStack.insert(1, comp);
|
|
||||||
}================================================================
|
|
||||||
// SEITE 0: HAUPTSPIELBILDSCHIRM
|
// SEITE 0: HAUPTSPIELBILDSCHIRM
|
||||||
// ================================================================
|
// ================================================================
|
||||||
Page {
|
Page {
|
||||||
@@ -476,8 +273,191 @@ MainView {
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
// SEITE 1: EINSTELLUNGEN
|
// SEITE 1: EINSTELLUNGEN
|
||||||
// ================================================================
|
// ================================================================
|
||||||
Settings {
|
Page {
|
||||||
id: settingsPage
|
id: settingsPage
|
||||||
|
objectName: 'settingsPage'
|
||||||
|
|
||||||
|
property bool settingsInitialized: false
|
||||||
|
property var currentFortuneList: "classic"
|
||||||
|
property real musicVolume: 0.5
|
||||||
|
property real crackVolume: 1.0
|
||||||
|
|
||||||
|
header: PageHeader {
|
||||||
|
title: "Einstellungen"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Timer für PyOtherSide Initialisierung
|
||||||
|
Timer {
|
||||||
|
id: initTimer
|
||||||
|
interval: 1000
|
||||||
|
running: true
|
||||||
|
repeat: false
|
||||||
|
onTriggered: {
|
||||||
|
try {
|
||||||
|
// Einstellungen laden
|
||||||
|
currentFortuneList = py.call_sync("fortunecookie.get_current_fortune_list", []);
|
||||||
|
musicVolume = py.call_sync("fortunecookie.get_music_volume", []);
|
||||||
|
crackVolume = py.call_sync("fortunecookie.get_crack_volume", []);
|
||||||
|
|
||||||
|
// Slider Werte setzen
|
||||||
|
musicVolumeSlider.value = musicVolume;
|
||||||
|
crackVolumeSlider.value = crackVolume;
|
||||||
|
|
||||||
|
// Spruchlisten ComboBox füllen
|
||||||
|
var lists = py.call_sync("fortunecookie.get_fortune_lists_with_description", []);
|
||||||
|
fortuneListCombo.model = lists;
|
||||||
|
|
||||||
|
// Aktuelle Liste auswählen (vergleiche nur den Listennamen, nicht die Beschreibung)
|
||||||
|
for (var i = 0; i < fortuneListCombo.count; i++) {
|
||||||
|
var text = fortuneListCombo.textAt(i);
|
||||||
|
var listName = text.split(" - ")[0];
|
||||||
|
if (listName === currentFortuneList) {
|
||||||
|
fortuneListCombo.currentIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
settingsInitialized = true;
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.log("ERROR: Einstellungen nicht geladen: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: units.gu(2)
|
||||||
|
spacing: units.gu(2)
|
||||||
|
|
||||||
|
// Spacer für Header
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: units.gu(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// SPRUCHLISTEN-AUSWAHL
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Spruchliste:"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
fontSize: "large"
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: fortuneListCombo
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: units.gu(8)
|
||||||
|
|
||||||
|
onActivated: {
|
||||||
|
var newListFull = fortuneListCombo.currentText;
|
||||||
|
// Extrahiere den Listennamen (Teil vor " - ")
|
||||||
|
var newList = newListFull.split(" - ")[0];
|
||||||
|
py.call("fortunecookie.set_fortune_list", [newList], function() {
|
||||||
|
console.log("Spruchliste gewaehlt: " + newList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// LAUTSTÄRKE - MUSIK
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Musik-Lautstärke:"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
fontSize: "large"
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: units.gu(2)
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: musicVolumeSlider
|
||||||
|
Layout.fillWidth: true
|
||||||
|
minimumValue: 0.0
|
||||||
|
maximumValue: 1.0
|
||||||
|
stepSize: 0.1
|
||||||
|
value: 0.5
|
||||||
|
|
||||||
|
onValueChanged: {
|
||||||
|
var volume = musicVolumeSlider.value;
|
||||||
|
py.call("fortunecookie.set_music_volume", [volume]);
|
||||||
|
musicVolumeLabel.text = Math.round(volume * 100) + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: musicVolumeLabel
|
||||||
|
text: Math.round(musicVolumeSlider.value * 100) + "%"
|
||||||
|
width: units.gu(10)
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
fontSize: "medium"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// LAUTSTÄRKE - KNACK-GERÄUSCH
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Knack-Lautstärke:"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
fontSize: "large"
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: units.gu(2)
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: crackVolumeSlider
|
||||||
|
Layout.fillWidth: true
|
||||||
|
minimumValue: 0.0
|
||||||
|
maximumValue: 1.0
|
||||||
|
stepSize: 0.1
|
||||||
|
value: 1.0
|
||||||
|
|
||||||
|
onValueChanged: {
|
||||||
|
var volume = crackVolumeSlider.value;
|
||||||
|
py.call("fortunecookie.set_crack_volume", [volume]);
|
||||||
|
crackVolumeLabel.text = Math.round(volume * 100) + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: crackVolumeLabel
|
||||||
|
text: Math.round(crackVolumeSlider.value * 100) + "%"
|
||||||
|
width: units.gu(10)
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
fontSize: "medium"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// ZURÜCK-BUTTON
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: units.gu(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: "Zurück"
|
||||||
|
Layout.fillWidth: false
|
||||||
|
Layout.preferredWidth: units.gu(20)
|
||||||
|
Layout.preferredHeight: units.gu(8)
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
mainStack.currentIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,196 @@
|
|||||||
|
import QtQuick 2.7
|
||||||
|
import QtQuick.Controls 2.4
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import QtMultimedia 5.0
|
||||||
|
import Lomiri.Components 1.3
|
||||||
|
import Lomiri.Components.Popups 1.3
|
||||||
|
import io.thp.pyotherside 1.4
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: settingsPage
|
||||||
|
objectName: 'settingsPage'
|
||||||
|
|
||||||
|
property bool settingsInitialized: false
|
||||||
|
property var currentFortuneList: "classic"
|
||||||
|
property real musicVolume: 0.5
|
||||||
|
property real crackVolume: 1.0
|
||||||
|
|
||||||
|
header: PageHeader {
|
||||||
|
title: "Einstellungen"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Timer für PyOtherSide Initialisierung
|
||||||
|
Timer {
|
||||||
|
id: initTimer
|
||||||
|
interval: 1000
|
||||||
|
running: true
|
||||||
|
repeat: false
|
||||||
|
onTriggered: {
|
||||||
|
try {
|
||||||
|
// Einstellungen laden
|
||||||
|
currentFortuneList = py.call_sync("fortunecookie.get_current_fortune_list", []);
|
||||||
|
musicVolume = py.call_sync("fortunecookie.get_music_volume", []);
|
||||||
|
crackVolume = py.call_sync("fortunecookie.get_crack_volume", []);
|
||||||
|
|
||||||
|
// Slider Werte setzen
|
||||||
|
musicVolumeSlider.value = musicVolume;
|
||||||
|
crackVolumeSlider.value = crackVolume;
|
||||||
|
|
||||||
|
// Spruchlisten ComboBox füllen
|
||||||
|
var lists = py.call_sync("fortunecookie.get_fortune_lists_with_description", []);
|
||||||
|
fortuneListCombo.model = lists;
|
||||||
|
|
||||||
|
// Aktuelle Liste auswählen (vergleiche nur den Listennamen, nicht die Beschreibung)
|
||||||
|
for (var i = 0; i < fortuneListCombo.count; i++) {
|
||||||
|
var text = fortuneListCombo.textAt(i);
|
||||||
|
var listName = text.split(" - ")[0];
|
||||||
|
if (listName === currentFortuneList) {
|
||||||
|
fortuneListCombo.currentIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
settingsInitialized = true;
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.log("ERROR: Einstellungen nicht geladen: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: units.gu(2)
|
||||||
|
spacing: units.gu(2)
|
||||||
|
|
||||||
|
// Spacer für Header
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: units.gu(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// SPRUCHLISTEN-AUSWAHL
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Spruchliste:"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
fontSize: "large"
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: fortuneListCombo
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: units.gu(8)
|
||||||
|
|
||||||
|
onActivated: {
|
||||||
|
var newListFull = fortuneListCombo.currentText;
|
||||||
|
// Extrahiere den Listennamen (Teil vor " - ")
|
||||||
|
var newList = newListFull.split(" - ")[0];
|
||||||
|
py.call("fortunecookie.set_fortune_list", [newList], function() {
|
||||||
|
console.log("Spruchliste gewaehlt: " + newList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// LAUTSTÄRKE - MUSIK
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Musik-Lautstärke:"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
fontSize: "large"
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: units.gu(2)
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: musicVolumeSlider
|
||||||
|
Layout.fillWidth: true
|
||||||
|
minimumValue: 0.0
|
||||||
|
maximumValue: 1.0
|
||||||
|
stepSize: 0.1
|
||||||
|
value: 0.5
|
||||||
|
showValue: false
|
||||||
|
|
||||||
|
onValueChanged: {
|
||||||
|
var volume = musicVolumeSlider.value;
|
||||||
|
py.call("fortunecookie.set_music_volume", [volume]);
|
||||||
|
musicVolumeLabel.text = Math.round(volume * 100) + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: musicVolumeLabel
|
||||||
|
text: Math.round(musicVolumeSlider.value * 100) + "%"
|
||||||
|
width: units.gu(10)
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
fontSize: "medium"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// LAUTSTÄRKE - KNACK-GERÄUSCH
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Knack-Lautstärke:"
|
||||||
|
Layout.fillWidth: true
|
||||||
|
fontSize: "large"
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: units.gu(2)
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: crackVolumeSlider
|
||||||
|
Layout.fillWidth: true
|
||||||
|
minimumValue: 0.0
|
||||||
|
maximumValue: 1.0
|
||||||
|
stepSize: 0.1
|
||||||
|
value: 1.0
|
||||||
|
showValue: false
|
||||||
|
|
||||||
|
onValueChanged: {
|
||||||
|
var volume = crackVolumeSlider.value;
|
||||||
|
py.call("fortunecookie.set_crack_volume", [volume]);
|
||||||
|
crackVolumeLabel.text = Math.round(volume * 100) + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: crackVolumeLabel
|
||||||
|
text: Math.round(crackVolumeSlider.value * 100) + "%"
|
||||||
|
width: units.gu(10)
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
fontSize: "medium"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// ZURÜCK-BUTTON
|
||||||
|
// ============================================================
|
||||||
|
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: units.gu(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: "Zurück"
|
||||||
|
Layout.fillWidth: false
|
||||||
|
Layout.preferredWidth: units.gu(20)
|
||||||
|
Layout.preferredHeight: units.gu(8)
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
mainStack.currentIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user