feat(app_detail_window): 添加应用预览图片功能并优化缓存管理

- 新增HorizontalFlipView组件显示应用预览图片
- 实现图片下载缓存机制和自动清理功能
- 支持多种API返回格式的图片数据解析
- 添加详细的日志记录和错误处理
- 移除不再使用的云母效果相关代码
This commit is contained in:
2025-09-28 19:19:36 +08:00
parent abdee75504
commit 1b18e4b189
5 changed files with 310 additions and 64 deletions

View File

@@ -48,7 +48,7 @@ from qfluentwidgets import (
PrimaryPushButton, LineEdit, ComboBox, ProgressBar, TableWidget,
ScrollArea, InfoBar, InfoBarPosition, NavigationInterface, NavigationItemPosition,
FluentWindow, MSFluentWindow, FluentIcon, SimpleCardWidget, PrimaryPushSettingCard,
OptionsSettingCard, QConfig, ConfigItem, OptionsConfigItem, BoolValidator, OptionsValidator, qconfig, SplashScreen
OptionsSettingCard, QConfig, ConfigItem, OptionsConfigItem, BoolValidator, OptionsValidator, qconfig, SplashScreen, NavigationAvatarWidget
)
from qfluentwidgets import FluentTranslator
from app_detail_window import AppDetailWindow
@@ -69,11 +69,7 @@ class AppConfig(QConfig):
OptionsValidator([0, 1])
)
# 云母效果
mica_effect = OptionsConfigItem(
"General", "MicaEffect", True,
OptionsValidator([True, False])
)
# 配置项已删除云母效果
# 创建配置文件目录
config_dir = os.path.join(os.path.dirname(__file__), "config")
@@ -2630,9 +2626,14 @@ class SettingsTab(QWidget):
# 创建主布局
self.main_layout = QVBoxLayout(self)
# 创建滚动区域
# 创建滚动区域并设置无样式
self.scroll_area = ScrollArea(self)
self.scroll_area.setWidgetResizable(True)
# 设置无样式但保留内容显示
self.scroll_area.setFrameShape(QFrame.NoFrame)
self.scroll_area.setStyleSheet("background-color: transparent; border: none;")
self.scroll_area.verticalScrollBar().setStyleSheet("QScrollBar:vertical { width: 0px; }")
self.scroll_area.horizontalScrollBar().setStyleSheet("QScrollBar:horizontal { height: 0px; }")
# 创建滚动内容控件
self.scroll_content = QWidget()
@@ -2682,25 +2683,9 @@ class SettingsTab(QWidget):
general_layout.addWidget(self.app_open_method_option)
# 添加云母效果选项
self.mica_effect_option = OptionsSettingCard(
icon=FluentIcon.INFO,
title="启用云母效果",
content="开启窗口的云母效果,提供更现代的视觉体验",
texts=["", ""],
configItem=app_config.mica_effect,
parent=general_card
)
# 已删除云母效果选项
# 连接信号
self.mica_effect_option.optionChanged.connect(self.on_mica_effect_changed)
general_layout.addWidget(self.mica_effect_option)
# 连接信号
self.mica_effect_option.optionChanged.connect(self.on_mica_effect_changed)
# 已经在前面添加过了,这里不需要重复添加
# 已经删除了云母效果选项
# 添加查看日志按钮
general_layout.addSpacing(20)
@@ -2729,23 +2714,7 @@ class SettingsTab(QWidget):
"""应用打开方式设置变更处理"""
app_config.app_open_method = index
def on_mica_effect_changed(self, index):
"""云母效果设置变更处理"""
app_config.mica_effect = (index == 0)
# 显示提示,告知用户需要重启应用才能生效
from qfluentwidgets import InfoBar, InfoBarPosition
from PyQt5.QtWidgets import QApplication
# 创建Sweet Alert风格的提示
InfoBar.warning(
title="需要重启应用",
content="云母效果设置已更新,需要重启应用才能生效。",
orient=Qt.Horizontal,
isClosable=True,
position=InfoBarPosition.TOP_RIGHT,
duration=3000,
parent=self
)
# 已删除云母效果处理方法
def show_logs(self):
"""显示应用日志"""
@@ -2972,22 +2941,8 @@ class LeonAppGUI(MSFluentWindow):
if os.path.exists(icon_path):
self.setWindowIcon(QIcon(icon_path))
# 根据配置启用云母效果
from qfluentwidgets import isDarkTheme
if app_config.mica_effect:
# 优先尝试设置云母效果
if hasattr(self, 'setMicaEffect'):
self.setMicaEffect(True)
# 如果没有直接的云母效果方法,尝试使用亚克力效果作为替代
elif hasattr(self, 'setAcrylicEffect'):
self.setAcrylicEffect(True)
# 如果都没有,使用窗口透明度作为最后的替代
elif hasattr(self, 'setWindowOpacity'):
self.setWindowOpacity(0.95)
else:
# 禁用效果,恢复为完全不透明
if hasattr(self, 'setWindowOpacity'):
self.setWindowOpacity(1.0)
# 已删除云母效果相关代码
# 保持窗口默认不透明状态
# 初始化UI
self.init_ui()