From 1f1f51f9e6da07107fc7b4fb1a78526fbe82e96b Mon Sep 17 00:00:00 2001 From: kylinsecos_admin Date: Thu, 20 Jan 2022 17:15:29 +0800 Subject: [PATCH] First submission of source code --- ...Power-glib-to-determine-whe-b09567c6.patch | 145 ++++++ ...-the-setting-form-of-idle-t-40aeb96c.patch | 452 ++++++++++++++++++ ...uration-items-made-by-suspe-b42c7200.patch | 98 ++++ ...bnormal-settings-brightness-8406922f.patch | 38 ++ ...ew-fix-ui-description-error-f3096927.patch | 57 +++ ...set-minmum-brightness-to-20-957b0262.patch | 95 ++++ kiran-cpanel-power-2.2.0.tar.gz | Bin 0 -> 27691 bytes kiran-cpanel-power.spec | 85 ++++ 8 files changed, 970 insertions(+) create mode 100644 0000-feature-upower-glib-yse-UPower-glib-to-determine-whe-b09567c6.patch create mode 100644 0001-refactor-idle-time-Modify-the-setting-form-of-idle-t-40aeb96c.patch create mode 100644 0002-refactor-view-hide-configuration-items-made-by-suspe-b42c7200.patch create mode 100644 0003-fix-brightness-abnormal-settings-brightness-8406922f.patch create mode 100644 0004-fix-view-fix-ui-description-error-f3096927.patch create mode 100644 0005-fix-brightness-set-minmum-brightness-to-20-957b0262.patch create mode 100644 kiran-cpanel-power-2.2.0.tar.gz create mode 100644 kiran-cpanel-power.spec diff --git a/0000-feature-upower-glib-yse-UPower-glib-to-determine-whe-b09567c6.patch b/0000-feature-upower-glib-yse-UPower-glib-to-determine-whe-b09567c6.patch new file mode 100644 index 0000000..a96eb0c --- /dev/null +++ b/0000-feature-upower-glib-yse-UPower-glib-to-determine-whe-b09567c6.patch @@ -0,0 +1,145 @@ +From b09567c650c78c1d4699e092d56d783ae2568b7c Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Tue, 21 Dec 2021 14:18:47 +0800 +Subject: [PATCH 0/5] feature(upower-glib): yse UPower-glib to determine + whether there is a battery option +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 使用upower-glib枚举出所有的设备判断是否存在电池选项 +--- + CMakeLists.txt | 7 +++++-- + src/kcp-power-interface.cpp | 10 +++++++++- + src/upower-interface.cpp | 40 +++++++++++++++++++++++++++++++++++++ + src/upower-interface.h | 13 ++++++++++++ + 4 files changed, 67 insertions(+), 3 deletions(-) + create mode 100644 src/upower-interface.cpp + create mode 100644 src/upower-interface.h + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 806bc1b..9b7831c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -19,6 +19,7 @@ pkg_search_module(KIRAN_WIDGETS_QT5 REQUIRED kiranwidgets-qt5) + pkg_search_module(KIRAN_CC_DAEMON REQUIRED kiran-cc-daemon) + pkg_search_module(KLOG_QT5 REQUIRED klog-qt5) + pkg_search_module(QGSETTINGS REQUIRED gsettings-qt) ++pkg_search_module(UPOWER_GLIB REQUIRED upower-glib) + + #通过kiran control panel的pkgconfig配置文件取出插件Desktop安装位置、插件共享库安装位置 + pkg_search_module(KIRAN_CONTROL_PANEL_PKG REQUIRED kiran-control-panel) +@@ -65,7 +66,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE + ${KIRAN_CC_DAEMON_INCLUDE_DIRS} + ${KLOG_QT5_INCLUDE_DIRS} + ${KIRAN_CONTROL_PANEL_PKG_INCLUDE_DIRS} +- ${QGSETTINGS_INCLUDE_DIRS}) ++ ${QGSETTINGS_INCLUDE_DIRS} ++ ${UPOWER_GLIB_INCLUDE_DIRS}) + + target_link_libraries(${PROJECT_NAME} + Qt5::Widgets +@@ -73,7 +75,8 @@ target_link_libraries(${PROJECT_NAME} + ${KIRAN_WIDGETS_QT5_LIBRARIES} + ${KIRAN_CC_DAEMON_LIBRARIES} + ${KLOG_QT5_LIBRARIES} +- ${QGSETTINGS_LIBRARIES}) ++ ${QGSETTINGS_LIBRARIES} ++ ${UPOWER_GLIB_LIBRARIES}) + + include(GNUInstallDirs) + # 安装插件翻译 +diff --git a/src/kcp-power-interface.cpp b/src/kcp-power-interface.cpp +index b0f03c4..40a28c3 100644 +--- a/src/kcp-power-interface.cpp ++++ b/src/kcp-power-interface.cpp +@@ -7,6 +7,7 @@ + #include "config.h" + #include "general-settings-page.h" + #include "power-settings-page.h" ++#include "upower-interface.h" + + #include + +@@ -71,5 +72,12 @@ bool KcpPowerInterface::haveUnsavedOptions() + + QStringList KcpPowerInterface::visibleSubItems() + { +- return QStringList() << "GeneralSettings" << "PowerSettings" << "BatterySettings"; ++ QStringList subItem({{"GeneralSettings"},{"PowerSettings"}}); ++ ++ if( UPowerInterface::haveBattery() ) ++ { ++ subItem << "BatterySettings"; ++ } ++ ++ return subItem; + } +diff --git a/src/upower-interface.cpp b/src/upower-interface.cpp +new file mode 100644 +index 0000000..3159718 +--- /dev/null ++++ b/src/upower-interface.cpp +@@ -0,0 +1,40 @@ ++// ++// Created by lxh on 2021/12/21. ++// ++ ++#include "upower-interface.h" ++#include ++#include ++ ++bool UPowerInterface::haveBattery() ++{ ++ GError *error = nullptr; ++ auto upClient = up_client_new(); ++ bool hasBattery = false; ++ ++#if !UP_CHECK_VERSION(0, 99, 0) ++ gboolean ret; ++ ret = up_client_enumerate_devices_sync(upClient, NULL, &error); ++ if (!ret) ++ { ++ fprintf(stderr, "failed to get device list: %s", error->message); ++ g_error_free(error); ++ } ++#endif ++ ++ auto devices = up_client_get_devices(upClient); ++ void *device = nullptr; ++ UpDeviceKind kind; ++ for (int i = 0; i < devices->len; i++) ++ { ++ device = g_ptr_array_index(devices, i); ++ g_object_get(device, ++ "kind", &kind, ++ NULL); ++ if (kind == UP_DEVICE_KIND_BATTERY) ++ hasBattery = true; ++ } ++ g_ptr_array_unref (devices); ++ g_object_unref(upClient); ++ return hasBattery; ++} +diff --git a/src/upower-interface.h b/src/upower-interface.h +new file mode 100644 +index 0000000..1c90165 +--- /dev/null ++++ b/src/upower-interface.h +@@ -0,0 +1,13 @@ ++// ++// Created by lxh on 2021/12/21. ++// ++ ++#ifndef KIRAN_POWER_MANAGER_SRC_U_POWER_INTERFACE_H_ ++#define KIRAN_POWER_MANAGER_SRC_U_POWER_INTERFACE_H_ ++ ++namespace UPowerInterface ++{ ++ bool haveBattery(); ++}; ++ ++#endif //KIRAN_POWER_MANAGER_SRC_U_POWER_INTERFACE_H_ +-- +2.27.0 + diff --git a/0001-refactor-idle-time-Modify-the-setting-form-of-idle-t-40aeb96c.patch b/0001-refactor-idle-time-Modify-the-setting-form-of-idle-t-40aeb96c.patch new file mode 100644 index 0000000..e83ab7d --- /dev/null +++ b/0001-refactor-idle-time-Modify-the-setting-form-of-idle-t-40aeb96c.patch @@ -0,0 +1,452 @@ +From 40aeb96c9b3f8105f77ba82cbc8632b9e196e2cd Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Tue, 21 Dec 2021 16:58:34 +0800 +Subject: [PATCH 1/5] refactor(idle time): Modify the setting form of idle time +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修改空闲时间的设置形式,修改描述 +--- + .../general-settings-page.cpp | 73 ++++++------ + .../general-settings/general-settings-page.h | 1 + + .../general-settings/general-settings-page.ui | 106 ++++++++++-------- + translations/kiran-cpanel-power.zh_CN.ts | 77 +++++++------ + 4 files changed, 145 insertions(+), 112 deletions(-) + +diff --git a/src/pages/general-settings/general-settings-page.cpp b/src/pages/general-settings/general-settings-page.cpp +index 5a6f807..40d4423 100644 +--- a/src/pages/general-settings/general-settings-page.cpp ++++ b/src/pages/general-settings/general-settings-page.cpp +@@ -22,6 +22,9 @@ + #define KEY_IDLE_DELAY "idle-delay" + #define DEFAULT_IDLE_DELAY 5 + ++#define SCHEMA_KIRAN_SCREENSAVER "com.kylinsec.kiran.screensaver" ++#define KEY_IDLE_ACTIVATION_LOCK "idleActivationLock" ++ + GeneralSettingsPage::GeneralSettingsPage(QWidget* parent) + : QWidget(parent), + ui(new Ui::GeneralSettingsPage), +@@ -48,14 +51,19 @@ void GeneralSettingsPage::initSessionSetting() + { + if (QGSettings::isSchemaInstalled(KIRAN_SESSION_SCHEMA_ID)) + { +- m_sessionSettings = new QGSettings(KIRAN_SESSION_SCHEMA_ID); ++ m_sessionSettings = new QGSettings(KIRAN_SESSION_SCHEMA_ID,QByteArray(),this); + } + else if (QGSettings::isSchemaInstalled(MATE_SESSION_SCHEMA_ID)) + { +- m_sessionSettings = new QGSettings(MATE_SESSION_SCHEMA_ID); ++ m_sessionSettings = new QGSettings(MATE_SESSION_SCHEMA_ID,QByteArray(),this); ++ } ++ ++ if( QGSettings::isSchemaInstalled(SCHEMA_KIRAN_SCREENSAVER) ) ++ { ++ m_screensaverSettings = new QGSettings(SCHEMA_KIRAN_SCREENSAVER,QByteArray(),this); + } + +- if (m_sessionSettings != nullptr) ++ if (m_sessionSettings) + { + connect(m_sessionSettings, &QGSettings::changed, [this](const QString& key) { + if (key != KEY_IDLE_DELAY) +@@ -73,6 +81,19 @@ void GeneralSettingsPage::initSessionSetting() + ui->slider_idleTime->setValue(m_sessionSettings->get(key).toInt()); + }); + } ++ ++ if(m_screensaverSettings) ++ { ++ connect(m_screensaverSettings,&QGSettings::changed,[this](const QString& key){ ++ if(key != KEY_IDLE_ACTIVATION_LOCK) ++ { ++ return ; ++ } ++ ++ bool value = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool(); ++ m_btn_lockScreen->setChecked(value); ++ }); ++ } + } + + void GeneralSettingsPage::initUI() +@@ -132,10 +153,6 @@ void GeneralSettingsPage::initUI() + //空闲时是否锁定屏幕及屏保 + m_btn_lockScreen = new KiranSwitchButton(this); + ui->layout_sliderLabel->addWidget(m_btn_lockScreen); +- +- QFont font = ui->label_idleTime->font(); +- font.setPointSize(font.pointSize()-2); +- ui->label_idleTime->setFont(font); + } + + void GeneralSettingsPage::initConnection() +@@ -170,20 +187,8 @@ void GeneralSettingsPage::initConnection() + m_sessionSettings->set(KEY_IDLE_DELAY, value); + } + }); +- connect(m_btn_lockScreen,&QAbstractButton::toggled,[this](bool checked){ +- if(checked) +- { +- ui->widget_idleTimeSlider->setEnabled(true); +- ui->slider_idleTime->setValue(DEFAULT_IDLE_DELAY); +- } +- else +- { +- if(m_sessionSettings) +- { +- m_sessionSettings->set(KEY_IDLE_DELAY,0); +- } +- ui->widget_idleTimeSlider->setEnabled(false); +- } ++ connect(m_btn_lockScreen, &QAbstractButton::toggled, [this](bool checked) { ++ m_screensaverSettings->set(KEY_IDLE_ACTIVATION_LOCK,checked); + }); + } + +@@ -250,18 +255,6 @@ void GeneralSettingsPage::load() + QSignalBlocker idleTimeSignalBlocker(ui->slider_idleTime); + QSignalBlocker idleTimerSwitchBlocker(m_btn_lockScreen); + int idleTime = m_sessionSettings->get(KEY_IDLE_DELAY).toInt(); +- if(idleTime<=0) +- { +- m_btn_lockScreen->setChecked(false); +- ui->widget_idleTimeSlider->setEnabled(false); +- ui->slider_idleTime->setValue(0); +- } +- else +- { +- m_btn_lockScreen->setChecked(true); +- ui->widget_idleTimeSlider->setEnabled(true); +- ui->slider_idleTime->setValue(idleTime); +- } + updateIdleTimeLabel(idleTime); + } + else +@@ -269,6 +262,18 @@ void GeneralSettingsPage::load() + m_btn_lockScreen->setChecked(false); + m_btn_lockScreen->setEnabled(false); + } ++ ++ if(m_screensaverSettings) ++ { ++ QSignalBlocker qSignalBlocker(m_btn_lockScreen); ++ bool value = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool(); ++ m_btn_lockScreen->setChecked(value); ++ } ++ else ++ { ++ m_btn_lockScreen->setChecked(false); ++ } ++ + } + + void GeneralSettingsPage::handleComboBoxCurrentIdxChanged(int idx) +@@ -309,7 +314,7 @@ void GeneralSettingsPage::handleComboBoxCurrentIdxChanged(int idx) + + void GeneralSettingsPage::setBrightnessPercent(int percent) + { +- if(percent < 0) ++ if (percent < 0) + { + ui->slider_brightness->setEnabled(false); + ui->slider_brightness->setValue(0); +diff --git a/src/pages/general-settings/general-settings-page.h b/src/pages/general-settings/general-settings-page.h +index 7266bde..884a76f 100644 +--- a/src/pages/general-settings/general-settings-page.h ++++ b/src/pages/general-settings/general-settings-page.h +@@ -48,6 +48,7 @@ private: + QTimer m_idleTimeTimer; + int m_brightnessValue; + QGSettings* m_sessionSettings = nullptr; ++ QGSettings* m_screensaverSettings = nullptr; + KiranSwitchButton* m_btn_lockScreen = nullptr; + }; + +diff --git a/src/pages/general-settings/general-settings-page.ui b/src/pages/general-settings/general-settings-page.ui +index 536774d..bca33de 100644 +--- a/src/pages/general-settings/general-settings-page.ui ++++ b/src/pages/general-settings/general-settings-page.ui +@@ -190,6 +190,66 @@ + + + ++ ++ ++ ++ 24 ++ ++ ++ ++ ++ Regard computer as idle after ++ ++ ++ ++ ++ ++ ++ Qt::Horizontal ++ ++ ++ ++ 40 ++ 20 ++ ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ Qt::AlignCenter ++ ++ ++ ++ ++ ++ ++ ++ ++ 0 ++ ++ ++ 10 ++ ++ ++ ++ ++ Qt::Horizontal ++ ++ ++ ++ ++ + + + +@@ -201,7 +261,7 @@ + + + +- After idle the following time to lock the screen ++ Lock screen when idle + + + +@@ -220,50 +280,6 @@ + + + +- +- +- +- +- 0 +- +- +- 0 +- +- +- 10 +- +- +- 0 +- +- +- 0 +- +- +- +- +- Qt::Horizontal +- +- +- +- +- +- +- +- 0 +- 0 +- +- +- +- +- +- +- Qt::AlignCenter +- +- +- +- +- +- + + + +diff --git a/translations/kiran-cpanel-power.zh_CN.ts b/translations/kiran-cpanel-power.zh_CN.ts +index 924cbc0..24099fc 100644 +--- a/translations/kiran-cpanel-power.zh_CN.ts ++++ b/translations/kiran-cpanel-power.zh_CN.ts +@@ -112,103 +112,114 @@ + GeneralSettingsPage + + +- +- ++ ++ + GeneralSettingsPage + 通用设置页面 + + + +- +- ++ ++ + When the power button is pressed + 按下电源按钮时 + + + +- +- ++ ++ + When the suspend button is pressed + 按下挂起按钮时 + + + +- +- ++ ++ + When closing the lid + 合上盖子操作 + + + +- +- ++ ++ + Display brightness setting + 显示亮度设置 + + + +- +- ++ ++ + 0% + + + +- +- +- ++ ++ ++ ++ Regard computer as idle after ++ 于此时间后视计算机为空闲 ++ ++ ++ ++ ++ ++ Lock screen when idle ++ 计算机空闲时锁定屏幕 ++ ++ + After idle the following time to lock the screen +- 空闲如下时间锁定屏幕 ++ 空闲如下时间锁定屏幕 + + +- +- ++ ++ + shutdown + 关机 + + +- +- +- ++ ++ ++ + hibernate + 休眠 + + +- +- +- ++ ++ ++ + suspend + 挂起 + + +- +- ++ ++ + display off + 关闭显示器 + + +- +- +- ++ ++ ++ + do nothing + 不执行操作 + + +- ++ + ERROR + 错误 + + +- ++ + brightness adjustment not available + 亮度调整不可用 + + +- ++ + %1hour + %1小时 + + +- ++ + %1minute + %1分钟 + +-- +2.27.0 + diff --git a/0002-refactor-view-hide-configuration-items-made-by-suspe-b42c7200.patch b/0002-refactor-view-hide-configuration-items-made-by-suspe-b42c7200.patch new file mode 100644 index 0000000..4f066f9 --- /dev/null +++ b/0002-refactor-view-hide-configuration-items-made-by-suspe-b42c7200.patch @@ -0,0 +1,98 @@ +From b42c72001b7c25e11e9f480694176cb71ba9a4f8 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Fri, 14 Jan 2022 14:41:30 +0800 +Subject: [PATCH 2/5] refactor(view): hide configuration items made by suspend + button +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 隐藏挂起按钮相关配置 + +Closes #48515 +--- + src/pages/general-settings/general-settings-page.cpp | 7 +++++++ + src/pages/general-settings/general-settings-page.ui | 6 +++--- + translations/kiran-cpanel-power.zh_CN.ts | 8 ++++---- + 3 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/src/pages/general-settings/general-settings-page.cpp b/src/pages/general-settings/general-settings-page.cpp +index 40d4423..af5e795 100644 +--- a/src/pages/general-settings/general-settings-page.cpp ++++ b/src/pages/general-settings/general-settings-page.cpp +@@ -153,6 +153,13 @@ void GeneralSettingsPage::initUI() + //空闲时是否锁定屏幕及屏保 + m_btn_lockScreen = new KiranSwitchButton(this); + ui->layout_sliderLabel->addWidget(m_btn_lockScreen); ++ ++ //NOTE: 根据#48515缺陷单所做修改,隐藏挂起按钮相关配置项,后续若有需要再进行打开 ++ ui->layout_suspendlabel->setMargin(0); ++ ui->label_suspend->setVisible(false); ++ ++ ui->layout_suspend->setMargin(0); ++ ui->combo_suspendButton->setVisible(false); + } + + void GeneralSettingsPage::initConnection() +diff --git a/src/pages/general-settings/general-settings-page.ui b/src/pages/general-settings/general-settings-page.ui +index bca33de..0ab1909 100644 +--- a/src/pages/general-settings/general-settings-page.ui ++++ b/src/pages/general-settings/general-settings-page.ui +@@ -54,12 +54,12 @@ + + + +- ++ + + 24 + + +- ++ + + When the suspend button is pressed + +@@ -68,7 +68,7 @@ + + + +- ++ + + 10 + +diff --git a/translations/kiran-cpanel-power.zh_CN.ts b/translations/kiran-cpanel-power.zh_CN.ts +index 24099fc..f6ce17b 100644 +--- a/translations/kiran-cpanel-power.zh_CN.ts ++++ b/translations/kiran-cpanel-power.zh_CN.ts +@@ -204,22 +204,22 @@ + 不执行操作 + + +- ++ + ERROR + 错误 + + +- ++ + brightness adjustment not available + 亮度调整不可用 + + +- ++ + %1hour + %1小时 + + +- ++ + %1minute + %1分钟 + +-- +2.27.0 + diff --git a/0003-fix-brightness-abnormal-settings-brightness-8406922f.patch b/0003-fix-brightness-abnormal-settings-brightness-8406922f.patch new file mode 100644 index 0000000..215c856 --- /dev/null +++ b/0003-fix-brightness-abnormal-settings-brightness-8406922f.patch @@ -0,0 +1,38 @@ +From 8406922f40a8527c75e12033106bf938567db8b9 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Wed, 19 Jan 2022 09:18:40 +0800 +Subject: [PATCH 3/5] fix(brightness): abnormal settings brightness +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复亮度设置不正常的问题 + +Closes #48486 +--- + src/pages/general-settings/general-settings-page.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/pages/general-settings/general-settings-page.cpp b/src/pages/general-settings/general-settings-page.cpp +index af5e795..1c2cffa 100644 +--- a/src/pages/general-settings/general-settings-page.cpp ++++ b/src/pages/general-settings/general-settings-page.cpp +@@ -324,13 +324,14 @@ void GeneralSettingsPage::setBrightnessPercent(int percent) + if (percent < 0) + { + ui->slider_brightness->setEnabled(false); ++ m_brightnessValue = 0; + ui->slider_brightness->setValue(0); + ui->label_brightnessPercent->setText(tr("brightness adjustment not available")); + } + else + { + ui->slider_brightness->setEnabled(true); +- ui->slider_brightness->setValue(percent); ++ m_brightnessValue = percent; + ui->label_brightness->setText(QString("%1%").arg(percent)); + } + } +-- +2.27.0 + diff --git a/0004-fix-view-fix-ui-description-error-f3096927.patch b/0004-fix-view-fix-ui-description-error-f3096927.patch new file mode 100644 index 0000000..858297a --- /dev/null +++ b/0004-fix-view-fix-ui-description-error-f3096927.patch @@ -0,0 +1,57 @@ +From f3096927edda40b92fbfc892df14dc22f0e5ef34 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Wed, 19 Jan 2022 10:50:29 +0800 +Subject: [PATCH 4/5] fix(view): fix ui description error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复UI界面描述错误的问题 +--- + src/pages/general-settings/general-settings-page.cpp | 3 ++- + translations/kiran-cpanel-power.zh_CN.ts | 6 +++--- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/pages/general-settings/general-settings-page.cpp b/src/pages/general-settings/general-settings-page.cpp +index 1c2cffa..55e5c47 100644 +--- a/src/pages/general-settings/general-settings-page.cpp ++++ b/src/pages/general-settings/general-settings-page.cpp +@@ -331,8 +331,9 @@ void GeneralSettingsPage::setBrightnessPercent(int percent) + else + { + ui->slider_brightness->setEnabled(true); ++ ui->slider_brightness->setValue(percent); + m_brightnessValue = percent; +- ui->label_brightness->setText(QString("%1%").arg(percent)); ++ ui->label_brightnessPercent->setText(QString("%1%").arg(percent)); + } + } + +diff --git a/translations/kiran-cpanel-power.zh_CN.ts b/translations/kiran-cpanel-power.zh_CN.ts +index f6ce17b..db5bbfb 100644 +--- a/translations/kiran-cpanel-power.zh_CN.ts ++++ b/translations/kiran-cpanel-power.zh_CN.ts +@@ -209,17 +209,17 @@ + 错误 + + +- ++ + brightness adjustment not available + 亮度调整不可用 + + +- ++ + %1hour + %1小时 + + +- ++ + %1minute + %1分钟 + +-- +2.27.0 + diff --git a/0005-fix-brightness-set-minmum-brightness-to-20-957b0262.patch b/0005-fix-brightness-set-minmum-brightness-to-20-957b0262.patch new file mode 100644 index 0000000..0e79e47 --- /dev/null +++ b/0005-fix-brightness-set-minmum-brightness-to-20-957b0262.patch @@ -0,0 +1,95 @@ +From 957b026270e6bd2c707e5065f1c0540e1a33f0a6 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Wed, 19 Jan 2022 11:11:20 +0800 +Subject: [PATCH 5/5] fix(brightness): set minmum brightness to 20% +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 设置最小亮度为20% + +Closes #48486 +--- + .../general-settings-page.cpp | 30 ++++++++++--------- + translations/kiran-cpanel-power.zh_CN.ts | 4 +-- + 2 files changed, 18 insertions(+), 16 deletions(-) + +diff --git a/src/pages/general-settings/general-settings-page.cpp b/src/pages/general-settings/general-settings-page.cpp +index 55e5c47..3c25d3b 100644 +--- a/src/pages/general-settings/general-settings-page.cpp ++++ b/src/pages/general-settings/general-settings-page.cpp +@@ -133,7 +133,7 @@ void GeneralSettingsPage::initUI() + + ///初始化QSlider,和延迟设置的Timer + ui->slider_brightness->setMaximum(100); +- ui->slider_brightness->setMinimum(0); ++ ui->slider_brightness->setMinimum(20); + m_brightnessTimer.setInterval(300); + m_brightnessTimer.setSingleShot(true); + +@@ -254,7 +254,15 @@ void GeneralSettingsPage::load() + monitorBrightnessPercent = monitorBrightnessReply.value(); + } + QSignalBlocker signalBlocker(ui->slider_brightness); +- setBrightnessPercent(monitorBrightnessPercent); ++ if( monitorBrightnessPercent == -1 ) ++ { ++ ui->slider_brightness->setMaximum(ui->slider_brightness->maximum()); ++ ui->slider_brightness->setEnabled(false); ++ } ++ else ++ { ++ setBrightnessPercent(monitorBrightnessPercent); ++ } + + /// idle time + if (m_sessionSettings) +@@ -321,20 +329,14 @@ void GeneralSettingsPage::handleComboBoxCurrentIdxChanged(int idx) + + void GeneralSettingsPage::setBrightnessPercent(int percent) + { +- if (percent < 0) ++ if (percent < ui->slider_brightness->minimum()) + { +- ui->slider_brightness->setEnabled(false); +- m_brightnessValue = 0; +- ui->slider_brightness->setValue(0); +- ui->label_brightnessPercent->setText(tr("brightness adjustment not available")); +- } +- else +- { +- ui->slider_brightness->setEnabled(true); +- ui->slider_brightness->setValue(percent); +- m_brightnessValue = percent; +- ui->label_brightnessPercent->setText(QString("%1%").arg(percent)); ++ percent = ui->slider_brightness->minimum(); + } ++ ++ ui->slider_brightness->setValue(percent); ++ m_brightnessValue = percent; ++ ui->label_brightnessPercent->setText(QString("%1%").arg(percent)); + } + + QSize GeneralSettingsPage::sizeHint() const +diff --git a/translations/kiran-cpanel-power.zh_CN.ts b/translations/kiran-cpanel-power.zh_CN.ts +index db5bbfb..1a46089 100644 +--- a/translations/kiran-cpanel-power.zh_CN.ts ++++ b/translations/kiran-cpanel-power.zh_CN.ts +@@ -214,12 +214,12 @@ + 亮度调整不可用 + + +- ++ + %1hour + %1小时 + + +- ++ + %1minute + %1分钟 + +-- +2.27.0 + diff --git a/kiran-cpanel-power-2.2.0.tar.gz b/kiran-cpanel-power-2.2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9d11d587c8713c526480fc60c3d1cc600c33af64 GIT binary patch literal 27691 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 literal 0 HcmV?d00001 diff --git a/kiran-cpanel-power.spec b/kiran-cpanel-power.spec new file mode 100644 index 0000000..4eb04c5 --- /dev/null +++ b/kiran-cpanel-power.spec @@ -0,0 +1,85 @@ +Name: kiran-cpanel-power +Version: 2.2.0 +Release: 1.kb6 +Summary: Kiran Power Manager +Summary(zh_CN): 电源管理 + +License: Mulan PSL v2 +Source0: %{name}-%{version}.tar.gz +Patch0001: 0000-feature-upower-glib-yse-UPower-glib-to-determine-whe-b09567c6.patch +Patch0002: 0001-refactor-idle-time-Modify-the-setting-form-of-idle-t-40aeb96c.patch +Patch0003: 0002-refactor-view-hide-configuration-items-made-by-suspe-b42c7200.patch +Patch0004: 0003-fix-brightness-abnormal-settings-brightness-8406922f.patch +Patch0005: 0004-fix-view-fix-ui-description-error-f3096927.patch +Patch0006: 0005-fix-brightness-set-minmum-brightness-to-20-957b0262.patch + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtsvg-devel +BuildRequires: kiran-widgets-qt5-devel +BuildRequires: kiran-cc-daemon-devel +BuildRequires: kiran-control-panel-devel +BuildRequires: kiran-log-qt5-devel +BuildRequires: gsettings-qt-devel +BuildRequires: qt5-linguist +BuildRequires: upower-devel + +Requires: qt5-qtbase +Requires: qt5-qtsvg +Requires: kiran-widgets-qt5 +Requires: kiran-session-daemon +Requires: kiran-cpanel-launcher +Requires: kiran-log-qt5 +Requires: gsettings-qt +Requires: kiran-screensaver >= 2.2.0-6 +Requires: upower + +%description +%{summary}. + +%prep +%autosetup -p1 + +%build +%{__mkdir} -p %{buildroot} +%cmake +%make_build + +%install +%make_install + +%post +gtk-update-icon-cache -f /usr/share/icons/hicolor/ + +%files +%doc +%{_datadir}/kiran-control-panel/plugins/libs/libkiran-cpanel-power.so* +%{_datadir}/kiran-control-panel/plugins/desktop/* +%{_datadir}/applications/*.desktop +%{_datadir}/icons/hicolor/* +%{_datadir}/kiran-cpanel-power/translations/*.qm + +%clean +rm -rf %{buildroot} + +%changelog +* Wed Jan 19 2022 liuxinhao - 2.2.0-1.kb6 +- KYOS-F: using upower-glib detect battery +- KYOS-F: refactor idle time +- KYOS-B: fix brightness abnormal settings (#48486) + +* Wed Dec 29 2021 kpkg - 2.2.0-1.kb1 +- rebuild for KY3.4-MATE-modules-dev + +* Wed Dec 29 2021 caoyuanji - 2.2.0-1 +- Upgrade version number for easy upgrade + +* Mon Dec 20 2021 caoyuanji - 2.2.0-0.kb3 +- rebuild for KY3.4-4-KiranUI-2.2 + +* Mon Dec 20 2021 caoyuanji - 2.2.0-0.kb2 +- rebuild for KY3.4-4-KiranUI-2.2 + +* Fri Oct 15 2021 liuxinhao - 2.2.0-0.kb1 +- Initial build