From b8ac4b618d82feb1f39bbc5795fc5dbca5443ca3 Mon Sep 17 00:00:00 2001 From: reionwong Date: Tue, 16 Nov 2021 22:39:45 +0800 Subject: [PATCH] Fix power manager --- src/powermanager.cpp | 37 ++++++++++++++ src/powermanager.h | 12 +++++ src/qml/Power/Main.qml | 112 ++++++++++++++++++++++++----------------- 3 files changed, 115 insertions(+), 46 deletions(-) diff --git a/src/powermanager.cpp b/src/powermanager.cpp index 7dc87f6..a89e01c 100644 --- a/src/powermanager.cpp +++ b/src/powermanager.cpp @@ -18,7 +18,10 @@ */ #include "powermanager.h" + +#include #include +#include PowerManager::PowerManager(QObject *parent) : QObject(parent) @@ -30,6 +33,10 @@ PowerManager::PowerManager(QObject *parent) if (m_iface.isValid()) { m_mode = m_iface.property("mode").toInt(); } + + QSettings settings(QSettings::UserScope, "cutefishos", "power"); + m_idleTime = settings.value("CloseScreenTimeout", 600).toInt(); + m_hibernateTime = settings.value("HibernateTimeout", 600).toInt(); } int PowerManager::mode() const @@ -45,3 +52,33 @@ void PowerManager::setMode(int mode) emit modeChanged(); } } + +int PowerManager::idleTime() +{ + return m_idleTime; +} + +void PowerManager::setIdleTime(int idleTime) +{ + if (m_idleTime != idleTime) { + m_idleTime = idleTime; + QSettings settings(QSettings::UserScope, "cutefishos", "power"); + settings.setValue("CloseScreenTimeout", idleTime); + emit idleTimeChanged(); + } +} + +int PowerManager::hibernateTime() +{ + return m_hibernateTime; +} + +void PowerManager::setHibernateTime(int timeout) +{ + if (m_hibernateTime != timeout) { + m_hibernateTime = timeout; + QSettings settings(QSettings::UserScope, "cutefishos", "power"); + settings.setValue("HibernateTimeout", timeout); + emit hibernateTimeChanged(); + } +} diff --git a/src/powermanager.h b/src/powermanager.h index 3d5c200..25087e9 100644 --- a/src/powermanager.h +++ b/src/powermanager.h @@ -27,6 +27,8 @@ class PowerManager : public QObject { Q_OBJECT Q_PROPERTY(int mode READ mode WRITE setMode NOTIFY modeChanged) + Q_PROPERTY(int idleTime READ idleTime WRITE setIdleTime NOTIFY idleTimeChanged) + Q_PROPERTY(int hibernateTime READ hibernateTime WRITE setHibernateTime NOTIFY hibernateTimeChanged) public: explicit PowerManager(QObject *parent = nullptr); @@ -34,12 +36,22 @@ public: int mode() const; void setMode(int mode); + int idleTime(); + void setIdleTime(int idleTime); + + int hibernateTime(); + void setHibernateTime(int timeout); + signals: void modeChanged(); + void idleTimeChanged(); + void hibernateTimeChanged(); private: QDBusInterface m_iface; int m_mode; + int m_idleTime; + int m_hibernateTime; }; #endif // POWERMANAGER_H diff --git a/src/qml/Power/Main.qml b/src/qml/Power/Main.qml index 1e27856..f69e777 100644 --- a/src/qml/Power/Main.qml +++ b/src/qml/Power/Main.qml @@ -38,6 +38,23 @@ ItemPage { id: battery } + function timeoutToIndex(timeout) { + switch (timeout) { + case 2 * 60: + return 0 + case 5 * 60: + return 1 + case 10 * 60: + return 2 + case 15 * 60: + return 3 + case 30 * 60: + return 4 + case -1: + return 5 + } + } + Scrollable { anchors.fill: parent contentHeight: layout.implicitHeight @@ -90,11 +107,6 @@ ItemPage { RoundedItem { Layout.topMargin: FishUI.Units.largeSpacing - Label { - text: qsTr("Plugged In") - color: FishUI.Theme.disabledTextColor - } - GridLayout { columns: 2 @@ -112,40 +124,37 @@ ItemPage { ListElement { text: qsTr("30 Minutes") } ListElement { text: qsTr("Never") } } - } - Label { - text: qsTr("Hibernate") - Layout.fillWidth: true - } + Component.onCompleted: { + currentIndex = timeoutToIndex(power.idleTime) + } - ComboBox { - model: ListModel { - ListElement { text: qsTr("2 Minutes") } - ListElement { text: qsTr("5 Minutes") } - ListElement { text: qsTr("10 Minutes") } - ListElement { text: qsTr("15 Minutes") } - ListElement { text: qsTr("30 Minutes") } - ListElement { text: qsTr("Never") } + onActivated: { + switch (currentIndex) { + case 0: + power.idleTime = 2 * 60 + break + case 1: + power.idleTime = 5 * 60 + break + case 2: + power.idleTime = 10 * 60 + break + case 3: + power.idleTime = 15 * 60 + break + case 4: + power.idleTime = 30 * 60 + break + case 5: + power.idleTime = -1 + break + } } } - } - } - - RoundedItem { - visible: battery.available - Layout.topMargin: FishUI.Units.largeSpacing - - Label { - text: qsTr("On Battery") - color: FishUI.Theme.disabledTextColor - } - - GridLayout { - columns: 2 Label { - text: qsTr("Turn off screen") + text: qsTr("Hibernate") Layout.fillWidth: true } @@ -158,21 +167,32 @@ ItemPage { ListElement { text: qsTr("30 Minutes") } ListElement { text: qsTr("Never") } } - } - Label { - text: qsTr("Hibernate") - Layout.fillWidth: true - } + Component.onCompleted: { + currentIndex = timeoutToIndex(power.hibernateTime) + } - ComboBox { - model: ListModel { - ListElement { text: qsTr("2 Minutes") } - ListElement { text: qsTr("5 Minutes") } - ListElement { text: qsTr("10 Minutes") } - ListElement { text: qsTr("15 Minutes") } - ListElement { text: qsTr("30 Minutes") } - ListElement { text: qsTr("Never") } + onActivated: { + switch (currentIndex) { + case 0: + power.hibernateTime = 2 * 60 + break + case 1: + power.hibernateTime = 5 * 60 + break + case 2: + power.hibernateTime = 10 * 60 + break + case 3: + power.hibernateTime = 15 * 60 + break + case 4: + power.hibernateTime = 30 * 60 + break + case 5: + power.hibernateTime = -1 + break + } } } }