mirror of
https://github.com/hyb-oyqq/FRAISEMOE-Addons-Installer-NEXT.git
synced 2025-12-20 05:48:35 +00:00
feat(core): 增强补丁管理和进度反馈功能
- 在主窗口中添加解压进度窗口,提供用户友好的解压反馈。 - 更新补丁检测器和下载管理器,支持异步游戏目录识别和补丁状态检查,提升用户体验。 - 优化哈希验证和解压流程,确保在关键操作中提供详细的进度信息和错误处理。 - 增强日志记录,确保在补丁管理过程中记录详细的调试信息,便于后续排查和用户反馈。
This commit is contained in:
@@ -201,12 +201,14 @@ class HashManager:
|
||||
logger.error(f"Error calculating hash for {file_path}: {e}")
|
||||
return results
|
||||
|
||||
def hash_pop_window(self, check_type="default", is_offline=False):
|
||||
def hash_pop_window(self, check_type="default", is_offline=False, auto_close=False, close_delay=500):
|
||||
"""显示文件检验窗口
|
||||
|
||||
Args:
|
||||
check_type: 检查类型,可以是 'pre'(预检查), 'after'(后检查), 'extraction'(解压后检查), 'offline_extraction'(离线解压), 'offline_verify'(离线验证)
|
||||
is_offline: 是否处于离线模式
|
||||
auto_close: 是否自动关闭窗口
|
||||
close_delay: 自动关闭延迟(毫秒)
|
||||
|
||||
Returns:
|
||||
QMessageBox: 消息框实例
|
||||
@@ -223,6 +225,8 @@ class HashManager:
|
||||
message = "\n正在验证本地补丁压缩文件完整性...\n"
|
||||
elif check_type == "offline_extraction":
|
||||
message = "\n正在解压安装补丁文件...\n"
|
||||
elif check_type == "offline_installation":
|
||||
message = "\n正在安装补丁文件...\n"
|
||||
else:
|
||||
message = "\n正在处理离线补丁文件...\n"
|
||||
else:
|
||||
@@ -233,10 +237,27 @@ class HashManager:
|
||||
message = "\n正在检验本地文件完整性...\n"
|
||||
elif check_type == "extraction":
|
||||
message = "\n正在验证下载的解压文件完整性...\n"
|
||||
elif check_type == "post":
|
||||
message = "\n正在检验补丁文件完整性...\n"
|
||||
|
||||
# 创建新的消息框
|
||||
msg_box = msgbox_frame(f"通知 - {APP_NAME}", message)
|
||||
|
||||
# 使用open()而不是exec(),避免阻塞UI线程
|
||||
msg_box.open()
|
||||
|
||||
# 处理事件循环,确保窗口显示
|
||||
QtWidgets.QApplication.processEvents()
|
||||
|
||||
# 如果设置了自动关闭,添加定时器
|
||||
if auto_close:
|
||||
timer = QtCore.QTimer()
|
||||
timer.setSingleShot(True)
|
||||
timer.timeout.connect(msg_box.close)
|
||||
timer.start(close_delay)
|
||||
# 保存定时器引用,防止被垃圾回收
|
||||
msg_box.close_timer = timer
|
||||
|
||||
return msg_box
|
||||
|
||||
def cfg_pre_hash_compare(self, install_paths, plugin_hash, installed_status):
|
||||
|
||||
Reference in New Issue
Block a user