Skip to content

Commit 231f213

Browse files
committed
修复无法持久化保存“清理模式”设置
1 parent 88180d5 commit 231f213

3 files changed

Lines changed: 74 additions & 8 deletions

File tree

app/view/settings/extraction_settings/lottery_settings.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,9 @@ def on_draw_mode_changed(self):
249249

250250
# 根据抽取模式设置不同的控制逻辑
251251
if draw_mode_index == 0: # 重复抽取模式
252+
# 暂时屏蔽信号,防止修改选项时触发不必要的更新
253+
self.clear_record_combo.blockSignals(True)
254+
252255
# 禁用清除抽取记录方式下拉框
253256
self.clear_record_combo.setEnabled(False)
254257
# 清空当前选项
@@ -260,6 +263,10 @@ def on_draw_mode_changed(self):
260263
)
261264
# 强制设置为"无需清除"(索引2)
262265
self.clear_record_combo.setCurrentIndex(2)
266+
267+
# 恢复信号
268+
self.clear_record_combo.blockSignals(False)
269+
263270
# 更新设置
264271
update_settings("lottery_settings", "clear_record", 2)
265272

@@ -274,6 +281,9 @@ def on_draw_mode_changed(self):
274281
# 启用清除抽取记录方式下拉框
275282
self.clear_record_combo.setEnabled(True)
276283

284+
# 暂时屏蔽信号,防止clear()触发更新导致设置被覆盖
285+
self.clear_record_combo.blockSignals(True)
286+
277287
# 清空当前选项
278288
self.clear_record_combo.clear()
279289

@@ -282,8 +292,21 @@ def on_draw_mode_changed(self):
282292
get_content_combo_name_async("lottery_settings", "clear_record")
283293
)
284294

285-
# 设置默认选择第一个选项
286-
self.clear_record_combo.setCurrentIndex(0)
295+
# 读取保存的设置
296+
saved_clear_record = readme_settings_async(
297+
"lottery_settings", "clear_record"
298+
)
299+
300+
# 检查保存的设置是否有效
301+
if 0 <= saved_clear_record < self.clear_record_combo.count():
302+
self.clear_record_combo.setCurrentIndex(saved_clear_record)
303+
else:
304+
self.clear_record_combo.setCurrentIndex(0)
305+
update_settings("lottery_settings", "clear_record", 0)
306+
307+
# 恢复信号
308+
self.clear_record_combo.blockSignals(False)
309+
287310
# 更新设置
288311
update_settings("lottery_settings", "clear_record", 0)
289312

app/view/settings/extraction_settings/quick_draw_settings.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ def on_draw_mode_changed(self):
232232

233233
# 根据抽取模式设置不同的控制逻辑
234234
if draw_mode_index == 0: # 重复抽取模式
235+
# 暂时屏蔽信号,防止修改选项时触发不必要的更新
236+
self.clear_record_combo.blockSignals(True)
237+
235238
# 禁用清除抽取记录方式下拉框
236239
self.clear_record_combo.setEnabled(False)
237240
# 清空当前选项
@@ -243,6 +246,10 @@ def on_draw_mode_changed(self):
243246
)
244247
# 强制设置为"无需清除"(索引2)
245248
self.clear_record_combo.setCurrentIndex(2)
249+
250+
# 恢复信号
251+
self.clear_record_combo.blockSignals(False)
252+
246253
# 更新设置
247254
update_settings("quick_draw_settings", "clear_record", 2)
248255

@@ -257,6 +264,9 @@ def on_draw_mode_changed(self):
257264
# 启用清除抽取记录方式下拉框
258265
self.clear_record_combo.setEnabled(True)
259266

267+
# 暂时屏蔽信号,防止clear()触发更新导致设置被覆盖
268+
self.clear_record_combo.blockSignals(True)
269+
260270
# 清空当前选项
261271
self.clear_record_combo.clear()
262272

@@ -265,8 +275,21 @@ def on_draw_mode_changed(self):
265275
get_content_combo_name_async("quick_draw_settings", "clear_record")
266276
)
267277

268-
# 设置默认选择第一个选项
269-
self.clear_record_combo.setCurrentIndex(0)
278+
# 读取保存的设置
279+
saved_clear_record = readme_settings_async(
280+
"quick_draw_settings", "clear_record"
281+
)
282+
283+
# 检查保存的设置是否有效
284+
if 0 <= saved_clear_record < self.clear_record_combo.count():
285+
self.clear_record_combo.setCurrentIndex(saved_clear_record)
286+
else:
287+
self.clear_record_combo.setCurrentIndex(0)
288+
update_settings("quick_draw_settings", "clear_record", 0)
289+
290+
# 恢复信号
291+
self.clear_record_combo.blockSignals(False)
292+
270293
# 更新设置
271294
update_settings("quick_draw_settings", "clear_record", 0)
272295

app/view/settings/extraction_settings/roll_call_settings.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ def on_draw_mode_changed(self):
221221

222222
# 根据抽取模式设置不同的控制逻辑
223223
if draw_mode_index == 0: # 重复抽取模式
224+
# 暂时屏蔽信号,防止修改选项时触发不必要的更新
225+
self.clear_record_combo.blockSignals(True)
226+
224227
# 禁用清除抽取记录方式下拉框
225228
self.clear_record_combo.setEnabled(False)
226229
# 清空当前选项
@@ -232,6 +235,10 @@ def on_draw_mode_changed(self):
232235
)
233236
# 强制设置为"无需清除"(索引2)
234237
self.clear_record_combo.setCurrentIndex(2)
238+
239+
# 恢复信号
240+
self.clear_record_combo.blockSignals(False)
241+
235242
# 更新设置
236243
update_settings("roll_call_settings", "clear_record", 2)
237244

@@ -246,6 +253,9 @@ def on_draw_mode_changed(self):
246253
# 启用清除抽取记录方式下拉框
247254
self.clear_record_combo.setEnabled(True)
248255

256+
# 暂时屏蔽信号,防止clear()触发更新导致设置被覆盖
257+
self.clear_record_combo.blockSignals(True)
258+
249259
# 清空当前选项
250260
self.clear_record_combo.clear()
251261

@@ -254,10 +264,20 @@ def on_draw_mode_changed(self):
254264
get_content_combo_name_async("roll_call_settings", "clear_record")
255265
)
256266

257-
# 设置默认选择第一个选项
258-
self.clear_record_combo.setCurrentIndex(0)
259-
# 更新设置
260-
update_settings("roll_call_settings", "clear_record", 0)
267+
# 读取保存的设置
268+
saved_clear_record = readme_settings_async(
269+
"roll_call_settings", "clear_record"
270+
)
271+
272+
# 检查保存的设置是否有效
273+
if 0 <= saved_clear_record:
274+
self.clear_record_combo.setCurrentIndex(saved_clear_record)
275+
else:
276+
self.clear_record_combo.setCurrentIndex(0)
277+
update_settings("roll_call_settings", "clear_record", 0)
278+
279+
# 恢复信号
280+
self.clear_record_combo.blockSignals(False)
261281

262282
# 根据具体模式设置half_repeat_spin
263283
if draw_mode_index == 1: # 不重复抽取模式

0 commit comments

Comments
 (0)