feat(ui): 主调度台添加仅一次电源任务,UI样式优化

This commit is contained in:
DLmaster361
2025-05-10 23:15:54 +08:00
parent 74ce441b90
commit d1f4cffe8f
15 changed files with 453 additions and 288 deletions

View File

@@ -260,8 +260,10 @@ class QueueConfig(QConfig):
self.queueSet_AfterAccomplish = OptionsConfigItem(
"QueueSet",
"AfterAccomplish",
"None",
OptionsValidator(["None", "KillSelf", "Sleep", "Hibernate", "Shutdown"]),
"NoAction",
OptionsValidator(
["NoAction", "KillSelf", "Sleep", "Hibernate", "Shutdown"]
),
)
self.time_TimeEnabled_0 = ConfigItem(
@@ -627,6 +629,7 @@ class AppConfig(GlobalConfig):
gameid_refreshed = Signal()
PASSWORD_refreshed = Signal()
user_info_changed = Signal()
power_sign_changed = Signal()
def __init__(self) -> None:
super().__init__()
@@ -649,7 +652,7 @@ class AppConfig(GlobalConfig):
"ALL": {"value": [], "text": []},
"Today": {"value": [], "text": []},
}
self.power_signal = None
self.power_sign = "NoAction"
self.if_ignore_silence = False
self.if_database_opened = False
@@ -1311,6 +1314,12 @@ class AppConfig(GlobalConfig):
self.user_info_changed.emit()
def set_power_sign(self, sign: str) -> None:
"""设置当前电源状态"""
self.power_sign = sign
self.power_sign_changed.emit()
def save_history(self, key: str, content: dict) -> None:
"""保存历史记录"""

View File

