Skip to content

Commit 555931e

Browse files
committed
侧边栏&页面管理的功能和实时更新
1 parent e7a9fb9 commit 555931e

10 files changed

Lines changed: 633 additions & 281 deletions

File tree

app/Language/modules/custom_settings.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"roll_call_method": {
1313
"name": "点名控制面板位置",
1414
"description": "设置点名控制面板的位置",
15-
"combo_items": ["左侧", "右侧", "左侧底部", "右侧底部"],
15+
"combo_items": ["左侧", "右侧"],
1616
},
1717
"show_name": {
1818
"name": "名称设置按钮",
@@ -54,10 +54,15 @@
5454
"description": "控制是否显示抽取人数/组数的标签",
5555
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
5656
},
57+
"roll_call_remaining_button": {
58+
"name": "查看剩余名单按钮",
59+
"description": "控制是否显示查看剩余名单按钮",
60+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
61+
},
5762
"lottery_method": {
5863
"name": "抽奖控制面板位置",
5964
"description": "设置抽奖控制面板的位置",
60-
"combo_items": ["左侧", "右侧", "左侧底部", "右侧底部"],
65+
"combo_items": ["左侧", "右侧"],
6166
},
6267
"show_lottery_name": {
6368
"name": "名称设置按钮",
@@ -89,10 +94,15 @@
8994
"description": "控制是否显示中奖数量标签",
9095
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
9196
},
97+
"lottery_remaining_button": {
98+
"name": "查看剩余名单按钮",
99+
"description": "控制是否显示查看剩余名单按钮",
100+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
101+
},
92102
"custom_method": {
93103
"name": "自定义抽控制面板位置",
94104
"description": "设置自定义抽控制面板的位置",
95-
"combo_items": ["左侧", "右侧", "左侧底部", "右侧底部"],
105+
"combo_items": ["左侧", "右侧"],
96106
},
97107
"reset_custom": {
98108
"name": "重置自定义抽按钮",
@@ -134,5 +144,10 @@
134144
"description": "控制是否显示自定义抽取人数/组数的标签",
135145
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
136146
},
147+
"custom_remaining_button": {
148+
"name": "查看剩余名单按钮",
149+
"description": "控制是否显示查看剩余名单按钮",
150+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
151+
},
137152
}
138-
}
153+
}

app/Language/modules/sidebar_tray_management.py

