From dab2ba2dc5ece309317fbcf2ebff225412953017 Mon Sep 17 00:00:00 2001 From: hyb-oyqq <1512383570@qq.com> Date: Thu, 24 Jul 2025 16:57:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E4=BC=98=E5=8C=96=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E7=BB=93=E6=9E=9C=E6=98=BE=E7=A4=BA=E5=92=8C=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化 Cloudflare 加速提示信息格式 - 增加下载历史记录列表,跟踪本次安装的游戏 - 改进安装结果显示,区分不同情况 - 优化哈希检查提示信息 --- source/core/download_manager.py | 13 ++++++- source/main_window.py | 67 ++++++++++++++++++++++++++++----- source/utils/helpers.py | 4 +- 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/source/core/download_manager.py b/source/core/download_manager.py index a11fe98..1db24e8 100644 --- a/source/core/download_manager.py +++ b/source/core/download_manager.py @@ -142,6 +142,9 @@ class DownloadManager: # 禁用开始安装按钮 self.main_window.ui.start_install_btn.setEnabled(False) + # 清空下载历史记录 + self.main_window.download_queue_history = [] + # 显示哈希检查窗口 self.main_window.hash_msg_box = self.main_window.hash_manager.hash_pop_window(check_type="pre") @@ -185,7 +188,7 @@ class DownloadManager: # 询问用户是否使用Cloudflare加速 msg_box = QtWidgets.QMessageBox(self.main_window) msg_box.setWindowTitle(f"下载优化 - {APP_NAME}") - msg_box.setText("是否愿意通过Cloudflare加速来优化下载速度?\n\n这将临时修改系统的hosts文件,并需要管理员权限。如您的杀毒软件提醒有软件正在修改hosts文件,请注意放行。") + msg_box.setText("是否愿意通过Cloudflare加速来优化下载速度?\n\n这将临时修改系统的hosts文件,并需要管理员权限。\n如您的杀毒软件提醒有软件正在修改hosts文件,请注意放行。") # 设置Cloudflare图标 cf_icon_path = resource_path("IMG/ICO/cloudflare_logo_icon.ico") @@ -221,6 +224,10 @@ class DownloadManager: # 清空现有队列 self.download_queue.clear() + # 创建下载历史记录列表,用于跟踪本次安装的游戏 + if not hasattr(self.main_window, 'download_queue_history'): + self.main_window.download_queue_history = [] + # 添加nekopara 1-4 for i in range(1, 5): game_version = f"NEKOPARA Vol.{i}" @@ -231,6 +238,8 @@ class DownloadManager: _7z_path = os.path.join(PLUGIN, f"vol.{i}.7z") plugin_path = os.path.join(PLUGIN, GAME_INFO[game_version]["plugin_path"]) self.download_queue.append((url, game_folder, game_version, _7z_path, plugin_path)) + # 记录到下载历史 + self.main_window.download_queue_history.append(game_version) # 添加nekopara after game_version = "NEKOPARA After" @@ -241,6 +250,8 @@ class DownloadManager: _7z_path = os.path.join(PLUGIN, "after.7z") plugin_path = os.path.join(PLUGIN, GAME_INFO[game_version]["plugin_path"]) self.download_queue.append((url, game_folder, game_version, _7z_path, plugin_path)) + # 记录到下载历史 + self.main_window.download_queue_history.append(game_version) def _start_ip_optimization(self, url): """开始IP优化过程 diff --git a/source/main_window.py b/source/main_window.py index e5cb6aa..163dda0 100644 --- a/source/main_window.py +++ b/source/main_window.py @@ -299,18 +299,65 @@ class MainWindow(QMainWindow): QTimer.singleShot(100, self.show_result) def show_result(self): - """显示安装结果""" - installed_version = "\n".join( - [i for i in self.installed_status if self.installed_status[i]] - ) - failed_ver = "\n".join( - [i for i in self.installed_status if not self.installed_status[i]] - ) + """显示安装结果,区分不同情况""" + # 获取当前安装状态 + installed_versions = [] # 成功安装的版本 + skipped_versions = [] # 已有补丁跳过的版本 + failed_versions = [] # 安装失败的版本 + not_found_versions = [] # 未找到的版本 + + # 获取所有游戏版本路径 + install_paths = self.download_manager.get_install_paths() if hasattr(self.download_manager, "get_install_paths") else {} + + for game_version, is_installed in self.installed_status.items(): + path = install_paths.get(game_version, "") + + # 检查游戏是否存在但未通过本次安装补丁 + if is_installed: + # 游戏已安装补丁 + if hasattr(self, 'download_queue_history') and game_version not in self.download_queue_history: + # 已有补丁,被跳过下载 + skipped_versions.append(game_version) + else: + # 本次成功安装 + installed_versions.append(game_version) + else: + # 游戏未安装补丁 + if os.path.exists(path): + # 游戏文件夹存在,但安装失败 + failed_versions.append(game_version) + else: + # 游戏文件夹不存在 + not_found_versions.append(game_version) + + # 构建结果信息 + result_text = f"\n安装结果:\n" + + # 总数统计 + total_installed = len(installed_versions) + total_skipped = len(skipped_versions) + total_failed = len(failed_versions) + + result_text += f"安装成功:{total_installed} 个 已跳过:{total_skipped} 个 安装失败:{total_failed} 个\n\n" + + # 详细列表 + if installed_versions: + result_text += f"【成功安装】:\n{chr(10).join(installed_versions)}\n\n" + + if skipped_versions: + result_text += f"【已安装跳过】:\n{chr(10).join(skipped_versions)}\n\n" + + if failed_versions: + result_text += f"【安装失败】:\n{chr(10).join(failed_versions)}\n\n" + + if not_found_versions and (installed_versions or failed_versions): + # 只有当有其他版本存在时,才显示未找到的版本 + result_text += f"【未在指定目录找到】:\n{chr(10).join(not_found_versions)}\n" + QMessageBox.information( self, - f"完成 - {APP_NAME}", - f"\n安装结果:\n安装成功数:{len(installed_version.splitlines())} 安装失败数:{len(failed_ver.splitlines())}\n" - f"安装成功的版本:\n{installed_version}\n尚未持有或未使用本工具安装补丁的版本:\n{failed_ver}\n", + f"安装完成 - {APP_NAME}", + result_text ) def closeEvent(self, event): diff --git a/source/utils/helpers.py b/source/utils/helpers.py index 1e2ffb7..3ab61df 100644 --- a/source/utils/helpers.py +++ b/source/utils/helpers.py @@ -113,9 +113,9 @@ class HashManager: if check_type == "pre": message = "\n正在检查游戏文件以确定需要安装的补丁...\n" elif check_type == "after": - message = "\n正在检验文件完整性...\n" + message = "\n正在检验本地文件完整性...\n" elif check_type == "extraction": - message = "\n正在验证解压文件的完整性...\n" + message = "\n正在验证下载的解压文件完整性...\n" msg_box = msgbox_frame(f"通知 - {APP_NAME}", message) msg_box.open()