feat(core): 添加调度队列完成任务后行为选项

This commit is contained in:
DLmaster
2025-02-06 23:33:00 +08:00
parent fb7a429ff2
commit 7f5478b098
11 changed files with 127 additions and 78 deletions

View File

@@ -499,6 +499,7 @@ class AppConfig:
self.queue_config.set(self.queue_config.queueSet_Name, "")
self.queue_config.set(self.queue_config.queueSet_Enabled, False)
self.queue_config.set(self.queue_config.queueSet_AfterAccomplish, "None")
self.queue_config.set(self.queue_config.time_TimeEnabled_0, False)
self.queue_config.set(self.queue_config.time_TimeSet_0, "00:00")
@@ -542,8 +543,6 @@ class GlobalConfig(QConfig):
function_IfSilence = ConfigItem("Function", "IfSilence", False, BoolValidator())
function_BossKey = ConfigItem("Function", "BossKey", "")
function_AutoShutdown = ConfigItem("Function", "AutoShutdown", False, BoolValidator())
start_IfSelfStart = ConfigItem("Start", "IfSelfStart", False, BoolValidator())
start_IfRunDirectly = ConfigItem("Start", "IfRunDirectly", False, BoolValidator())
@@ -581,6 +580,12 @@ class QueueConfig(QConfig):
queueSet_Name = ConfigItem("QueueSet", "Name", "")
queueSet_Enabled = ConfigItem("QueueSet", "Enabled", False, BoolValidator())
queueSet_AfterAccomplish = OptionsConfigItem(
"QueueSet",
"AfterAccomplish",
"None",
OptionsValidator(["None", "KillSelf", "Sleep", "Hibernate", "Shutdown"]),
)
time_TimeEnabled_0 = ConfigItem("Time", "TimeEnabled_0", False, BoolValidator())
time_TimeSet_0 = ConfigItem("Time", "TimeSet_0", "00:00")

View File

@@ -36,14 +36,14 @@ from qfluentwidgets import (
class _MainInfoBar:
"""信息通知栏"""
def __init__(self, parent=None):
def __init__(self, main_window=None):
self.parent = parent
self.main_window = main_window
def push_info_bar(self, mode: str, title: str, content: str, time: int):
"""推送到信息通知栏"""
if self.parent is None:
if self.main_window is None:
logger.error("信息通知栏未设置父窗口")
return None
@@ -55,7 +55,7 @@ class _MainInfoBar:
isClosable=True,
position=InfoBarPosition.TOP_RIGHT,
duration=time,
parent=self.parent,
parent=self.main_window,
)
elif mode == "warning":
InfoBar.warning(
@@ -65,7 +65,7 @@ class _MainInfoBar:
isClosable=True,
position=InfoBarPosition.TOP_RIGHT,
duration=time,
parent=self.parent,
parent=self.main_window,
)
elif mode == "error":
InfoBar.error(
@@ -75,7 +75,7 @@ class _MainInfoBar:
isClosable=True,
position=InfoBarPosition.TOP_RIGHT,
duration=time,
parent=self.parent,
parent=self.main_window,
)
elif mode == "info":
InfoBar.info(
@@ -85,7 +85,7 @@ class _MainInfoBar:
isClosable=True,
position=InfoBarPosition.TOP_RIGHT,
duration=time,
parent=self.parent,
parent=self.main_window,
)

View File

@@ -28,6 +28,7 @@ v4.2
from loguru import logger
from PySide6.QtCore import QThread, QObject, Signal
from qfluentwidgets import Dialog
import json
from pathlib import Path
from datetime import datetime
from typing import Dict, Union
@@ -35,6 +36,7 @@ from typing import Dict, Union
from .config import Config
from .main_info_bar import MainInfoBar
from app.models import MaaManager
from app.services import System
class Task(QThread):
@@ -214,7 +216,7 @@ class TaskManager(QObject):
self.task_list[name].push_info_bar.connect(MainInfoBar.push_info_bar)
self.task_list[name].update_user_info.connect(Config.change_user_info)
self.task_list[name].accomplish.connect(
lambda logs: self.remove_task(name, logs)
lambda logs: self.remove_task(mode, name, logs)
)
if "新调度台" in mode:
@@ -247,8 +249,8 @@ class TaskManager(QObject):
self.task_list[name].quit()
self.task_list[name].wait()
def remove_task(self, name: str, logs: str):
"""移除任务标记"""
def remove_task(self, mode: str, name: str, logs: str):
"""任务结束后的处理"""
logger.info(f"任务结束:{name}")
MainInfoBar.push_info_bar("info", "任务结束", name, 3000)
@@ -274,6 +276,13 @@ class TaskManager(QObject):
self.task_list.pop(name)
Config.running_list.remove(name)
if "调度队列" in name and "人工排查" not in mode:
with (Config.app_path / f"config/QueueConfig/{name}.json").open(
"r", encoding="utf-8"
) as f:
info = json.load(f)
System.set_power(info["QueueSet"]["AfterAccomplish"])
def push_dialog(self, name: str, title: str, content: str):
"""推送对话框"""