fix: Settings als Inline-Komponente + showValue entfernt
- Settings.qml als Inline-Komponente in Main.qml eingebunden (Import-Problem gelöst) - showValue: false entfernt (nicht unterstützt in QtQuick.Controls 2.4) - Settings.qml Datei gelöscht (nun Inline) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -1,196 +0,0 @@
|
||||
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