Skip to content

Commit 751ede8

Browse files
committed
优化 安全操作组件状态管理
- 新增 安全验证窗口参数传递机制 ,通过修改 PageTemplate 和 SimpleWindowTemplate 类,支持向页面组件传递额外参数 - 优化 安全操作组件状态管理 ,为 basic_safety_security_operations 类添加 _update_enabled_state 方法,实现根据全局安全开关状态控制组件启用状态 - 修复 页面创建错误 ,解决 VerifyPasswordWindow 构造函数参数传递问题,通过工厂函数方式正确传递 operation_type 参数 - 修复 安全设置组件缺失方法 ,为 basic_safety_security_operations 类补充 _update_enabled_state 方法,解决属性不存在错误
1 parent 85ca05d commit 751ede8

5 files changed

Lines changed: 464 additions & 241 deletions

File tree

CHANGELOG/v1.3.2-alpha.6/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ v2.0 - Koharu(小鸟游星野) Alpha 6
1313
- 新增 **通知窗口字体设置**,新增通知窗口支持独立的字体设置功能
1414
- 新增 **自动保存窗口大小设置**,新增设置是否自动保存窗口大小功能
1515
- 新增 **预览设置开关**,在**安全设置页面**新增控制是否在打开设置的验证过程中显示预览按钮的功能
16+
- 新增 **安全验证窗口参数传递机制**,通过修改 **PageTemplate****SimpleWindowTemplate** 类,支持向页面组件传递额外参数
1617

1718
## 💡 功能优化
1819

@@ -30,6 +31,7 @@ v2.0 - Koharu(小鸟游星野) Alpha 6
3031
- 优化 **通知窗口字体同步**,优化通知窗口根据类型使用相应功能的字体设置,确保与主界面保持一致
3132
- 优化 **预览功能****预览设置开关**默认为**开启状态**,用户可控制是否在验证过程中显示预览按钮
3233
- 优化 **验证窗口显示逻辑****预览按钮**只在**打开设置**操作时显示,其他验证场景不显示预览按钮
34+
- 优化 **安全操作组件状态管理**,为 **basic_safety_security_operations** 类添加 `_update_enabled_state` 方法,实现根据全局安全开关状态控制组件启用状态
3335

3436
## 🐛 修复问题
3537

@@ -52,6 +54,8 @@ v2.0 - Koharu(小鸟游星野) Alpha 6
5254
- 修复 **U盘验证布局**,优化仅在需要**U盘验证**时才显示相关控件(状态标签和刷新按钮)
5355
- 修复 **安全验证流程**,新增验证通过后**刷新下拉框**显示状态的功能
5456
- 修复 **预览设置开关稳定性**,解决**开关操作**可能导致**软件卡退**的问题,改进**UI状态**处理逻辑避免闪烁
57+
- 修复 **页面创建错误**,解决 **VerifyPasswordWindow** 构造函数参数传递问题,通过工厂函数方式正确传递 **operation_type** 参数
58+
- 修复 **安全设置组件缺失方法**,为 **basic_safety_security_operations** 类补充 `_update_enabled_state` 方法,解决属性不存在错误
5559

5660
## 🔧 其它变更
5761

app/page_building/page_template.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def __init__(
3838
self.content_created = False
3939
self.content_widget_class = content_widget_class
4040
self._is_preview_mode = is_preview_mode
41+
self._content_kwargs = kwargs # 存储传递给内容组件的额外参数
4142

4243
self.__connectSignalToSlot()
4344
self.create_ui_components()
@@ -149,7 +150,8 @@ def create_content(self):
149150
# 如果内容组件尚未创建,创建并添加到布局
150151
if not self.content_created:
151152
# 实例化并添加到延迟创建的布局
152-
self.contentWidget = content_cls(self)
153+
# 传递额外参数给内容组件构造函数
154+
self.contentWidget = content_cls(self, **self._content_kwargs)
153155
self._inner_layout_lazy.addWidget(self.contentWidget)
154156
self.content_created = True
155157

app/page_building/security_window.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,13 @@ def create_unbind_usb_window():
120120

121121
class verify_password_window_template(PageTemplate):
122122
def __init__(self, parent=None, operation_type=None):
123+
def factory(parent):
124+
return VerifyPasswordWindow(parent=parent, operation_type=operation_type)
125+
126+
factory.__name__ = "VerifyPasswordWindow"
123127
super().__init__(
124-
content_widget_class=VerifyPasswordWindow,
128+
content_widget_class=factory,
125129
parent=parent,
126-
operation_type=operation_type,
127130
)
128131

129132

app/page_building/window_template.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -304,16 +304,15 @@ def create_ui_components(self) -> None:
304304
raise
305305

306306
def add_page_from_template(
307-
self, page_name: str, page_class: Type
307+
self, page_name: str, page_class: Type, **kwargs
308308
) -> Optional[QWidget]:
309309
"""
310310
从页面模板添加页面
311311
312312
Args:
313313
page_name: 页面名称(唯一标识)
314314
page_class: 页面类
315-
width: 页面宽度
316-
height: 页面高度
315+
**kwargs: 传递给页面类构造函数的额外参数
317316
318317
Returns:
319318
页面实例,如果创建失败则返回None
@@ -328,8 +327,8 @@ def add_page_from_template(
328327
return self.page_instances[page_name]
329328

330329
try:
331-
# 创建页面实例
332-
page_instance = page_class(self)
330+
# 创建页面实例,传递额外参数
331+
page_instance = page_class(self, **kwargs)
333332

334333
# 设置对象名称
335334
page_instance.setObjectName(page_name)

0 commit comments

Comments
 (0)