Lines changed: 103 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
},
1010
"edge_settings": {"name": "贴边设置", "description": "配置浮动窗口的贴边设置"},
1111
"startup_display_floating_window": {
12-
"name": "软件启动时显示浮窗",
12+
"name": "启动时显示浮窗",
1313
"description": "控制软件启动时是否自动显示浮动窗口",
1414
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
1515
},
@@ -18,7 +18,7 @@
1818
"description": "调整浮动窗口的透明度",
1919
},
2020
"reset_floating_window_position_button": {
21-
"name": "重置浮窗位置按钮",
21+
"name": "重置浮窗位置",
2222
"description": "将浮动窗口位置重置为默认位置",
2323
"pushbutton_name": "重置位置",
2424
},
@@ -45,7 +45,7 @@
4545
],
4646
},
4747
"floating_window_placement": {
48-
"name": "浮窗排列",
48+
"name": "浮窗排列方式",
4949
"description": "设置浮动窗口中控件的排列方式",
5050
"combo_items": ["矩形排列", "竖向排列", "横向排列"],
5151
},
@@ -55,9 +55,9 @@
5555
"combo_items": ["图标+文字", "图标", "文字"],
5656
},
5757
"floating_window_stick_to_edge": {
58-
"name": "贴边设置",
58+
"name": "贴边功能",
5959
"description": "控制浮动窗口是否自动贴边",
60-
"switchbutton_name": {"enable": "贴边", "disable": "不贴边"},
60+
"switchbutton_name": {"enable": "启用", "disable": "禁用"},
6161
},
6262
"floating_window_stick_to_edge_recover_seconds": {
6363
"name": "贴边收纳时间",
@@ -76,7 +76,7 @@
7676
"ZH_CN": {
7777
"title": {
7878
"name": "侧边栏/托盘管理",
79-
"description": "配置侧边栏/托盘管理相关设置",
79+
"description": "配置侧边栏和系统托盘相关设置",
8080
}
8181
}
8282
}
@@ -90,28 +90,120 @@
9090
},
9191
"roll_call_sidebar_position": {
9292
"name": "点名侧边栏位置",
93-
"description": "配置点名侧边栏位置",
93+
"description": "配置点名功能在侧边栏中的位置",
9494
"combo_items": ["顶部", "底部", "不显示"],
9595
},
9696
"custom_roll_call_sidebar_position": {
9797
"name": "自定义抽侧边栏位置",
98-
"description": "配置自定义抽侧边栏位置",
98+
"description": "配置自定义抽功能在侧边栏中的位置",
9999
"combo_items": ["顶部", "底部", "不显示"],
100100
},
101101
"lottery_sidebar_position": {
102102
"name": "抽奖侧边栏位置",
103-
"description": "配置抽奖侧边栏位置",
103+
"description": "配置抽奖功能在侧边栏中的位置",
104104
"combo_items": ["顶部", "底部", "不显示"],
105105
},
106106
"main_window_history": {
107107
"name": "主窗口历史记录位置",
108-
"description": "配置主窗口历史记录位置",
108+
"description": "配置历史记录功能在侧边栏中的位置",
109109
"combo_items": ["顶部", "底部", "不显示"],
110110
},
111111
"settings_icon": {
112112
"name": "设置图标位置",
113-
"description": "配置侧边栏管理设置图标位置",
113+
"description": "配置设置图标在侧边栏中的位置",
114114
"combo_items": ["顶部", "底部", "不显示"],
115115
},
116116
}
117117
}
118+
119+
# 设置窗口侧边栏语言配置
120+
sidebar_management_settings = {
121+
"ZH_CN": {
122+
"title": {
123+
"name": "设置窗口侧边栏",
124+
"description": "配置设置窗口的侧边栏",
125+
},
126+
"home": {
127+
"name": "首页位置",
128+
"description": "设置首页在侧边栏中的位置",
129+
"combo_items": ["顶部", "底部", "不显示"],
130+
},
131+
"base_settings": {
132+
"name": "基础设置位置",
133+
"description": "设置基础设置项在侧边栏中的位置",
134+
"combo_items": ["顶部", "底部", "不显示"],
135+
},
136+
"name_management": {
137+
"name": "名单管理位置",
138+
"description": "设置名单管理项在侧边栏中的位置",
139+
"combo_items": ["顶部", "底部", "不显示"],
140+
},
141+
"draw_settings": {
142+
"name": "抽取设置位置",
143+
"description": "设置抽取设置项在侧边栏中的位置",
144+
"combo_items": ["顶部", "底部", "不显示"],
145+
},
146+
"notification_service": {
147+
"name": "通知服务位置",
148+
"description": "设置通知服务项在侧边栏中的位置",
149+
"combo_items": ["顶部", "底部", "不显示"],
150+
},
151+
"security_settings": {
152+
"name": "安全设置位置",
153+
"description": "设置安全设置项在侧边栏中的位置",
154+
"combo_items": ["顶部", "底部", "不显示"],
155+
},
156+
"personal_settings": {
157+
"name": "个性设置位置",
158+
"description": "设置个性设置项在侧边栏中的位置",
159+
"combo_items": ["顶部", "底部"],
160+
},
161+
"voice_settings": {
162+
"name": "语音设置位置",
163+
"description": "设置语音设置项在侧边栏中的位置",
164+
"combo_items": ["顶部", "底部", "不显示"],
165+
},
166+
"settings_history": {
167+
"name": "设置历史记录位置",
168+
"description": "设置历史记录项在侧边栏中的位置",
169+
"combo_items": ["顶部", "底部", "不显示"],
170+
},
171+
"more_settings": {
172+
"name": "更多设置位置",
173+
"description": "设置更多设置项在侧边栏中的位置",
174+
"combo_items": ["顶部", "底部", "不显示"],
175+
},
176+
}
177+
}
178+
179+
# 托盘管理语言配置
180+
tray_management = {
181+
"ZH_CN": {
182+
"title": {"name": "托盘管理", "description": "配置系统托盘相关设置"},
183+
"show_hide_main_window": {
184+
"name": "暂时显示/隐藏主界面",
185+
"description": "控制主界面的显示和隐藏",
186+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
187+
},
188+
"open_settings": {
189+
"name": "打开设置窗口",
190+
"description": "控制是否在托盘菜单中显示设置窗口选项",
191+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
192+
},
193+
"show_hide_float_window": {
194+
"name": "暂时显示/隐藏浮窗",
195+
"description": "控制浮动窗口的显示和隐藏",
196+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
197+
},
198+
"restart": {
199+
"name": "重启应用",
200+
"description": "控制是否在托盘菜单中显示重启选项",
201+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
202+
},
203+
"exit": {
204+
"name": "退出应用",
205+
"description": "控制是否在托盘菜单中显示退出选项",
206+
"switchbutton_name": {"enable": "显示", "disable": "隐藏"},
207+
},
208+
}
209+
}

