72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
from PySide6.QtCore import Qt
|
|
from PySide6.QtWidgets import QWidget
|
|
from qfluentwidgets import (
|
|
ScrollArea, ExpandLayout, SettingCardGroup,
|
|
OptionsSettingCard, CustomColorSettingCard, setTheme, setThemeColor,
|
|
SwitchSettingCard, InfoBar, InfoBarPosition
|
|
)
|
|
from qfluentwidgets import FluentIcon as Fi
|
|
from common.config import cfg
|
|
|
|
|
|
class SettingsInterface(ScrollArea):
|
|
|
|
def __init__(self, name: str, parent=None):
|
|
super().__init__(parent)
|
|
self.setObjectName(name.replace(" ", "-"))
|
|
self.cw = QWidget(self)
|
|
self.ely = ExpandLayout(self.cw)
|
|
self.setWidget(self.cw)
|
|
self.setWidgetResizable(True)
|
|
self.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
|
|
self.enableTransparentBackground()
|
|
|
|
self.personal_group = SettingCardGroup("个性化", self.cw)
|
|
self.theme_card = OptionsSettingCard(
|
|
cfg.themeMode,
|
|
Fi.BRUSH,
|
|
"应用主题",
|
|
"修改应用的外观",
|
|
texts=["浅色", "深色", "跟随系统"],
|
|
parent=self.personal_group,
|
|
)
|
|
self.theme_color_card = CustomColorSettingCard(
|
|
cfg.themeColor,
|
|
Fi.PALETTE,
|
|
"主题色",
|
|
"修改应用的主题颜色",
|
|
parent=self.personal_group,
|
|
)
|
|
self.switch_animation_card = SwitchSettingCard(
|
|
Fi.SCROLL,
|
|
"切换动画",
|
|
"切换不同页面时是否显示动画",
|
|
configItem=cfg.switch_animation,
|
|
parent=self.personal_group,
|
|
)
|
|
self.smooth_mode_card = OptionsSettingCard(
|
|
cfg.smooth_mode,
|
|
Fi.LEAF,
|
|
"滚动模式",
|
|
"修改视图滚动模式",
|
|
texts=["无滚动", "匀速滚动", "线性滚动", "二次缓动", "余弦平滑"],
|
|
parent=self.personal_group,
|
|
)
|
|
|
|
self.personal_group.addSettingCard(self.theme_card)
|
|
self.personal_group.addSettingCard(self.theme_color_card)
|
|
self.personal_group.addSettingCard(self.switch_animation_card)
|
|
self.personal_group.addSettingCard(self.smooth_mode_card)
|
|
|
|
self.ely.setSpacing(28)
|
|
self.ely.setContentsMargins(20, 20, 20, 20)
|
|
self.ely.addWidget(self.personal_group)
|
|
|
|
cfg.themeChanged.connect(setTheme)
|
|
cfg.appRestartSig.connect(self.show_restart_tip)
|
|
self.theme_color_card.colorChanged.connect(lambda c: setThemeColor(c))
|
|
|
|
def show_restart_tip(self):
|
|
InfoBar.warning("", "设置已更新,重启应用生效。", duration=5000,
|
|
position=InfoBarPosition.BOTTOM_RIGHT, parent=self.window())
|