From 5bdb5ad2bfa21acd5773d0f12790a8296ac8c6e0 Mon Sep 17 00:00:00 2001 From: Zrief <103112786+Zrief@users.noreply.github.com> Date: Thu, 15 May 2025 21:20:30 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E4=BB=AA=E8=A1=A8=E7=9B=98=E6=8E=92=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 可以直接在仪表盘里面开关用户状态了 --- app/ui/Widget.py | 12 ++++++++---- app/ui/member_manager.py | 33 +++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/app/ui/Widget.py b/app/ui/Widget.py index cf7f201..7b73003 100644 --- a/app/ui/Widget.py +++ b/app/ui/Widget.py @@ -311,12 +311,16 @@ class SwitchSettingCard(SettingCard): self.switchButton.setChecked(isChecked) self.switchButton.setText(self.tr("On") if isChecked else self.tr("Off")) + + # 这两个函数似乎没用?我注释掉仍能运行。 + # setChecked是qfluentw中SwitchButton类的内置方法, + # Example:switchButton.setChecked(True)# 更改按钮状态为打开 - def setChecked(self, isChecked: bool): - self.setValue(isChecked) + # def setChecked(self, isChecked: bool): + # self.setValue(isChecked) - def isChecked(self): - return self.switchButton.isChecked() + # def isChecked(self): + # return self.switchButton.isChecked() class RangeSettingCard(SettingCard): diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 1e7c407..2a4014e 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -47,8 +47,9 @@ from qfluentwidgets import ( PushSettingCard, TableWidget, PrimaryToolButton, + SwitchButton, ) -from PySide6.QtCore import Signal +from PySide6.QtCore import Signal,Qt from datetime import datetime from functools import partial from pathlib import Path @@ -1162,6 +1163,12 @@ class MemberManager(QWidget): Config.PASSWORD_refreshed.connect(self.load_info) def load_info(self): + # 使用闭包工厂函数捕获当前config: + def create_handler(config_obj): + def handler(checked): + # 使用配置项的set方法自动触发信号 + config_obj.set(config_obj.Info_Status, checked) + return handler self.user_data = Config.member_dict[self.name]["UserData"] @@ -1170,6 +1177,7 @@ class MemberManager(QWidget): for name, info in self.user_data.items(): config = info["Config"] + handler = create_handler(config) text_list = [] if not config.get(config.Data_IfPassCheck): @@ -1190,6 +1198,7 @@ class MemberManager(QWidget): else "本周剿灭未完成" ) + # 跳转按钮 button = PrimaryToolButton( FluentIcon.CHEVRON_RIGHT, self ) @@ -1198,6 +1207,15 @@ class MemberManager(QWidget): partial(self.switch_to.emit, name) ) + # 状态开关 + switch_button = SwitchButton() + switch_button.setOffText("") + switch_button.setOnText("") + switch_button.setChecked(True if config.get(config.Info_Status) + and config.get(config.Info_RemainedDay) != 0 else False )# 初始化开关状态 + # 将开关的bool同步 + switch_button.checkedChanged.connect(handler) + self.dashboard.setItem( int(name[3:]) - 1, 0, @@ -1220,15 +1238,10 @@ class MemberManager(QWidget): else "******" ), ) - self.dashboard.setItem( - int(name[3:]) - 1, - 3, - QTableWidgetItem( - "启用" - if config.get(config.Info_Status) - and config.get(config.Info_RemainedDay) != 0 - else "禁用" - ), + self.dashboard.setCellWidget( + int(name[3:]) - 1, + 3, + switch_button ) self.dashboard.setItem( int(name[3:]) - 1, From 5d966f98dfdc984dbbdcc7365239fea1e673e7d3 Mon Sep 17 00:00:00 2001 From: Zrief <103112786+Zrief@users.noreply.github.com> Date: Fri, 16 May 2025 21:53:03 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=B8=8D=E5=AE=8C=E5=A4=87=E7=9A=84=E5=9C=B0=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/ui/member_manager.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 2a4014e..b7b0932 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -1211,8 +1211,7 @@ class MemberManager(QWidget): switch_button = SwitchButton() switch_button.setOffText("") switch_button.setOnText("") - switch_button.setChecked(True if config.get(config.Info_Status) - and config.get(config.Info_RemainedDay) != 0 else False )# 初始化开关状态 + switch_button.setChecked(config.get(config.Info_Status))# 初始化开关状态 # 将开关的bool同步 switch_button.checkedChanged.connect(handler) From aa83058e39b8d834a4fe20c5cdc280677e757848 Mon Sep 17 00:00:00 2001 From: Zrief <103112786+Zrief@users.noreply.github.com> Date: Fri, 16 May 2025 21:56:20 +0800 Subject: [PATCH 3/5] Update member_manager.py --- app/ui/member_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 746d302..9f2922f 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -49,7 +49,7 @@ from qfluentwidgets import ( PrimaryToolButton, SwitchButton, ) -from PySide6.QtCore import Signal,Qt +from PySide6.QtCore import Signal from datetime import datetime from functools import partial from pathlib import Path From 1162d5dcc1312e431d8a057b603531d29e0d159a Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Fri, 16 May 2025 22:50:54 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat(ui):=20=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E5=89=A9=E4=BD=99=E5=A4=A9=E6=95=B0=E4=B8=BA0=E7=9A=84?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 2 +- app/ui/Widget.py | 12 ++++-------- app/ui/member_manager.py | 11 +++++++---- resources/version.json | 7 ++++++- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 9752465..77cfbbf 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -563,7 +563,7 @@ class MaaPlanConfig(LQConfig): class AppConfig(GlobalConfig): - VERSION = "4.3.8.2" + VERSION = "4.3.8.3" gameid_refreshed = Signal() PASSWORD_refreshed = Signal() diff --git a/app/ui/Widget.py b/app/ui/Widget.py index 7b73003..cf7f201 100644 --- a/app/ui/Widget.py +++ b/app/ui/Widget.py @@ -311,16 +311,12 @@ class SwitchSettingCard(SettingCard): self.switchButton.setChecked(isChecked) self.switchButton.setText(self.tr("On") if isChecked else self.tr("Off")) - - # 这两个函数似乎没用?我注释掉仍能运行。 - # setChecked是qfluentw中SwitchButton类的内置方法, - # Example:switchButton.setChecked(True)# 更改按钮状态为打开 - # def setChecked(self, isChecked: bool): - # self.setValue(isChecked) + def setChecked(self, isChecked: bool): + self.setValue(isChecked) - # def isChecked(self): - # return self.switchButton.isChecked() + def isChecked(self): + return self.switchButton.isChecked() class RangeSettingCard(SettingCard): diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 9f2922f..0de0e92 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -1178,6 +1178,7 @@ class MemberManager(QWidget): def handler(checked): # 使用配置项的set方法自动触发信号 config_obj.set(config_obj.Info_Status, checked) + return handler self.user_data = Config.member_dict[self.name]["UserData"] @@ -1221,7 +1222,11 @@ class MemberManager(QWidget): switch_button = SwitchButton() switch_button.setOffText("") switch_button.setOnText("") - switch_button.setChecked(config.get(config.Info_Status))# 初始化开关状态 + # 初始化开关状态 + switch_button.setChecked(config.get(config.Info_Status)) + switch_button.setEnabled( + config.get(config.Info_RemainedDay) != 0 + ) # 将开关的bool同步 switch_button.checkedChanged.connect(handler) @@ -1248,9 +1253,7 @@ class MemberManager(QWidget): ), ) self.dashboard.setCellWidget( - int(name[3:]) - 1, - 3, - switch_button + int(name[3:]) - 1, 3, switch_button ) self.dashboard.setItem( int(name[3:]) - 1, diff --git a/resources/version.json b/resources/version.json index c4f9648..071b9bc 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,6 +1,11 @@ { - "main_version": "4.3.8.2", + "main_version": "4.3.8.3", "version_info": { + "4.3.8.3": { + "新增功能": [ + "用户仪表盘支持直接控制用户状态" + ] + }, "4.3.8.2": { "新增功能": [ "添加ADB端口号宽幅适配能力" From 803fe4568fcd9c55d2e17f2a2814176031058af3 Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Fri, 16 May 2025 23:23:02 +0800 Subject: [PATCH 5/5] =?UTF-8?q?chore(ui):=20=E4=BC=98=E5=8C=96=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/ui/Widget.py | 32 ++++++++++++++++++++++++++++++++ app/ui/member_manager.py | 32 +++++++++----------------------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/app/ui/Widget.py b/app/ui/Widget.py index cf7f201..55b3c1d 100644 --- a/app/ui/Widget.py +++ b/app/ui/Widget.py @@ -933,6 +933,38 @@ class TimeEditSettingCard(SettingCard): self.TimeEdit.setTime(QTime.fromString(value, "HH:mm")) +class StatusSwitchSetting(SwitchButton): + + def __init__( + self, + qconfig: QConfig, + configItem_check: ConfigItem, + configItem_enable: ConfigItem, + parent=None, + ): + super().__init__(parent) + self.qconfig = qconfig + self.configItem_check = configItem_check + self.configItem_enable = configItem_enable + self.setOffText("") + self.setOnText("") + + if configItem_check: + self.setValue(self.qconfig.get(configItem_check)) + configItem_check.valueChanged.connect(self.setValue) + if configItem_enable: + self.setEnabled(self.qconfig.get(configItem_enable)) + configItem_enable.valueChanged.connect(self.setEnabled) + + self.checkedChanged.connect(self.setValue) + + def setValue(self, isChecked: bool): + if self.configItem_check: + self.qconfig.set(self.configItem_check, isChecked) + + self.setChecked(isChecked) + + class HistoryCard(HeaderCardWidget): def __init__(self, qconfig: QConfig, configItem: ConfigItem, parent=None): diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 0de0e92..34ff739 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -47,7 +47,6 @@ from qfluentwidgets import ( PushSettingCard, TableWidget, PrimaryToolButton, - SwitchButton, ) from PySide6.QtCore import Signal from datetime import datetime @@ -72,6 +71,7 @@ from .Widget import ( SwitchSettingCard, PushAndSwitchButtonSettingCard, PushAndComboBoxSettingCard, + StatusSwitchSetting, PivotArea, ) @@ -1173,13 +1173,6 @@ class MemberManager(QWidget): Config.PASSWORD_refreshed.connect(self.load_info) def load_info(self): - # 使用闭包工厂函数捕获当前config: - def create_handler(config_obj): - def handler(checked): - # 使用配置项的set方法自动触发信号 - config_obj.set(config_obj.Info_Status, checked) - - return handler self.user_data = Config.member_dict[self.name]["UserData"] @@ -1188,7 +1181,6 @@ class MemberManager(QWidget): for name, info in self.user_data.items(): config = info["Config"] - handler = create_handler(config) text_list = [] if not config.get(config.Data_IfPassCheck): @@ -1209,7 +1201,6 @@ class MemberManager(QWidget): else "本周剿灭未完成" ) - # 跳转按钮 button = PrimaryToolButton( FluentIcon.CHEVRON_RIGHT, self ) @@ -1218,18 +1209,6 @@ class MemberManager(QWidget): partial(self.switch_to.emit, name) ) - # 状态开关 - switch_button = SwitchButton() - switch_button.setOffText("") - switch_button.setOnText("") - # 初始化开关状态 - switch_button.setChecked(config.get(config.Info_Status)) - switch_button.setEnabled( - config.get(config.Info_RemainedDay) != 0 - ) - # 将开关的bool同步 - switch_button.checkedChanged.connect(handler) - self.dashboard.setItem( int(name[3:]) - 1, 0, @@ -1253,7 +1232,14 @@ class MemberManager(QWidget): ), ) self.dashboard.setCellWidget( - int(name[3:]) - 1, 3, switch_button + int(name[3:]) - 1, + 3, + StatusSwitchSetting( + qconfig=config, + configItem_check=config.Info_Status, + configItem_enable=config.Info_RemainedDay, + parent=self, + ), ) self.dashboard.setItem( int(name[3:]) - 1,