From d4d479ca2087c3f52668838400b82d8421093db7 Mon Sep 17 00:00:00 2001 From: DLmaster Date: Fri, 14 Mar 2025 23:06:51 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(ui):=20=E5=85=B3=E6=9C=BA=E7=AD=89?= =?UTF-8?q?=E7=94=B5=E6=BA=90=E6=93=8D=E4=BD=9C=E6=B7=BB=E5=8A=A0100s?= =?UTF-8?q?=E5=80=92=E8=AE=A1=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/task_manager.py | 28 +++++++++++++++++++---- app/ui/Widget.py | 49 +++++++++++++++++++++++++++++++++++++++- app/ui/__init__.py | 3 ++- app/ui/main_window.py | 5 +++- resources/version.json | 2 +- 5 files changed, 78 insertions(+), 9 deletions(-) diff --git a/app/core/task_manager.py b/app/core/task_manager.py index afe43fa..4790a18 100644 --- a/app/core/task_manager.py +++ b/app/core/task_manager.py @@ -27,7 +27,7 @@ v4.2 from loguru import logger from PySide6.QtCore import QThread, QObject, Signal -from qfluentwidgets import Dialog +from qfluentwidgets import MessageBox import json from pathlib import Path from datetime import datetime @@ -187,9 +187,10 @@ class _TaskManager(QObject): connect_gui = Signal(Task) push_info_bar = Signal(str, str, str, int) - def __init__(self): + def __init__(self, main_window=None): super(_TaskManager, self).__init__() + self.main_window = main_window self.task_dict: Dict[str, Task] = {} def add_task( @@ -281,16 +282,33 @@ class _TaskManager(QObject): "r", encoding="utf-8" ) as f: info = json.load(f) - System.set_power(info["QueueSet"]["AfterAccomplish"]) + + if info["QueueSet"]["AfterAccomplish"] != "None": + + from app.ui import ProgressRingMessageBox + + mode_book = { + "Shutdown": "关机", + "Hibernate": "休眠", + "Sleep": "睡眠", + "KillSelf": "关闭AUTO_MAA", + } + + choice = ProgressRingMessageBox( + self.main_window, + f"{mode_book[info['QueueSet']['AfterAccomplish']]}倒计时", + ) + if choice.exec(): + System.set_power(info["QueueSet"]["AfterAccomplish"]) def push_dialog(self, name: str, title: str, content: str): """推送对话框""" - choice = Dialog(title, content, None) + choice = MessageBox(title, content, self.main_window) choice.yesButton.setText("是") choice.cancelButton.setText("否") - self.task_dict[name].question_response.emit(bool(choice.exec_())) + self.task_dict[name].question_response.emit(bool(choice.exec())) TaskManager = _TaskManager() diff --git a/app/ui/Widget.py b/app/ui/Widget.py index edd58bb..315d18f 100644 --- a/app/ui/Widget.py +++ b/app/ui/Widget.py @@ -26,7 +26,7 @@ v4.2 """ from PySide6.QtWidgets import QWidget, QWidget, QLabel, QHBoxLayout, QSizePolicy -from PySide6.QtCore import Qt, QTime, QEvent, QSize +from PySide6.QtCore import Qt, QTime, QTimer, QEvent, QSize from PySide6.QtGui import QIcon, QPixmap, QPainter, QPainterPath from qfluentwidgets import ( LineEdit, @@ -54,6 +54,7 @@ from qfluentwidgets import ( ExpandSettingCard, ToolButton, PushButton, + ProgressRing, ) from qfluentwidgets.common.overload import singledispatchmethod import os @@ -108,6 +109,52 @@ class ComboBoxMessageBox(MessageBoxBase): self.viewLayout.addWidget(Widget) +class ProgressRingMessageBox(MessageBoxBase): + """进度环倒计时对话框""" + + def __init__(self, parent, title: str): + super().__init__(parent) + self.title = SubtitleLabel(title) + + self.time = 100 + Widget = QWidget() + Layout = QHBoxLayout(Widget) + self.ring = ProgressRing() + self.ring.setRange(0, 100) + self.ring.setValue(100) + self.ring.setTextVisible(True) + self.ring.setFormat("%p 秒") + self.ring.setFixedSize(100, 100) + self.ring.setStrokeWidth(4) + Layout.addWidget(self.ring) + + self.yesButton.hide() + self.cancelButton.clicked.connect(self.__quit_timer) + self.buttonLayout.insertStretch(1) + + # 将组件添加到布局中 + self.viewLayout.addWidget(self.title) + self.viewLayout.addWidget(Widget) + + self.timer = QTimer(self) + self.timer.timeout.connect(self.__update_time) + self.timer.start(1000) + + def __update_time(self): + + self.time -= 1 + self.ring.setValue(self.time) + + if self.time == 0: + self.timer.stop() + self.timer.deleteLater() + self.yesButton.click() + + def __quit_timer(self): + self.timer.stop() + self.timer.deleteLater() + + class LineEditSettingCard(SettingCard): """Setting card with LineEdit""" diff --git a/app/ui/__init__.py b/app/ui/__init__.py index 3764f04..419aac6 100644 --- a/app/ui/__init__.py +++ b/app/ui/__init__.py @@ -30,5 +30,6 @@ __author__ = "DLmaster361 " __license__ = "GPL-3.0 license" from .main_window import AUTO_MAA +from .Widget import ProgressRingMessageBox -__all__ = ["AUTO_MAA"] +__all__ = ["AUTO_MAA", "ProgressRingMessageBox"] diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 0873338..ecf32ab 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -72,6 +72,7 @@ class AUTO_MAA(MSFluentWindow): self.splashScreen = SplashScreen(self.windowIcon(), self) self.show_ui("显示主窗口", if_quick=True) + TaskManager.main_window = self.window() MainInfoBar.main_window = self.window() System.main_window = self.window() @@ -260,7 +261,9 @@ class AUTO_MAA(MSFluentWindow): ) if "网络错误" not in result: Up = PushButton("更新") - Up.clicked.connect(lambda: self.setting.get_update(if_question=False)) + Up.clicked.connect( + lambda: self.setting.get_update(if_question=False) + ) Up.clicked.connect(info.close) info.addWidget(Up) info.show() diff --git a/resources/version.json b/resources/version.json index 6cc1ae4..e00c5c6 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,7 +1,7 @@ { "main_version": "4.2.5.2", "updater_version": "1.2.0.0", - "announcement": "\n## 新增功能\n- 屏蔽MuMu模拟器开屏广告功能上线\n- 更新器支持多线程下载\n## 修复BUG\n- 修复统计信息HTML模板公招匹配错误\n- 修复密码显示按钮动画异常\n## 程序优化\n- 暂无", + "announcement": "\n## 新增功能\n- 屏蔽MuMu模拟器开屏广告功能上线\n- 更新器支持多线程下载\n## 修复BUG\n- 修复统计信息HTML模板公招匹配错误\n- 修复密码显示按钮动画异常\n## 程序优化\n- 关机等电源操作添加100s倒计时", "proxy_list": [ "", "https://gitproxy.click/", From d52856180a5fc513a2ea50046e40aed6fe8ff117 Mon Sep 17 00:00:00 2001 From: DLmaster Date: Fri, 14 Mar 2025 23:35:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(maa):=20=E4=BA=BA=E5=B7=A5=E6=8E=92?= =?UTF-8?q?=E6=9F=A5=E5=BC=B9=E7=AA=97=E6=96=B9=E6=B3=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/MAA.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/MAA.py b/app/models/MAA.py index 28938d7..b242302 100644 --- a/app/models/MAA.py +++ b/app/models/MAA.py @@ -67,11 +67,16 @@ class MaaManager(QObject): self.mode = mode self.config_path = config_path self.user_config_path = user_config_path + self.log_monitor = QFileSystemWatcher() self.log_monitor_timer = QTimer() self.log_monitor_timer.timeout.connect(self.refresh_maa_log) self.monitor_loop = QEventLoop() + self.question_loop = QEventLoop() + self.question_response.connect(self.__capture_response) + self.question_response.connect(self.question_loop.quit) + self.interrupt.connect(self.quit_monitor) with (self.config_path / "config.json").open("r", encoding="utf-8") as f: @@ -562,14 +567,12 @@ class MaaManager(QObject): def push_question(self, title: str, message: str) -> bool: self.question.emit(title, message) - loop = QEventLoop() - self.question_response.connect(self._capture_response) - self.question_response.connect(loop.quit) - loop.exec() + self.question_loop.exec() return self.response - def _capture_response(self, response: bool) -> None: + def __capture_response(self, response: bool) -> None: self.response = response + print(response) def refresh_maa_log(self) -> None: """刷新MAA日志""" From 6ee577302f940e1a378954127ce19d335c2f73b3 Mon Sep 17 00:00:00 2001 From: DLmaster Date: Fri, 14 Mar 2025 23:59:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(core):=20=E4=BA=BA=E5=B7=A5=E6=8E=92?= =?UTF-8?q?=E6=9F=A5=E6=97=B6=E8=87=AA=E5=8A=A8=E5=B1=8F=E8=94=BD=E9=9D=99?= =?UTF-8?q?=E9=BB=98=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 1 + app/core/timer.py | 3 ++- app/models/MAA.py | 7 ++++++- resources/version.json | 4 ++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 9dcd8fd..57cd4e5 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -68,6 +68,7 @@ class AppConfig: self.PASSWORD = "" self.running_list = [] self.silence_list = [] + self.if_ignore_silence = False self.if_database_opened = False # 检查文件完整性 diff --git a/app/core/timer.py b/app/core/timer.py index 449ceba..99de8f9 100644 --- a/app/core/timer.py +++ b/app/core/timer.py @@ -84,7 +84,8 @@ class _MainTimer(QWidget): """设置静默模式""" if ( - Config.global_config.get(Config.global_config.function_IfSilence) + not Config.if_ignore_silence + and Config.global_config.get(Config.global_config.function_IfSilence) and Config.global_config.get(Config.global_config.function_BossKey) != "" ): diff --git a/app/models/MAA.py b/app/models/MAA.py index b242302..cd66a38 100644 --- a/app/models/MAA.py +++ b/app/models/MAA.py @@ -365,6 +365,9 @@ class MaaManager(QObject): # 人工排查模式 elif self.mode == "人工排查": + # 人工排查时,屏蔽静默操作 + Config.if_ignore_silence = True + # 标记是否需要启动模拟器 self.if_open_emulator = True # 标识排查模式 @@ -463,6 +466,9 @@ class MaaManager(QObject): self.update_user_list.emit(self.user_list) + # 解除静默操作屏蔽 + Config.if_ignore_silence = False + # 设置MAA模式 elif "设置MAA" in self.mode: @@ -572,7 +578,6 @@ class MaaManager(QObject): def __capture_response(self, response: bool) -> None: self.response = response - print(response) def refresh_maa_log(self) -> None: """刷新MAA日志""" diff --git a/resources/version.json b/resources/version.json index e00c5c6..e219ade 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,7 +1,7 @@ { - "main_version": "4.2.5.2", + "main_version": "4.2.5.3", "updater_version": "1.2.0.0", - "announcement": "\n## 新增功能\n- 屏蔽MuMu模拟器开屏广告功能上线\n- 更新器支持多线程下载\n## 修复BUG\n- 修复统计信息HTML模板公招匹配错误\n- 修复密码显示按钮动画异常\n## 程序优化\n- 关机等电源操作添加100s倒计时", + "announcement": "\n## 新增功能\n- 屏蔽MuMu模拟器开屏广告功能上线\n- 更新器支持多线程下载\n## 修复BUG\n- 修复统计信息HTML模板公招匹配错误\n- 修复密码显示按钮动画异常\n## 程序优化\n- 关机等电源操作添加100s倒计时\n- 人工排查弹窗方法优化\n- 人工排查时自动屏蔽静默操作", "proxy_list": [ "", "https://gitproxy.click/",