# -*- coding: utf-8 -*- from PyQt6.QtCore import * from PyQt6.QtWidgets import * from PyQt6.QtGui import * from qfluentwidgets import * from qfluentwidgets import FluentIcon as FIF from .common.config import cfg, HELP_URL, FEEDBACK_URL, AUTHOR, VERSION, YEAR, isWin11 from .common.signal_bus import signalBus from .common.style_sheet import StyleSheet class MainSetting(ScrollArea): def __init__(self, parent=None): super().__init__(parent=parent) self.scrollWidget = QWidget() self.expandLayout = ExpandLayout(self.scrollWidget) # setting label self.settingLabel = QLabel('设置', self) # music folders self.musicInThisPCGroup = SettingCardGroup( '资源目录', self.scrollWidget) self.downloadFolderCard = PushSettingCard( '选择文件夹', FIF.DOWNLOAD, '下载目录', cfg.get(cfg.downloadFolder), self.musicInThisPCGroup ) # personalization self.personalGroup = SettingCardGroup( '个性化', self.scrollWidget) self.micaCard = SwitchSettingCard( FIF.TRANSPARENT, '云母效果', '窗口和表面显示半透明', cfg.micaEnabled, self.personalGroup ) self.themeCard = OptionsSettingCard( cfg.themeMode, FIF.BRUSH, '主题外观', '调整你的灵镜外观', texts=[ '浅色', '深色', '跟随系统' ], parent=self.personalGroup ) self.themeColorCard = CustomColorSettingCard( cfg.themeColor, FIF.PALETTE, '主题颜色', '调整你的灵镜颜色', self.personalGroup ) ''' self.zoomCard = OptionsSettingCard( cfg.dpiScale, FIF.ZOOM, '界面缩放', '调整小部件和字体的大小', texts=[ "100%", "125%", "150%", "175%", "200%", '跟随系统' ], parent=self.personalGroup ) ''' self.blurRadiusCard = RangeSettingCard( cfg.blurRadius, FIF.ALBUM, '亚克力磨砂半径', '磨砂半径越大,图像越模糊', parent=self.personalGroup ) # update software self.updateSoftwareGroup = SettingCardGroup( '版本更新', self.scrollWidget) self.updateOnStartUpCard = SwitchSettingCard( FIF.UPDATE, '在灵镜启动时检查更新', '新版本将更加稳定并拥有更多功能(建议启用此选项)', configItem=cfg.checkUpdateAtStartUp, parent=self.updateSoftwareGroup ) # application self.aboutGroup = SettingCardGroup('关于灵镜', self.scrollWidget) self.helpCard = HyperlinkCard( HELP_URL, '打开帮助页面', FIF.HELP, '帮助', '发现新功能并了解灵镜有关的使用技巧', self.aboutGroup ) self.feedbackCard = PrimaryPushSettingCard( '提供反馈', FIF.FEEDBACK, '提供反馈', '帮助我们改进灵镜', self.aboutGroup ) self.aboutCard = PrimaryPushSettingCard( '检查更新', FIF.INFO, '关于', '© 版权所有' + f" {YEAR}, {AUTHOR}. " + "当前版本 " + VERSION, self.aboutGroup ) self.__initWidget() def __initWidget(self): self.resize(1000, 800) self.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) self.setViewportMargins(0, 80, 0, 20) self.setWidget(self.scrollWidget) self.setWidgetResizable(True) self.setObjectName('settingInterface') # initialize style sheet self.scrollWidget.setObjectName('scrollWidget') self.settingLabel.setObjectName('settingLabel') StyleSheet.SETTING_INTERFACE.apply(self) self.micaCard.setEnabled(isWin11()) # initialize layout self.__initLayout() self.__connectSignalToSlot() def __initLayout(self): self.settingLabel.move(36, 30) # add cards to group self.musicInThisPCGroup.addSettingCard(self.downloadFolderCard) self.personalGroup.addSettingCard(self.micaCard) self.personalGroup.addSettingCard(self.themeCard) self.personalGroup.addSettingCard(self.themeColorCard) #self.personalGroup.addSettingCard(self.zoomCard) #self.personalGroup.addSettingCard(self.languageCard) self.personalGroup.addSettingCard(self.blurRadiusCard) self.updateSoftwareGroup.addSettingCard(self.updateOnStartUpCard) self.aboutGroup.addSettingCard(self.helpCard) self.aboutGroup.addSettingCard(self.feedbackCard) self.aboutGroup.addSettingCard(self.aboutCard) # add setting card group to layout self.expandLayout.setSpacing(28) self.expandLayout.setContentsMargins(36, 10, 36, 0) self.expandLayout.addWidget(self.musicInThisPCGroup) self.expandLayout.addWidget(self.personalGroup) self.expandLayout.addWidget(self.updateSoftwareGroup) self.expandLayout.addWidget(self.aboutGroup) def __showRestartTooltip(self): """ show restart tooltip """ InfoBar.success( '更新成功', '配置将在重启后生效', duration=1500, parent=self ) def __onDownloadFolderCardClicked(self): """ download folder card clicked slot """ folder = QFileDialog.getExistingDirectory( self, '选择文件夹', "./") if not folder or cfg.get(cfg.downloadFolder) == folder: return cfg.set(cfg.downloadFolder, folder) self.downloadFolderCard.setContent(folder) def __connectSignalToSlot(self): """ connect signal to slot """ cfg.appRestartSig.connect(self.__showRestartTooltip) # music in the pc self.downloadFolderCard.clicked.connect( self.__onDownloadFolderCardClicked) # personalization self.themeCard.optionChanged.connect(lambda ci: setTheme(cfg.get(ci))) self.themeColorCard.colorChanged.connect(lambda c: setThemeColor(c)) self.micaCard.checkedChanged.connect(signalBus.micaEnableChanged) # about self.feedbackCard.clicked.connect( lambda: QDesktopServices.openUrl(QUrl(FEEDBACK_URL)))