Files
safe-marks-client/components/settings_interface.py
2025-10-18 23:09:05 -04:00

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())