app/page_building/main_window_page.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# 导入库
22
from PySide6.QtWidgets import QFrame
3+
from PySide6.QtCore import QTimer
34

45
# 导入页面模板
56
from app.page_building.page_template import PageTemplate
@@ -13,3 +14,34 @@ class roll_call_page(PageTemplate):
1314

1415
def __init__(self, parent: QFrame = None):
1516
super().__init__(content_widget_class=roll_call, parent=parent)
17+
self.roll_call_widget = None
18+
19+
def create_content(self):
20+
"""后台创建内容组件,避免堵塞进程"""
21+
super().create_content()
22+
# 获取点名组件实例并连接信号
23+
if hasattr(self, 'contentWidget'):
24+
self.roll_call_widget = self.contentWidget
25+
# 连接设置变化信号
26+
self.roll_call_widget.settingsChanged.connect(self.handle_settings_change)
27+
28+
def handle_settings_change(self):
29+
"""处理设置变化信号"""
30+
# 清除页面缓存并重新创建
31+
self.clear_content()
32+
QTimer.singleShot(0, self._recreate_content)
33+
34+
def _recreate_content(self):
35+
"""重新创建内容"""
36+
self.create_content()
37+
38+
def clear_content(self):
39+
"""清除内容"""
40+
if self.inner_layout_personal.count() > 0:
41+
item = self.inner_layout_personal.takeAt(0)
42+
if item and item.widget():
43+
widget = item.widget()
44+
widget.setParent(None)
45+
widget.deleteLater()
46+
self.content_created = False
47+
self.contentWidget = None

app/tools/settings_access.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,18 @@ def readme_settings_async(first_level_key: str, second_level_key: str, timeout=1
186186
return readme_settings(first_level_key, second_level_key)
187187

188188

189+
class SettingsSignals(QObject):
190+
"""设置变化信号类"""
191+
settingChanged = Signal(str, str, object) # (first_level_key, second_level_key, value)
192+
193+
# 创建全局信号实例
194+
_settings_signals = SettingsSignals()
195+
196+
def get_settings_signals():
197+
"""获取设置信号实例"""
198+
global _settings_signals
199+
return _settings_signals
200+
189201
def update_settings(first_level_key: str, second_level_key: str, value: Any):
190202
"""更新设置
191203
@@ -222,6 +234,9 @@ def update_settings(first_level_key: str, second_level_key: str, value: Any):
222234
json.dump(settings_data, f, ensure_ascii=False, indent=4)
223235

224236
logger.debug(f"设置更新成功: {first_level_key}.{second_level_key} = {value}")
237+
238+
# 发送设置变化信号
239+
get_settings_signals().settingChanged.emit(first_level_key, second_level_key, value)
225240
except Exception as e:
226241
logger.error(f"设置更新失败: {e}")
227242

app/tools/settings_default_storage.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,13 +358,15 @@
358358
"roll_call_range": {"default_value": True},
359359
"roll_call_gender": {"default_value": True},
360360
"roll_call_quantity_label": {"default_value": True},
361+
"roll_call_remaining_button": {"default_value": True},
361362
"lottery_method": {"default_value": 1},
362363
"show_lottery_name": {"default_value": False},
363364
"reset_lottery": {"default_value": True},
364365
"lottery_quantity_control": {"default_value": True},
365366
"lottery_start_button": {"default_value": True},
366367
"lottery_list": {"default_value": True},
367368
"lottery_quantity_label": {"default_value": True},
369+
"lottery_remaining_button": {"default_value": True},
368370
"custom_method": {"default_value": 1},
369371
"reset_custom": {"default_value": True},
370372
"custom_quantity_control": {"default_value": True},
@@ -374,6 +376,7 @@
374376
"custom_range_end": {"default_value": True},
375377
"draw_custom_method": {"default_value": True},
376378
"custom_quantity_label": {"default_value": True},
379+
"custom_remaining_button": {"default_value": True},
377380
},
378381
"floating_window_management": {
379382
"title": {"default_value": None},

0 commit comments

Comments
 (0)