feat(ui): UI界面添加自动日常代理任务序列设置项

This commit is contained in:
DLmaster361
2025-05-26 16:05:46 +08:00
parent 078736337d
commit a752b67ca1
5 changed files with 310 additions and 120 deletions

View File

@@ -82,6 +82,7 @@ from qfluentwidgets import (
Pivot,
PivotItem,
FlyoutViewBase,
PushSettingCard,
)
from qfluentwidgets.common.overload import singledispatchmethod
@@ -306,6 +307,8 @@ class SettingFlyoutView(FlyoutViewBase):
self.viewLayout.addWidget(self.title)
self.viewLayout.addWidget(scrollArea)
self.setVisible(False)
class SwitchSettingCard(SettingCard):
"""Setting card with switch button"""
@@ -557,57 +560,6 @@ class PasswordLineEditSettingCard(SettingCard):
self.LineEdit.textChanged.connect(self.__textChanged)
class UserLableSettingCard(SettingCard):
"""Setting card with User's Lable"""
def __init__(
self,
icon: Union[str, QIcon, FluentIconBase],
title: str,
content: Union[str, None],
qconfig: QConfig,
configItems: Dict[str, ConfigItem],
parent=None,
):
super().__init__(icon, title, content, parent)
self.qconfig = qconfig
self.configItems = configItems
self.Lable = SubtitleLabel(self)
if configItems:
for configItem in configItems.values():
configItem.valueChanged.connect(self.setValue)
self.setValue()
self.hBoxLayout.addWidget(self.Lable, 0, Qt.AlignRight)
self.hBoxLayout.addSpacing(16)
def setValue(self):
if self.configItems:
text_list = []
if not self.qconfig.get(self.configItems["IfPassCheck"]):
text_list.append("未通过人工排查")
text_list.append(
f"今日已代理{self.qconfig.get(self.configItems["ProxyTimes"])}"
if Config.server_date().strftime("%Y-%m-%d")
== self.qconfig.get(self.configItems["LastProxyDate"])
else "今日未进行代理"
)
text_list.append(
"本周剿灭已完成"
if datetime.strptime(
self.qconfig.get(self.configItems["LastAnnihilationDate"]),
"%Y-%m-%d",
).isocalendar()[:2]
== Config.server_date().isocalendar()[:2]
else "本周剿灭未完成"
)
self.Lable.setText(" | ".join(text_list))
class PushAndSwitchButtonSettingCard(SettingCard):
"""Setting card with push & switch button"""
@@ -1128,6 +1080,115 @@ class TimeEditSettingCard(SettingCard):
self.TimeEdit.setTime(QTime.fromString(value, "HH:mm"))
class UserLableSettingCard(SettingCard):
"""Setting card with User's Lable"""
def __init__(
self,
icon: Union[str, QIcon, FluentIconBase],
title: str,
content: Union[str, None],
qconfig: QConfig,
configItems: Dict[str, ConfigItem],
parent=None,
):
super().__init__(icon, title, content, parent)
self.qconfig = qconfig
self.configItems = configItems
self.Lable = SubtitleLabel(self)
if configItems:
for configItem in configItems.values():
configItem.valueChanged.connect(self.setValue)
self.setValue()
self.hBoxLayout.addWidget(self.Lable, 0, Qt.AlignRight)
self.hBoxLayout.addSpacing(16)
def setValue(self):
text_list = []
if self.configItems:
if not self.qconfig.get(self.configItems["IfPassCheck"]):
text_list.append("未通过人工排查")
text_list.append(
f"今日已代理{self.qconfig.get(self.configItems["ProxyTimes"])}"
if Config.server_date().strftime("%Y-%m-%d")
== self.qconfig.get(self.configItems["LastProxyDate"])
else "今日未进行代理"
)
text_list.append(
"本周剿灭已完成"
if datetime.strptime(
self.qconfig.get(self.configItems["LastAnnihilationDate"]),
"%Y-%m-%d",
).isocalendar()[:2]
== Config.server_date().isocalendar()[:2]
else "本周剿灭未完成"
)
self.Lable.setText(" | ".join(text_list))
class UserTaskSettingCard(PushSettingCard):
"""Setting card with User's Task"""
def __init__(
self,
icon: Union[str, QIcon, FluentIconBase],
title: str,
content: Union[str, None],
text: str,
qconfig: QConfig,
configItems: Dict[str, ConfigItem],
parent=None,
):
super().__init__(text, icon, title, content, parent)
self.qconfig = qconfig
self.configItems = configItems
self.Lable = SubtitleLabel(self)
if configItems:
for config_item in configItems.values():
config_item.valueChanged.connect(self.setValues)
self.setValues()
self.hBoxLayout.addWidget(self.Lable, 0, Qt.AlignRight)
self.hBoxLayout.addSpacing(16)
def setValues(self):
text_list = []
if self.configItems:
if self.qconfig.get(self.configItems["IfWakeUp"]):
text_list.append("开始唤醒")
if self.qconfig.get(self.configItems["IfRecruiting"]):
text_list.append("自动公招")
if self.qconfig.get(self.configItems["IfBase"]):
text_list.append("基建换班")
if self.qconfig.get(self.configItems["IfCombat"]):
text_list.append("刷理智")
if self.qconfig.get(self.configItems["IfMall"]):
text_list.append("获取信用及购物")
if self.qconfig.get(self.configItems["IfMission"]):
text_list.append("领取奖励")
if self.qconfig.get(self.configItems["IfAutoRoguelike"]):
text_list.append("自动肉鸽")
if self.qconfig.get(self.configItems["IfReclamation"]):
text_list.append("生息演算")
if text_list:
self.setContent(f"任务序列:{" - ".join(text_list)}")
else:
self.setContent("未启用任何任务项")
class UserNoticeSettingCard(PushAndSwitchButtonSettingCard):
"""Setting card with User's Notice"""
@@ -1184,7 +1245,7 @@ class UserNoticeSettingCard(PushAndSwitchButtonSettingCard):
# 普通字符串末尾3字符
return f"***{s[-3:]}" if len(s) > 3 else s
content_list = []
text_list = []
if self.configItems:
@@ -1192,27 +1253,27 @@ class UserNoticeSettingCard(PushAndSwitchButtonSettingCard):
self.qconfig.get(self.configItems["IfSendStatistic"])
or self.qconfig.get(self.configItems["IfSendSixStar"])
):
content_list.append("未启用任何通知项")
text_list.append("未启用任何通知项")
if self.qconfig.get(self.configItems["IfSendStatistic"]):
content_list.append("统计信息已启用")
text_list.append("统计信息已启用")
if self.qconfig.get(self.configItems["IfSendSixStar"]):
content_list.append("六星喜报已启用")
text_list.append("六星喜报已启用")
if self.qconfig.get(self.configItems["IfSendMail"]):
content_list.append(
text_list.append(
f"邮箱通知:{short_str(self.qconfig.get(self.configItems["ToAddress"]))}"
)
if self.qconfig.get(self.configItems["IfServerChan"]):
content_list.append(
text_list.append(
f"Server酱通知{short_str(self.qconfig.get(self.configItems["ServerChanKey"]))}"
)
if self.qconfig.get(self.configItems["IfCompanyWebHookBot"]):
content_list.append(
text_list.append(
f"企业微信通知:{short_str(self.qconfig.get(self.configItems["CompanyWebHookBotUrl"]))}"
)
self.setContent(" | ".join(content_list))
self.setContent(" | ".join(text_list))
class StatusSwitchSetting(SwitchButton):

View File

@@ -73,6 +73,7 @@ from .Widget import (
SpinBoxWithPlanSettingCard,
PasswordLineEditSettingCard,
UserLableSettingCard,
UserTaskSettingCard,
ComboBoxSettingCard,
SwitchSettingCard,
PushAndSwitchButtonSettingCard,
@@ -1587,7 +1588,106 @@ class MemberManager(QWidget):
parent=self,
)
# 新增单独通知卡片
# 单独任务卡片
self.card_TaskSet = UserTaskSettingCard(
icon=FluentIcon.LIBRARY,
title="自动日常代理任务序列",
content="未启用任何任务项",
text="设置",
qconfig=self.config,
configItems={
"IfWakeUp": self.config.Task_IfWakeUp,
"IfRecruiting": self.config.Task_IfRecruiting,
"IfBase": self.config.Task_IfBase,
"IfCombat": self.config.Task_IfCombat,
"IfMall": self.config.Task_IfMall,
"IfMission": self.config.Task_IfMission,
"IfAutoRoguelike": self.config.Task_IfAutoRoguelike,
"IfReclamation": self.config.Task_IfReclamation,
},
parent=self,
)
self.card_IfWakeUp = SwitchSettingCard(
icon=FluentIcon.TILES,
title="开始唤醒",
content="",
qconfig=self.config,
configItem=self.config.Task_IfWakeUp,
parent=self,
)
self.card_IfRecruiting = SwitchSettingCard(
icon=FluentIcon.TILES,
title="自动公招",
content="",
qconfig=self.config,
configItem=self.config.Task_IfRecruiting,
parent=self,
)
self.card_IfBase = SwitchSettingCard(
icon=FluentIcon.TILES,
title="基建换班",
content="",
qconfig=self.config,
configItem=self.config.Task_IfBase,
parent=self,
)
self.card_IfCombat = SwitchSettingCard(
icon=FluentIcon.TILES,
title="刷理智",
content="",
qconfig=self.config,
configItem=self.config.Task_IfCombat,
parent=self,
)
self.card_IfMall = SwitchSettingCard(
icon=FluentIcon.TILES,
title="获取信用及购物",
content="",
qconfig=self.config,
configItem=self.config.Task_IfMall,
parent=self,
)
self.card_IfMission = SwitchSettingCard(
icon=FluentIcon.TILES,
title="领取奖励",
content="",
qconfig=self.config,
configItem=self.config.Task_IfMission,
parent=self,
)
self.card_IfAutoRoguelike = SwitchSettingCard(
icon=FluentIcon.TILES,
title="自动肉鸽",
content="",
qconfig=self.config,
configItem=self.config.Task_IfAutoRoguelike,
parent=self,
)
self.card_IfReclamation = SwitchSettingCard(
icon=FluentIcon.TILES,
title="生息演算",
content="",
qconfig=self.config,
configItem=self.config.Task_IfReclamation,
parent=self,
)
self.TaskSetCard = SettingFlyoutView(
self,
"自动日常代理任务序列设置",
[
self.card_IfWakeUp,
self.card_IfRecruiting,
self.card_IfBase,
self.card_IfCombat,
self.card_IfMall,
self.card_IfMission,
self.card_IfAutoRoguelike,
self.card_IfReclamation,
],
)
# 单独通知卡片
self.card_NotifySet = UserNoticeSettingCard(
icon=FluentIcon.MAIL,
title="用户单独通知设置",
@@ -1618,17 +1718,16 @@ class MemberManager(QWidget):
self.CompanyWechatPushSettingCard(self.config, self)
)
self.card_NotifySet_list = [
self.card_NotifyContent,
self.card_EMail,
self.card_ServerChan,
self.card_CompanyWebhookBot,
]
self.NotifySetCard = SettingFlyoutView(
self, "用户通知设置", self.card_NotifySet_list
self,
"用户通知设置",
[
self.card_NotifyContent,
self.card_EMail,
self.card_ServerChan,
self.card_CompanyWebhookBot,
],
)
self.NotifySetCard.setVisible(False)
h1_layout = QHBoxLayout()
h1_layout.addWidget(self.card_Name)
@@ -1667,6 +1766,7 @@ class MemberManager(QWidget):
Layout.addLayout(h6_layout)
Layout.addLayout(h7_layout)
Layout.addLayout(h8_layout)
Layout.addWidget(self.card_TaskSet)
Layout.addWidget(self.card_NotifySet)
self.viewLayout.addLayout(Layout)
@@ -1687,6 +1787,7 @@ class MemberManager(QWidget):
self.card_InfrastMode.clicked.connect(
self.set_infrastructure
)
self.card_TaskSet.clicked.connect(self.set_task)
self.card_NotifySet.clicked.connect(self.set_notify)
self.card_GameIdMode.comboBox.currentIndexChanged.connect(
self.switch_gameid_mode
@@ -1851,6 +1952,18 @@ class MemberManager(QWidget):
},
)
def set_task(self) -> None:
"""设置用户任务序列相关配置"""
self.TaskSetCard.setVisible(True)
Flyout.make(
self.TaskSetCard,
self.card_TaskSet,
self,
aniType=FlyoutAnimationType.PULL_UP,
isDeleteOnClose=False,
)
def set_notify(self) -> None:
"""设置用户通知相关配置"""