新增功能:
- 设置弹窗版本号左对齐,右侧新增「检查更新」入口(节点同款 hover),点击手动触发一次检查更新(后台执行,完成后提示见主界面日志)
This commit is contained in:
+32
-3
@@ -1438,11 +1438,19 @@ class SettingsDialog(QDialog):
|
|||||||
title.setAlignment(Qt.AlignCenter)
|
title.setAlignment(Qt.AlignCenter)
|
||||||
layout.addWidget(title)
|
layout.addWidget(title)
|
||||||
|
|
||||||
# 版本号:标题下固定显示
|
# 版本号(左)+ 手动「检查更新」入口(右,节点同款 hover)
|
||||||
|
ver_row = QHBoxLayout()
|
||||||
ver_lab = QLabel(f"版本号: {VERSION}")
|
ver_lab = QLabel(f"版本号: {VERSION}")
|
||||||
ver_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;")
|
ver_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;")
|
||||||
ver_lab.setAlignment(Qt.AlignCenter)
|
ver_row.addWidget(ver_lab)
|
||||||
layout.addWidget(ver_lab)
|
ver_row.addStretch()
|
||||||
|
self.link_check_update = NodeLabel(
|
||||||
|
"检查更新", tooltip="手动检查更新",
|
||||||
|
base=f"color: {C_SUBTEXT}; font-size: 11px;",
|
||||||
|
hover=f"color: {C_TEXT}; font-size: 11px; text-decoration: underline;")
|
||||||
|
self.link_check_update.clicked.connect(self._manual_check_update)
|
||||||
|
ver_row.addWidget(self.link_check_update)
|
||||||
|
layout.addLayout(ver_row)
|
||||||
|
|
||||||
# 提示语:标题正下方(保存结果/错误也显示在这行)
|
# 提示语:标题正下方(保存结果/错误也显示在这行)
|
||||||
self.lb_hint = QLabel("代理运行中,关闭代理后可修改" if port_locked else "保存更改后下次开启代理生效")
|
self.lb_hint = QLabel("代理运行中,关闭代理后可修改" if port_locked else "保存更改后下次开启代理生效")
|
||||||
@@ -1520,6 +1528,27 @@ class SettingsDialog(QDialog):
|
|||||||
btns.addStretch()
|
btns.addStretch()
|
||||||
layout.addLayout(btns)
|
layout.addLayout(btns)
|
||||||
|
|
||||||
|
def _manual_check_update(self):
|
||||||
|
"""手动触发一次检查更新(后台线程,复用主窗口逻辑)。"""
|
||||||
|
parent = self.parent()
|
||||||
|
if not isinstance(parent, MainWindow):
|
||||||
|
return
|
||||||
|
self.lb_hint.setText("正在检查更新...")
|
||||||
|
self.lb_hint.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;")
|
||||||
|
try:
|
||||||
|
parent._update_done.connect(self._on_check_done)
|
||||||
|
except TypeError:
|
||||||
|
pass # 已连接过,忽略
|
||||||
|
threading.Thread(target=parent._check_update, daemon=True).start()
|
||||||
|
|
||||||
|
def _on_check_done(self):
|
||||||
|
self.lb_hint.setText("检查完成,结果见主界面日志")
|
||||||
|
self.lb_hint.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;")
|
||||||
|
try:
|
||||||
|
self.parent()._update_done.disconnect(self._on_check_done)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
def _save_settings(self):
|
def _save_settings(self):
|
||||||
"""保存更改:统一校验并应用全部设置项(后续新增设置项在此扩展)。"""
|
"""保存更改:统一校验并应用全部设置项(后续新增设置项在此扩展)。"""
|
||||||
port = _parse_port(self.ed_port.text())
|
port = _parse_port(self.ed_port.text())
|
||||||
|
|||||||
Reference in New Issue
Block a user