feat(ui): 主页添加主题活动信息

This commit is contained in:
DLmaster
2025-03-02 17:14:09 +08:00
parent 3499fa9067
commit d1c8f98408

View File

@@ -36,7 +36,14 @@ from PySide6.QtWidgets import (
) )
from PySide6.QtCore import Qt, QSize, QUrl from PySide6.QtCore import Qt, QSize, QUrl
from PySide6.QtGui import QDesktopServices, QColor from PySide6.QtGui import QDesktopServices, QColor
from qfluentwidgets import FluentIcon, ScrollArea, SimpleCardWidget, PrimaryToolButton from qfluentwidgets import (
FluentIcon,
ScrollArea,
SimpleCardWidget,
PrimaryToolButton,
TextBrowser,
)
import re
import shutil import shutil
import requests import requests
import json import json
@@ -55,9 +62,13 @@ class Home(QWidget):
self.setObjectName("主页") self.setObjectName("主页")
self.banner = Banner() self.banner = Banner()
self.banner.set_percentage_size( self.banner_text = TextBrowser()
0.8, 0.5
) # 设置 Banner 大小为窗口的 80% 宽度和 50% 高度 widget = QWidget()
Layout = QVBoxLayout(widget)
Layout.addWidget(self.banner)
Layout.addWidget(self.banner_text)
v_layout = QVBoxLayout(self.banner) v_layout = QVBoxLayout(self.banner)
v_layout.setContentsMargins(0, 0, 0, 15) v_layout.setContentsMargins(0, 0, 0, 15)
@@ -138,7 +149,7 @@ class Home(QWidget):
layout = QVBoxLayout() layout = QVBoxLayout()
scrollArea = ScrollArea() scrollArea = ScrollArea()
scrollArea.setWidgetResizable(True) scrollArea.setWidgetResizable(True)
scrollArea.setWidget(self.banner) scrollArea.setWidget(widget)
layout.addWidget(scrollArea) layout.addWidget(scrollArea)
self.setLayout(layout) self.setLayout(layout)
@@ -243,11 +254,11 @@ class Home(QWidget):
) as file: ) as file:
file.write(response.content) file.write(response.content)
logger.info("主题图像下载成功") logger.info(f"主题图像{theme_image["name"]}下载成功")
MainInfoBar.push_info_bar( MainInfoBar.push_info_bar(
"success", "success",
"主题图像下载成功", "主题图像下载成功",
"主题图像下载成功!", f"{theme_image["name"]}下载成功!",
3000, 3000,
) )
@@ -288,6 +299,7 @@ class Home(QWidget):
str(Config.app_path / "resources/images/Home/BannerDefault.png") str(Config.app_path / "resources/images/Home/BannerDefault.png")
) )
self.imageButton.hide() self.imageButton.hide()
self.banner_text.setVisible(False)
elif ( elif (
Config.global_config.get(Config.global_config.function_HomeImageMode) Config.global_config.get(Config.global_config.function_HomeImageMode)
== "自定义" == "自定义"
@@ -296,6 +308,7 @@ class Home(QWidget):
self.banner.set_banner_image(str(file)) self.banner.set_banner_image(str(file))
break break
self.imageButton.show() self.imageButton.show()
self.banner_text.setVisible(False)
elif ( elif (
Config.global_config.get(Config.global_config.function_HomeImageMode) Config.global_config.get(Config.global_config.function_HomeImageMode)
== "主题图像" == "主题图像"
@@ -304,6 +317,18 @@ class Home(QWidget):
str(Config.app_path / "resources/images/Home/BannerTheme.jpg") str(Config.app_path / "resources/images/Home/BannerTheme.jpg")
) )
self.imageButton.show() self.imageButton.show()
self.banner_text.setVisible(True)
if (Config.app_path / "resources/theme_image.json").exists():
with (Config.app_path / "resources/theme_image.json").open(
mode="r", encoding="utf-8"
) as f:
theme_image = json.load(f)
html_content = theme_image["html"]
else:
html_content = "<h1>主题图像</h1><p>主题图像信息未知</p>"
self.banner_text.setHtml(re.sub(r"<img[^>]*>", "", html_content))
class ButtonGroup(SimpleCardWidget): class ButtonGroup(SimpleCardWidget):