@@ -265,11 +265,13 @@ class _TaskManager(QObject):
Config.queue_dict[name]["Config"].get(
Config.queue_dict[name]["Config"].queueSet_AfterAccomplish
)
!= "None"
and not Config.power_signal
!= "NoAction"
and Config.power_sign == "NoAction"
):
Config.power_signal = Config.queue_dict[name]["Config"].get(
Config.queue_dict[name]["Config"].queueSet_AfterAccomplish
Config.set_power_sign(
Config.queue_dict[name]["Config"].get(
Config.queue_dict[name]["Config"].queueSet_AfterAccomplish
)
)
def check_maa_version(self, v: str):

View File

@@ -116,25 +116,25 @@ class _MainTimer(QWidget):
def check_power(self):
if Config.power_signal and not Config.running_list:
if Config.power_sign != "NoAction" and not Config.running_list:
from app.ui import ProgressRingMessageBox
mode_book = {
"Shutdown": "关机",
"Hibernate": "休眠",
"KillSelf": "退出软件",
"Sleep": "睡眠",
"KillSelf": "关闭AUTO_MAA",
"Hibernate": "休眠",
"Shutdown": "关机",
}
choice = ProgressRingMessageBox(
Config.main_window, f"{mode_book[Config.power_signal]}倒计时"
Config.main_window, f"{mode_book[Config.power_sign]}倒计时"
)
if choice.exec():
System.set_power(Config.power_signal)
Config.power_signal = None
System.set_power(Config.power_sign)
Config.set_power_sign("NoAction")
else:
Config.power_signal = None
Config.set_power_sign("NoAction")
MainTimer = _MainTimer()

View File

@@ -87,7 +87,7 @@ class _SystemHandler:
if sys.platform.startswith("win"):
if mode == "None":
if mode == "NoAction":
logger.info("不执行系统电源操作")
@@ -115,7 +115,7 @@ class _SystemHandler:
elif sys.platform.startswith("linux"):
if mode == "None":
if mode == "NoAction":
logger.info("不执行系统电源操作")

View File

@@ -71,6 +71,9 @@ from qfluentwidgets import (
SwitchButton,
IndicatorPosition,
Slider,
ScrollArea,
Pivot,
PivotItem,
)
from qfluentwidgets.common.overload import singledispatchmethod
import os
@@ -1128,6 +1131,84 @@ class QuantifiedItemCard(CardWidget):
self.Layout.addWidget(self.Numb)
class PivotArea(ScrollArea):
def __init__(self, parent=None):
super().__init__(parent)
# 创建中间容器并设置布局
self.center_container = QWidget()
self.center_layout = QHBoxLayout(self.center_container)
self.center_layout.setContentsMargins(0, 0, 0, 0)
self.center_layout.setSpacing(0)
self.center_container.setStyleSheet("background: transparent; border: none;")
self.center_container.setFixedHeight(45)
self.pivot = self._Pivot(self)
self.pivot.ItemNumbChanged.connect(
lambda: QTimer.singleShot(
100,
lambda: (
self.center_container.setFixedWidth(
max(self.width() - 2, self.pivot.width())
)
),
)
)
self.center_layout.addStretch(1)
self.center_layout.addWidget(self.pivot)
self.center_layout.addStretch(1)
self.setWidgetResizable(False)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.viewport().setCursor(Qt.ArrowCursor)
self.setStyleSheet("background: transparent; border: none;")
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.setWidget(self.center_container)
def wheelEvent(self, event):
scroll_bar = self.horizontalScrollBar()
if scroll_bar.maximum() > 0:
delta = event.angleDelta().y()
scroll_bar.setValue(scroll_bar.value() - delta // 15)
event.ignore()
def resizeEvent(self, event):
super().resizeEvent(event)
self.center_container.setFixedWidth(max(self.width() - 2, self.pivot.width()))
QTimer.singleShot(
100,
lambda: (
self.center_container.setFixedWidth(
max(self.width() - 2, self.pivot.width())
)
),
)
class _Pivot(Pivot):
ItemNumbChanged = Signal()
def __init__(self, parent=None):
super().__init__(parent)
def insertWidget(
self, index: int, routeKey: str, widget: PivotItem, onClick=None
):
super().insertWidget(index, routeKey, widget, onClick)
self.ItemNumbChanged.emit()
def removeWidget(self, routeKey: str):
super().removeWidget(routeKey)
self.ItemNumbChanged.emit()
def clear(self):
super().clear()
self.ItemNumbChanged.emit()
class QuickExpandGroupCard(ExpandGroupSettingCard):
"""全局配置"""

View File

@@ -33,8 +33,8 @@ from PySide6.QtWidgets import (
QHBoxLayout,
)
from qfluentwidgets import (
BodyLabel,
CardWidget,
Pivot,
ScrollArea,
FluentIcon,
HeaderCardWidget,
@@ -44,13 +44,12 @@ from qfluentwidgets import (
SubtitleLabel,
PushButton,
)
from PySide6.QtCore import Qt
from PySide6.QtGui import QTextCursor
from typing import List, Dict
from app.core import Config, TaskManager, Task, MainInfoBar
from .Widget import StatefulItemCard, ComboBoxMessageBox
from .Widget import StatefulItemCard, ComboBoxMessageBox, PivotArea
class DispatchCenter(QWidget):
@@ -60,13 +59,29 @@ class DispatchCenter(QWidget):
self.setObjectName("调度中枢")
self.pivot = Pivot(self)
self.multi_button = PushButton(FluentIcon.ADD, "添加任务", self)
self.multi_button.setToolTip("添加任务")
self.multi_button.clicked.connect(self.start_multi_task)
self.power_combox = ComboBox()
self.power_combox.addItem("无动作", userData="NoAction")
self.power_combox.addItem("退出软件", userData="KillSelf")
self.power_combox.addItem("睡眠", userData="Sleep")
self.power_combox.addItem("休眠", userData="Hibernate")
self.power_combox.addItem("关机", userData="Shutdown")
self.power_combox.setCurrentText("无动作")
self.power_combox.currentIndexChanged.connect(self.set_power_sign)
self.pivotArea = PivotArea(self)
self.pivot = self.pivotArea.pivot
self.stackedWidget = QStackedWidget(self)
self.Layout = QVBoxLayout(self)
self.stackedWidget.setContentsMargins(0, 0, 0, 0)
self.stackedWidget.setStyleSheet("background: transparent; border: none;")
self.script_list: Dict[str, DispatchBox] = {}
self.script_list: Dict[str, DispatchCenter.DispatchBox] = {}
dispatch_box = DispatchBox("主调度台", self)
dispatch_box = self.DispatchBox("主调度台", self)
self.script_list["主调度台"] = dispatch_box
self.stackedWidget.addWidget(self.script_list["主调度台"])
self.pivot.addItem(
@@ -76,7 +91,15 @@ class DispatchCenter(QWidget):
icon=FluentIcon.CAFE,
)
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
h_layout = QHBoxLayout()
h_layout.addWidget(self.multi_button)
h_layout.addWidget(self.pivotArea)
h_layout.addWidget(BodyLabel("全部完成后", self))
h_layout.addWidget(self.power_combox)
h_layout.setContentsMargins(11, 5, 11, 0)
self.Layout = QVBoxLayout(self)
self.Layout.addLayout(h_layout)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)
@@ -87,7 +110,7 @@ class DispatchCenter(QWidget):
def add_board(self, task: Task) -> None:
"""添加一个调度台界面"""
dispatch_box = DispatchBox(task.name, self)
dispatch_box = self.DispatchBox(task.name, self)
dispatch_box.top_bar.main_button.clicked.connect(
lambda: TaskManager.stop_task(task.name)
@@ -123,7 +146,6 @@ class DispatchCenter(QWidget):
self.script_list["主调度台"].top_bar.Lable.show()
self.script_list["主调度台"].top_bar.object.hide()
self.script_list["主调度台"].top_bar.mode.hide()
self.script_list["主调度台"].top_bar.multi_button.show()
self.script_list["主调度台"].top_bar.main_button.clicked.disconnect()
self.script_list["主调度台"].top_bar.main_button.setText("中止任务")
self.script_list["主调度台"].top_bar.main_button.clicked.connect(
@@ -154,7 +176,6 @@ class DispatchCenter(QWidget):
self.script_list["主调度台"].top_bar.Lable.hide()
self.script_list["主调度台"].top_bar.object.show()
self.script_list["主调度台"].top_bar.mode.show()
self.script_list["主调度台"].top_bar.multi_button.hide()
self.script_list["主调度台"].top_bar.main_button.clicked.disconnect()
self.script_list["主调度台"].top_bar.main_button.setText("开始任务")
self.script_list["主调度台"].top_bar.main_button.clicked.connect(
@@ -208,301 +229,327 @@ class DispatchCenter(QWidget):
self.script_list["主调度台"].top_bar.mode.addItems(["自动代理", "人工排查"])
self.script_list["主调度台"].top_bar.mode.setCurrentIndex(0)
def update_power_sign(self) -> None:
"""更新电源设置"""
class DispatchBox(QWidget):
mode_book = {
"NoAction": "无动作",
"KillSelf": "退出软件",
"Sleep": "睡眠",
"Hibernate": "休眠",
"Shutdown": "关机",
}
self.power_combox.currentIndexChanged.disconnect()
self.power_combox.setCurrentText(mode_book[Config.power_sign])
self.power_combox.currentIndexChanged.connect(self.set_power_sign)
def __init__(self, name: str, parent=None):
super().__init__(parent)
def set_power_sign(self) -> None:
"""设置所有任务完成后动作"""
self.setObjectName(name)
if not Config.running_list:
layout = QVBoxLayout()
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
content_widget = QWidget()
content_layout = QVBoxLayout(content_widget)
self.top_bar = self.DispatchTopBar(self, name)
self.info = self.DispatchInfoCard(self)
content_layout.addWidget(self.top_bar)
content_layout.addWidget(self.info)
scrollArea.setWidget(content_widget)
layout.addWidget(scrollArea)
self.setLayout(layout)
class DispatchTopBar(CardWidget):
def __init__(self, parent=None, name: str = None):
super().__init__(parent)
Layout = QHBoxLayout(self)
if name == "主调度台":
self.Lable = SubtitleLabel("", self)
self.Lable.hide()
self.object = ComboBox()
self.object.setPlaceholderText("请选择调度对象")
self.mode = ComboBox()
self.mode.setPlaceholderText("请选择调度模式")
self.multi_button = PushButton("添加任务")
self.multi_button.clicked.connect(self.start_multi_task)
self.main_button = PushButton("开始任务")
self.main_button.clicked.connect(self.start_main_task)
self.multi_button.hide()
Layout.addWidget(self.Lable)
Layout.addWidget(self.object)
Layout.addWidget(self.mode)
Layout.addStretch(1)
Layout.addWidget(self.multi_button)
Layout.addWidget(self.main_button)
else:
self.Lable = SubtitleLabel(name, self)
self.main_button = PushButton("中止任务")
Layout.addWidget(self.Lable)
Layout.addStretch(1)
Layout.addWidget(self.main_button)
def start_main_task(self):
"""开始任务"""
if self.object.currentIndex() == -1:
logger.warning("未选择调度对象")
MainInfoBar.push_info_bar(
"warning", "未选择调度对象", "请选择后再开始任务", 5000
)
return None
if self.mode.currentIndex() == -1:
logger.warning("未选择调度模式")
MainInfoBar.push_info_bar(
"warning", "未选择调度模式", "请选择后再开始任务", 5000
)
return None
if self.object.currentData() in Config.running_list:
logger.warning(f"任务已存在:{self.object.currentData()}")
MainInfoBar.push_info_bar(
"warning", "任务已存在", self.object.currentData(), 5000
)
return None
if "调度队列" in self.object.currentData():
logger.info(f"用户添加任务:{self.object.currentData()}")
TaskManager.add_task(
f"{self.mode.currentText()}_主调度台",
self.object.currentData(),
Config.queue_dict[self.object.currentData()]["Config"].toDict(),
)
elif "脚本" in self.object.currentData():
if Config.member_dict[self.object.currentData()]["Type"] == "Maa":
logger.info(f"用户添加任务:{self.object.currentData()}")
TaskManager.add_task(
f"{self.mode.currentText()}_主调度台",
"自定义队列",
{"Queue": {"Member_1": self.object.currentData()}},
)
def start_multi_task(self):
"""开始任务"""
# 获取所有可用的队列和实例
text_list = []
data_list = []
for name, info in Config.queue_dict.items():
if name in Config.running_list:
continue
text_list.append(
"队列"
if info["Config"].get(info["Config"].queueSet_Name) == ""
else f"队列 - {info["Config"].get(info["Config"].queueSet_Name)}"
)
data_list.append(name)
for name, info in Config.member_dict.items():
if name in Config.running_list:
continue
text_list.append(
f"实例 - {info['Type']}"
if info["Config"].get(info["Config"].MaaSet_Name) == ""
else f"实例 - {info['Type']} - {info["Config"].get(info["Config"].MaaSet_Name)}"
)
data_list.append(name)
choice = ComboBoxMessageBox(
self.window(),
"选择一个对象以添加相应多开任务",
["选择调度对象"],
[text_list],
[data_list],
self.power_combox.currentIndexChanged.disconnect()
self.power_combox.setCurrentText("无动作")
self.power_combox.currentIndexChanged.connect(self.set_power_sign)
logger.warning("没有正在运行的任务,无法设置任务完成后动作")
MainInfoBar.push_info_bar(
"warning",
"没有正在运行的任务",
"无法设置任务完成后动作",
5000,
)
if choice.exec() and choice.input[0].currentIndex() != -1:
else:
if choice.input[0].currentData() in Config.running_list:
logger.warning(f"任务已存在:{choice.input[0].currentData()}")
MainInfoBar.push_info_bar(
"warning", "任务已存在", choice.input[0].currentData(), 5000
)
return None
Config.set_power_sign(self.power_combox.currentData())
if "调度队列" in choice.input[0].currentData():
def start_multi_task(self) -> None:
"""开始任务"""
# 获取所有可用的队列和实例
text_list = []
data_list = []
for name, info in Config.queue_dict.items():
if name in Config.running_list:
continue
text_list.append(
"队列"
if info["Config"].get(info["Config"].queueSet_Name) == ""
else f"队列 - {info["Config"].get(info["Config"].queueSet_Name)}"
)
data_list.append(name)
for name, info in Config.member_dict.items():
if name in Config.running_list:
continue
text_list.append(
f"实例 - {info['Type']}"
if info["Config"].get(info["Config"].MaaSet_Name) == ""
else f"实例 - {info['Type']} - {info["Config"].get(info["Config"].MaaSet_Name)}"
)
data_list.append(name)
choice = ComboBoxMessageBox(
self.window(),
"选择一个对象以添加相应多开任务",
["选择调度对象"],
[text_list],
[data_list],
)
if choice.exec() and choice.input[0].currentIndex() != -1:
if choice.input[0].currentData() in Config.running_list:
logger.warning(f"任务已存在:{choice.input[0].currentData()}")
MainInfoBar.push_info_bar(
"warning", "任务已存在", choice.input[0].currentData(), 5000
)
return None
if "调度队列" in choice.input[0].currentData():
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
TaskManager.add_task(
"自动代理_新调度台",
choice.input[0].currentData(),
Config.queue_dict[choice.input[0].currentData()]["Config"].toDict(),
)
elif "脚本" in choice.input[0].currentData():
if Config.member_dict[choice.input[0].currentData()]["Type"] == "Maa":
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
TaskManager.add_task(
"自动代理_新调度台",
choice.input[0].currentData(),
Config.queue_dict[choice.input[0].currentData()][
"Config"
].toDict(),
f"自定义队列 - {choice.input[0].currentData()}",
{"Queue": {"Member_1": choice.input[0].currentData()}},
)
elif "脚本" in choice.input[0].currentData():
class DispatchBox(QWidget):
if (
Config.member_dict[choice.input[0].currentData()]["Type"]
== "Maa"
):
logger.info(f"用户添加任务:{choice.input[0].currentData()}")
TaskManager.add_task(
"自动代理_新调度台",
f"自定义队列 - {choice.input[0].currentData()}",
{"Queue": {"Member_1": choice.input[0].currentData()}},
)
class DispatchInfoCard(HeaderCardWidget):
def __init__(self, parent=None):
def __init__(self, name: str, parent=None):
super().__init__(parent)
self.setTitle("调度信息")
self.setObjectName(name)
self.task = self.TaskInfoCard(self)
self.user = self.UserInfoCard(self)
self.log_text = self.LogCard(self)
layout = QVBoxLayout()
self.viewLayout.addWidget(self.task)
self.viewLayout.addWidget(self.user)
self.viewLayout.addWidget(self.log_text)
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setContentsMargins(0, 0, 0, 0)
scrollArea.setStyleSheet("background: transparent; border: none;")
self.viewLayout.setStretch(0, 1)
self.viewLayout.setStretch(1, 1)
self.viewLayout.setStretch(2, 5)
content_widget = QWidget()
content_layout = QVBoxLayout(content_widget)
def update_board(self, task_list: list, user_list: list, log: str):
"""更新调度信息"""
self.top_bar = self.DispatchTopBar(self, name)
self.info = self.DispatchInfoCard(self)
self.task.update_task(task_list)
self.user.update_user(user_list)
self.log_text.text.setText(log)
content_layout.addWidget(self.top_bar)
content_layout.addWidget(self.info)
class TaskInfoCard(HeaderCardWidget):
scrollArea.setWidget(content_widget)
layout.addWidget(scrollArea)
self.setLayout(layout)
class DispatchTopBar(CardWidget):
def __init__(self, parent=None, name: str = None):
super().__init__(parent)
Layout = QHBoxLayout(self)
if name == "主调度台":
self.Lable = SubtitleLabel("", self)
self.Lable.hide()
self.object = ComboBox()
self.object.setPlaceholderText("请选择调度对象")
self.mode = ComboBox()
self.mode.setPlaceholderText("请选择调度模式")
self.main_button = PushButton("开始任务")
self.main_button.clicked.connect(self.start_main_task)
Layout.addWidget(self.Lable)
Layout.addWidget(self.object)
Layout.addWidget(self.mode)
Layout.addStretch(1)
Layout.addWidget(self.main_button)
else:
self.Lable = SubtitleLabel(name, self)
self.main_button = PushButton("中止任务")
Layout.addWidget(self.Lable)
Layout.addStretch(1)
Layout.addWidget(self.main_button)
def start_main_task(self):
"""开始任务"""
if self.object.currentIndex() == -1:
logger.warning("未选择调度对象")
MainInfoBar.push_info_bar(
"warning", "未选择调度对象", "请选择后再开始任务", 5000
)
return None
if self.mode.currentIndex() == -1:
logger.warning("未选择调度模式")
MainInfoBar.push_info_bar(
"warning", "未选择调度模式", "请选择后再开始任务", 5000
)
return None
if self.object.currentData() in Config.running_list:
logger.warning(f"任务已存在:{self.object.currentData()}")
MainInfoBar.push_info_bar(
"warning", "任务已存在", self.object.currentData(), 5000
)
return None
if "调度队列" in self.object.currentData():
logger.info(f"用户添加任务:{self.object.currentData()}")
TaskManager.add_task(
f"{self.mode.currentText()}_主调度台",
self.object.currentData(),
Config.queue_dict[self.object.currentData()]["Config"].toDict(),
)
elif "脚本" in self.object.currentData():
if Config.member_dict[self.object.currentData()]["Type"] == "Maa":
logger.info(f"用户添加任务:{self.object.currentData()}")
TaskManager.add_task(
f"{self.mode.currentText()}_主调度台",
"自定义队列",
{"Queue": {"Member_1": self.object.currentData()}},
)
class DispatchInfoCard(HeaderCardWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setTitle("任务队列")
self.Layout = QVBoxLayout()
self.viewLayout.addLayout(self.Layout)
self.viewLayout.setContentsMargins(3, 0, 3, 3)
self.setTitle("调度信息")
self.task_cards: List[StatefulItemCard] = []
self.task = self.TaskInfoCard(self)
self.user = self.UserInfoCard(self)
self.log_text = self.LogCard(self)
def create_task(self, task_list: list):
"""创建任务队列"""
self.viewLayout.addWidget(self.task)
self.viewLayout.addWidget(self.user)
self.viewLayout.addWidget(self.log_text)
while self.Layout.count() > 0:
item = self.Layout.takeAt(0)
if item.spacerItem():
self.Layout.removeItem(item.spacerItem())
elif item.widget():
item.widget().deleteLater()
self.viewLayout.setStretch(0, 1)
self.viewLayout.setStretch(1, 1)
self.viewLayout.setStretch(2, 5)
self.task_cards = []
def update_board(self, task_list: list, user_list: list, log: str):
"""更新调度信息"""
for task in task_list:
self.task.update_task(task_list)
self.user.update_user(user_list)
self.log_text.text.setText(log)
self.task_cards.append(StatefulItemCard(task))
self.Layout.addWidget(self.task_cards[-1])
class TaskInfoCard(HeaderCardWidget):
self.Layout.addStretch(1)
def __init__(self, parent=None):
super().__init__(parent)
self.setTitle("任务队列")
def update_task(self, task_list: list):
"""更新任务队列"""
self.Layout = QVBoxLayout()
self.viewLayout.addLayout(self.Layout)
self.viewLayout.setContentsMargins(3, 0, 3, 3)
for i in range(len(task_list)):
self.task_cards: List[StatefulItemCard] = []
self.task_cards[i].update_status(task_list[i][1])
def create_task(self, task_list: list):
"""创建任务队列"""
class UserInfoCard(HeaderCardWidget):
while self.Layout.count() > 0:
item = self.Layout.takeAt(0)
if item.spacerItem():
self.Layout.removeItem(item.spacerItem())
elif item.widget():
item.widget().deleteLater()
def __init__(self, parent=None):
super().__init__(parent)
self.setTitle("用户队列")
self.task_cards = []
self.Layout = QVBoxLayout()
self.viewLayout.addLayout(self.Layout)
self.viewLayout.setContentsMargins(3, 0, 3, 3)
for task in task_list:
self.user_cards: List[StatefulItemCard] = []
self.task_cards.append(StatefulItemCard(task))
self.Layout.addWidget(self.task_cards[-1])
def create_user(self, user_list: list):
"""创建用户队列"""
self.Layout.addStretch(1)
while self.Layout.count() > 0:
item = self.Layout.takeAt(0)
if item.spacerItem():
self.Layout.removeItem(item.spacerItem())
elif item.widget():
item.widget().deleteLater()
def update_task(self, task_list: list):
"""更新任务队列"""
self.user_cards = []
for i in range(len(task_list)):
for user in user_list:
self.task_cards[i].update_status(task_list[i][1])
self.user_cards.append(StatefulItemCard(user))
self.Layout.addWidget(self.user_cards[-1])
class UserInfoCard(HeaderCardWidget):
self.Layout.addStretch(1)
def __init__(self, parent=None):
super().__init__(parent)
self.setTitle("用户队列")
def update_user(self, user_list: list):
"""更新用户队列"""
self.Layout = QVBoxLayout()
self.viewLayout.addLayout(self.Layout)
self.viewLayout.setContentsMargins(3, 0, 3, 3)
for i in range(len(user_list)):
self.user_cards: List[StatefulItemCard] = []
self.user_cards[i].Label.setText(user_list[i][0])
self.user_cards[i].update_status(user_list[i][1])
def create_user(self, user_list: list):
"""创建用户队列"""
class LogCard(HeaderCardWidget):
while self.Layout.count() > 0:
item = self.Layout.takeAt(0)
if item.spacerItem():
self.Layout.removeItem(item.spacerItem())
elif item.widget():
item.widget().deleteLater()
def __init__(self, parent=None):
super().__init__(parent)
self.setTitle("日志")
self.user_cards = []
self.text = TextBrowser()
self.viewLayout.setContentsMargins(3, 0, 3, 3)
self.viewLayout.addWidget(self.text)
for user in user_list:
self.text.textChanged.connect(self.to_end)
self.user_cards.append(StatefulItemCard(user))
self.Layout.addWidget(self.user_cards[-1])
def to_end(self):
"""滚动到底部"""
self.Layout.addStretch(1)
self.text.moveCursor(QTextCursor.End)
self.text.ensureCursorVisible()
def update_user(self, user_list: list):
"""更新用户队列"""
for i in range(len(user_list)):
self.user_cards[i].Label.setText(user_list[i][0])
self.user_cards[i].update_status(user_list[i][1])
class LogCard(HeaderCardWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setTitle("日志")
self.text = TextBrowser()
self.viewLayout.setContentsMargins(3, 0, 3, 3)
self.viewLayout.addWidget(self.text)
self.text.textChanged.connect(self.to_end)
def to_end(self):
"""滚动到底部"""
self.text.moveCursor(QTextCursor.End)
self.text.ensureCursorVisible()

View File

@@ -21,11 +21,10 @@
"""
AUTO_MAA
AUTO_MAA更新器
v1.2
v4.3
作者DLmaster_361
"""
import json
import zipfile
import requests
import subprocess

View File

@@ -69,6 +69,8 @@ class History(QWidget):
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setContentsMargins(0, 0, 0, 0)
scrollArea.setStyleSheet("background: transparent; border: none;")
scrollArea.setWidget(content_widget)
layout = QVBoxLayout()
layout.addWidget(self.history_top_bar)

View File

@@ -149,6 +149,8 @@ class Home(QWidget):
layout = QVBoxLayout()
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setContentsMargins(0, 0, 0, 0)
scrollArea.setStyleSheet("background: transparent; border: none;")
scrollArea.setWidget(widget)
layout.addWidget(scrollArea)
self.setLayout(layout)

View File

@@ -192,6 +192,7 @@ class AUTO_MAA(MSFluentWindow):
self.set_min_method()
Config.user_info_changed.connect(self.member_manager.refresh_dashboard)
Config.power_sign_changed.connect(self.dispatch_center.update_power_sign)
TaskManager.create_gui.connect(self.dispatch_center.add_board)
TaskManager.connect_gui.connect(self.dispatch_center.connect_main_board)
Notify.push_info_bar.connect(MainInfoBar.push_info_bar)

View File

@@ -38,7 +38,6 @@ from PySide6.QtWidgets import (
from PySide6.QtGui import QIcon
from qfluentwidgets import (
Action,
Pivot,
ScrollArea,
FluentIcon,
MessageBox,
@@ -49,7 +48,7 @@ from qfluentwidgets import (
TableWidget,
PrimaryToolButton,
)
from PySide6.QtCore import Qt, Signal
from PySide6.QtCore import Signal
from datetime import datetime
from functools import partial
from pathlib import Path
@@ -72,6 +71,7 @@ from .Widget import (
SwitchSettingCard,
PushAndSwitchButtonSettingCard,
PushAndComboBoxSettingCard,
PivotArea,
)
@@ -485,13 +485,17 @@ class MemberManager(QWidget):
self.setObjectName("脚本管理页面组")
self.pivot = Pivot(self)
self.pivotArea = PivotArea(self)
self.pivot = self.pivotArea.pivot
self.stackedWidget = QStackedWidget(self)
self.Layout = QVBoxLayout(self)
self.stackedWidget.setContentsMargins(0, 0, 0, 0)
self.stackedWidget.setStyleSheet("background: transparent; border: none;")
self.script_list: List[MemberManager.MemberSettingBox.MaaSettingBox] = []
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
self.Layout = QVBoxLayout(self)
self.Layout.addWidget(self.pivotArea)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)
@@ -563,6 +567,8 @@ class MemberManager(QWidget):
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setContentsMargins(0, 0, 0, 0)
scrollArea.setStyleSheet("background: transparent; border: none;")
content_widget = QWidget()
content_layout = QVBoxLayout(content_widget)
@@ -1011,9 +1017,14 @@ class MemberManager(QWidget):
self.setObjectName("用户管理")
self.name = name
self.pivot = Pivot(self)
self.pivotArea = PivotArea(self)
self.pivot = self.pivotArea.pivot
self.stackedWidget = QStackedWidget(self)
self.Layout = QVBoxLayout(self)
self.stackedWidget.setContentsMargins(0, 0, 0, 0)
self.stackedWidget.setStyleSheet(
"background: transparent; border: none;"
)
self.script_list: List[
MemberManager.MemberSettingBox.MaaSettingBox.UserManager.UserSettingBox.UserMemberSettingBox
@@ -1024,7 +1035,8 @@ class MemberManager(QWidget):
self.stackedWidget.addWidget(self.user_dashboard)
self.pivot.addItem(routeKey="用户仪表盘", text="用户仪表盘")
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
self.Layout = QVBoxLayout(self)
self.Layout.addWidget(self.pivotArea)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)

View File

@@ -34,14 +34,12 @@ from PySide6.QtWidgets import (
)
from qfluentwidgets import (
Action,
Pivot,
ScrollArea,
FluentIcon,
MessageBox,
HeaderCardWidget,
CommandBar,
)
from PySide6.QtCore import Qt
from typing import List
from app.core import QueueConfig, Config, MainInfoBar
@@ -52,6 +50,7 @@ from .Widget import (
TimeEditSettingCard,
NoOptionComboBoxSettingCard,
HistoryCard,
PivotArea,
)
@@ -305,15 +304,19 @@ class QueueManager(QWidget):
self.setObjectName("调度队列管理")
self.pivot = Pivot(self)
self.pivotArea = PivotArea()
self.pivot = self.pivotArea.pivot
self.stackedWidget = QStackedWidget(self)
self.Layout = QVBoxLayout(self)
self.stackedWidget.setContentsMargins(0, 0, 0, 0)
self.stackedWidget.setStyleSheet("background: transparent; border: none;")
self.script_list: List[
QueueManager.QueueSettingBox.QueueMemberSettingBox
] = []
self.Layout.addWidget(self.pivot, 0, Qt.AlignHCenter)
self.Layout = QVBoxLayout(self)
self.Layout.addWidget(self.pivotArea)
self.Layout.addWidget(self.stackedWidget)
self.Layout.setContentsMargins(0, 0, 0, 0)
@@ -380,6 +383,8 @@ class QueueManager(QWidget):
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setContentsMargins(0, 0, 0, 0)
scrollArea.setStyleSheet("background: transparent; border: none;")
content_widget = QWidget()
content_layout = QVBoxLayout(content_widget)

View File

@@ -103,6 +103,8 @@ class Setting(QWidget):
scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setContentsMargins(0, 0, 0, 0)
scrollArea.setStyleSheet("background: transparent; border: none;")
scrollArea.setWidget(content_widget)
layout = QVBoxLayout()
layout.addWidget(scrollArea)

View File

@@ -66,7 +66,6 @@ if __name__ == "__main__":
version = json.load(f)
main_version_numb = list(map(int, version["main_version"].split(".")))
updater_version_numb = list(map(int, version["updater_version"].split(".")))
print("Packaging AUTO_MAA main program ...")
@@ -139,6 +138,6 @@ if __name__ == "__main__":
all_version_info[key] = value.copy()
(root_path / "version_info.txt").write_text(
f"{version_text(main_version_numb)}\n{version_text(updater_version_numb)}\n<!--{json.dumps(version["version_info"], ensure_ascii=False)}-->\n{version_info_markdown(all_version_info)}",
f"{version_text(main_version_numb)}\n\n<!--{json.dumps(version["version_info"], ensure_ascii=False)}-->\n{version_info_markdown(all_version_info)}",
encoding="utf-8",
)

View File

@@ -4,10 +4,14 @@
"version_info": {
"4.3.8.1": {
"新增功能": [
"自定义基建显示配置名称"
"自定义基建显示配置名称",
"主调度台添加仅一次电源任务"
],
"修复bug": [
"电源相关选项改为所有任务完成后生效"
],
"程序优化": [
"UI样式优化进一步适配win10主题"
]
},
"4.3.7.0": {