Warning, /multimedia/kasts/src/qml/SleepTimerDialog.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * SPDX-FileCopyrightText: 2022 Bart De Vries <bart@mogwai.be>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Controls as Controls
0009 import QtQuick.Layouts
0010
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.kasts
0013 import org.kde.kasts.settings
0014
0015 Kirigami.Dialog {
0016 id: sleepTimerDialog
0017 title: i18n("Sleep Timer")
0018 padding: Kirigami.Units.largeSpacing
0019 closePolicy: Kirigami.Dialog.CloseOnEscape | Kirigami.Dialog.CloseOnPressOutside
0020 standardButtons: Kirigami.Dialog.NoButton
0021
0022 property bool timerActive: AudioManager.remainingSleepTime > 0
0023
0024 customFooterActions: [
0025 Kirigami.Action {
0026 enabled: !timerActive
0027 text: i18n("Start")
0028 icon.name: "dialog-ok"
0029 onTriggered: {
0030 sleepTimerDialog.close();
0031 var sleepTimeSeconds = sleepTimerValueBox.value * sleepTimerUnitsBox.model[sleepTimerUnitsBox.currentIndex]["secs"];
0032 if (sleepTimeSeconds > 0) {
0033 SettingsManager.sleepTimerValue = sleepTimerValueBox.value;
0034 SettingsManager.sleepTimerUnits = sleepTimerUnitsBox.currentValue;
0035 SettingsManager.save();
0036 AudioManager.sleepTime = sleepTimeSeconds;
0037 }
0038 }
0039 },
0040 Kirigami.Action {
0041 enabled: timerActive
0042 text: i18n("Stop")
0043 icon.name: "dialog-cancel"
0044 onTriggered: {
0045 sleepTimerDialog.close();
0046 AudioManager.sleepTime = undefined; // make use of RESET
0047 }
0048 }
0049 ]
0050
0051 ColumnLayout {
0052 id: content
0053 Controls.Label {
0054 text: (timerActive) ? i18n("Status: Active") : i18n("Status: Inactive")
0055 }
0056
0057 Controls.Label {
0058 opacity: (timerActive) ? 1 : 0.5
0059 Layout.bottomMargin: Kirigami.Units.largeSpacing
0060 text: i18n("Remaining time: %1", AudioManager.formattedRemainingSleepTime)
0061 }
0062
0063 RowLayout {
0064 Controls.SpinBox {
0065 id: sleepTimerValueBox
0066 enabled: !timerActive
0067 value: SettingsManager.sleepTimerValue
0068 from: 1
0069 to: 24 * 60 * 60
0070 }
0071
0072 Controls.ComboBox {
0073 id: sleepTimerUnitsBox
0074 enabled: !timerActive
0075 textRole: "text"
0076 valueRole: "value"
0077 model: [{"text": i18n("Seconds"), "value": 0, "secs": 1, "max": 24 * 60 * 60},
0078 {"text": i18n("Minutes"), "value": 1, "secs": 60, "max": 24 * 60},
0079 {"text": i18n("Hours"), "value": 2, "secs": 60 * 60, "max": 24}]
0080 Component.onCompleted: {
0081 currentIndex = indexOfValue(SettingsManager.sleepTimerUnits);
0082 sleepTimerValueBox.to = sleepTimerUnitsBox.model[currentIndex]["max"];
0083 if (sleepTimerValueBox.value > sleepTimerUnitsBox.model[currentIndex]["max"]) {
0084 sleepTimerValueBox.value = sleepTimerUnitsBox.model[currentIndex]["max"];
0085 }
0086 }
0087 onActivated: {
0088 SettingsManager.sleepTimerUnits = currentValue;
0089 if (sleepTimerValueBox.value > sleepTimerUnitsBox.model[currentIndex]["max"]) {
0090 sleepTimerValueBox.value = sleepTimerUnitsBox.model[currentIndex]["max"];
0091 }
0092 sleepTimerValueBox.to = sleepTimerUnitsBox.model[currentIndex]["max"];
0093 }
0094 }
0095 }
0096 }
0097 }