feat(配置管理): 添加配置系统和设置界面
添加基于QConfig的配置管理系统,支持自动打开安装程序和应用打开方式的设置 新增设置标签页用于管理应用配置 更新安装确认对话框以支持配置选项 将版本号更新为Prerelease 1
This commit is contained in:
@@ -26,7 +26,7 @@ LeonApp GUI - 基于PyQt5和Fluent Design的App Store API图形界面工具
|
||||
#
|
||||
|
||||
# APP版本号
|
||||
APP_VERSION = "Beta 0.4"
|
||||
APP_VERSION = "Prerelease 1"
|
||||
|
||||
import sys
|
||||
import json
|
||||
@@ -46,11 +46,41 @@ from qfluentwidgets import (
|
||||
CardWidget, TitleLabel, SubtitleLabel, CaptionLabel, BodyLabel, PushButton,
|
||||
PrimaryPushButton, LineEdit, ComboBox, ProgressBar, TableWidget,
|
||||
ScrollArea, InfoBar, InfoBarPosition, NavigationInterface, NavigationItemPosition,
|
||||
FluentWindow, MSFluentWindow, FluentIcon, SimpleCardWidget, PrimaryPushSettingCard
|
||||
FluentWindow, MSFluentWindow, FluentIcon, SimpleCardWidget, PrimaryPushSettingCard,
|
||||
OptionsSettingCard, QConfig, ConfigItem, OptionsConfigItem, BoolValidator, OptionsValidator, qconfig
|
||||
)
|
||||
from qfluentwidgets import FluentTranslator
|
||||
from app_detail_window import AppDetailWindow
|
||||
|
||||
# 配置管理 - 使用QConfig管理配置
|
||||
class AppConfig(QConfig):
|
||||
"""应用配置类"""
|
||||
# 常规设置
|
||||
auto_open_installer = OptionsConfigItem(
|
||||
"General", "AutoOpenInstaller", True,
|
||||
OptionsValidator([True, False])
|
||||
)
|
||||
|
||||
# 应用打开方式
|
||||
# 0: Windows直接运行应用程序, 1: 打开文件夹方式
|
||||
app_open_method = OptionsConfigItem(
|
||||
"General", "AppOpenMethod", 0,
|
||||
OptionsValidator([0, 1])
|
||||
)
|
||||
|
||||
# 创建配置文件目录
|
||||
config_dir = os.path.join(os.path.dirname(__file__), "config")
|
||||
os.makedirs(config_dir, exist_ok=True)
|
||||
|
||||
# 创建配置实例并使用配置文件来初始化它
|
||||
app_config = AppConfig()
|
||||
config_path = os.path.join(config_dir, "config.json")
|
||||
qconfig.load(config_path, app_config)
|
||||
|
||||
def get_global_settings():
|
||||
"""获取全局配置"""
|
||||
return app_config
|
||||
|
||||
class APIClient:
|
||||
"""API客户端类,处理与API的通信"""
|
||||
def __init__(self, api_base_url="http://leonmmcoset.jjxmm.win:8010/api.php"):
|
||||
@@ -2562,8 +2592,93 @@ class AppInfoTab(QWidget):
|
||||
parent=self
|
||||
)
|
||||
|
||||
class SettingsTab(QWidget):
|
||||
"""设置标签页"""
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.parent = parent
|
||||
self.init_ui()
|
||||
|
||||
def init_ui(self):
|
||||
"""初始化UI"""
|
||||
# 创建主布局
|
||||
self.main_layout = QVBoxLayout(self)
|
||||
|
||||
# 创建滚动区域
|
||||
self.scroll_area = ScrollArea(self)
|
||||
self.scroll_area.setWidgetResizable(True)
|
||||
|
||||
# 创建滚动内容控件
|
||||
self.scroll_content = QWidget()
|
||||
self.scroll_layout = QVBoxLayout(self.scroll_content)
|
||||
self.scroll_layout.setContentsMargins(20, 20, 20, 20)
|
||||
|
||||
# 创建常规设置卡片
|
||||
general_card = CardWidget(self.scroll_content)
|
||||
general_layout = QVBoxLayout(general_card)
|
||||
general_layout.setContentsMargins(20, 20, 20, 20)
|
||||
|
||||
# 添加卡片标题
|
||||
title = TitleLabel("常规设置", general_card)
|
||||
general_layout.addWidget(title)
|
||||
general_layout.addSpacing(16)
|
||||
|
||||
# 添加自动打开安装程序选项
|
||||
from qfluentwidgets import FluentIcon, OptionsValidator
|
||||
|
||||
# 创建OptionsSettingCard,直接使用configItem
|
||||
self.auto_open_option = OptionsSettingCard(
|
||||
icon=FluentIcon.SETTING,
|
||||
title="下载后自动打开安装程序",
|
||||
content="设置是否在下载完成后自动打开安装程序",
|
||||
texts=["是", "否"],
|
||||
configItem=app_config.auto_open_installer,
|
||||
parent=general_card
|
||||
)
|
||||
|
||||
# 连接信号
|
||||
self.auto_open_option.optionChanged.connect(self.on_auto_open_changed)
|
||||
|
||||
general_layout.addWidget(self.auto_open_option)
|
||||
|
||||
# 添加应用打开方式选项
|
||||
self.app_open_method_option = OptionsSettingCard(
|
||||
icon=FluentIcon.SHARE,
|
||||
title="应用打开方式",
|
||||
content="选择下载完成后如何打开应用程序",
|
||||
texts=["Windows直接运行应用程序", "打开文件夹方式"],
|
||||
configItem=app_config.app_open_method,
|
||||
parent=general_card
|
||||
)
|
||||
|
||||
# 连接信号
|
||||
self.app_open_method_option.optionChanged.connect(self.on_app_open_method_changed)
|
||||
|
||||
general_layout.addWidget(self.app_open_method_option)
|
||||
|
||||
# 将常规设置卡片添加到布局
|
||||
self.scroll_layout.addWidget(general_card)
|
||||
|
||||
# 添加底部间距
|
||||
self.scroll_layout.addSpacing(20)
|
||||
|
||||
# 设置滚动区域的内容
|
||||
self.scroll_area.setWidget(self.scroll_content)
|
||||
|
||||
# 将滚动区域添加到主布局
|
||||
self.main_layout.addWidget(self.scroll_area)
|
||||
|
||||
def on_auto_open_changed(self, index):
|
||||
"""自动打开设置变更处理"""
|
||||
app_config.auto_open_installer = (index == 0)
|
||||
|
||||
def on_app_open_method_changed(self, index):
|
||||
"""应用打开方式设置变更处理"""
|
||||
app_config.app_open_method = index
|
||||
|
||||
class LeonAppGUI(MSFluentWindow):
|
||||
"""主应用窗口"""
|
||||
"""主窗口类"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
# 初始化API客户端
|
||||
@@ -2619,6 +2734,11 @@ class LeonAppGUI(MSFluentWindow):
|
||||
self.info_tab.setObjectName("info")
|
||||
self.addSubInterface(self.info_tab, FluentIcon.INFO, "应用信息")
|
||||
|
||||
# 添加设置标签页
|
||||
self.settings_tab = SettingsTab(self)
|
||||
self.settings_tab.setObjectName("settings")
|
||||
self.addSubInterface(self.settings_tab, FluentIcon.SETTING, "设置")
|
||||
|
||||
# 设置默认选中的标签页
|
||||
self.navigationInterface.setCurrentItem("homepage")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user