refactor(leonapp_gui): 重构应用详情展示逻辑,直接创建窗口实例 fix(version_control.php): 修复文件路径处理和删除逻辑问题 feat(upload_app.php): 添加Markdown预览功能 style(dashboard.php): 移除冗余的padding样式 chore: 更新favicon和清理pyc缓存文件
142 lines
5.4 KiB
Python
142 lines
5.4 KiB
Python
from PyQt5.QtWidgets import (QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel,
|
|
QPushButton, QTextEdit, QGroupBox, QFormLayout, QScrollArea)
|
|
from PyQt5.QtCore import Qt
|
|
from qfluentwidgets import (InfoBar, InfoBarPosition, TitleLabel, SubtitleLabel,
|
|
PrimaryPushButton, PushButton)
|
|
import json
|
|
|
|
class AppDetailWindow(QMainWindow):
|
|
def __init__(self, api_client, app_id, parent=None):
|
|
super().__init__(parent)
|
|
self.api_client = api_client
|
|
self.app_id = app_id
|
|
self.parent_window = parent
|
|
|
|
# 设置窗口属性
|
|
self.setWindowTitle("应用详情")
|
|
self.resize(800, 600)
|
|
|
|
# 创建中心部件
|
|
self.central_widget = QWidget()
|
|
self.setCentralWidget(self.central_widget)
|
|
|
|
# 创建主布局
|
|
self.main_layout = QVBoxLayout(self.central_widget)
|
|
|
|
# 创建标题区域
|
|
self.title_layout = QHBoxLayout()
|
|
self.title_label = TitleLabel("应用详情")
|
|
self.close_button = PushButton("关闭")
|
|
self.close_button.clicked.connect(self.close)
|
|
|
|
self.title_layout.addWidget(self.title_label)
|
|
self.title_layout.addStretch()
|
|
self.title_layout.addWidget(self.close_button)
|
|
|
|
# 创建滚动区域
|
|
self.scroll_area = QScrollArea()
|
|
self.scroll_area.setWidgetResizable(True)
|
|
self.scroll_content = QWidget()
|
|
self.scroll_layout = QVBoxLayout(self.scroll_content)
|
|
|
|
# 添加滚动区域到主布局
|
|
self.scroll_area.setWidget(self.scroll_content)
|
|
|
|
# 将标题区域和滚动区域添加到主布局
|
|
self.main_layout.addLayout(self.title_layout)
|
|
self.main_layout.addWidget(self.scroll_area)
|
|
|
|
# 加载应用详情
|
|
self.load_app_detail()
|
|
|
|
def load_app_detail(self):
|
|
"""加载应用详情"""
|
|
try:
|
|
# 这里应该调用API获取应用详情
|
|
# 暂时使用模拟数据
|
|
app_data = {
|
|
"id": self.app_id,
|
|
"name": "示例应用",
|
|
"description": "这是一个示例应用,用于展示应用详情页面",
|
|
"developer_id": "1",
|
|
"developer_name": "示例开发者",
|
|
"status": "approved",
|
|
"version": "1.0.0",
|
|
"created_at": "2023-01-01 10:00:00"
|
|
}
|
|
|
|
# 清空滚动区域
|
|
for i in reversed(range(self.scroll_layout.count())):
|
|
widget = self.scroll_layout.itemAt(i).widget()
|
|
if widget is not None:
|
|
widget.setParent(None)
|
|
widget.deleteLater()
|
|
|
|
# 显示应用基本信息
|
|
self.display_app_info(app_data)
|
|
|
|
# 显示应用描述
|
|
self.display_app_description(app_data)
|
|
|
|
# 显示操作按钮
|
|
self.display_action_buttons()
|
|
|
|
except Exception as e:
|
|
InfoBar.error(
|
|
title="错误",
|
|
content=f"加载应用详情失败: {str(e)}",
|
|
orient=Qt.Horizontal,
|
|
isClosable=True,
|
|
position=InfoBarPosition.TOP,
|
|
duration=3000,
|
|
parent=self
|
|
)
|
|
|
|
def display_app_info(self, app_data):
|
|
"""显示应用基本信息"""
|
|
info_group = QGroupBox("基本信息")
|
|
info_layout = QFormLayout()
|
|
|
|
# 设置表单布局标签对齐
|
|
info_layout.setLabelAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
|
|
|
# 添加基本信息字段
|
|
info_layout.addRow("应用ID:", QLabel(app_data.get("id", "--")))
|
|
info_layout.addRow("应用名称:", QLabel(app_data.get("name", "--")))
|
|
info_layout.addRow("开发者ID:", QLabel(app_data.get("developer_id", "--")))
|
|
info_layout.addRow("开发者名称:", QLabel(app_data.get("developer_name", "--")))
|
|
info_layout.addRow("应用状态:", QLabel(app_data.get("status", "--")))
|
|
info_layout.addRow("当前版本:", QLabel(app_data.get("version", "--")))
|
|
info_layout.addRow("创建时间:", QLabel(app_data.get("created_at", "--")))
|
|
|
|
info_group.setLayout(info_layout)
|
|
self.scroll_layout.addWidget(info_group)
|
|
|
|
def display_app_description(self, app_data):
|
|
"""显示应用描述"""
|
|
description_group = QGroupBox("应用描述")
|
|
description_layout = QVBoxLayout()
|
|
|
|
description_text = QTextEdit()
|
|
description_text.setReadOnly(True)
|
|
description_text.setPlainText(app_data.get("description", "无描述信息"))
|
|
|
|
description_layout.addWidget(description_text)
|
|
description_group.setLayout(description_layout)
|
|
self.scroll_layout.addWidget(description_group)
|
|
|
|
def display_action_buttons(self):
|
|
"""显示操作按钮"""
|
|
buttons_layout = QHBoxLayout()
|
|
buttons_layout.addStretch()
|
|
|
|
refresh_button = PushButton("刷新")
|
|
refresh_button.clicked.connect(self.load_app_detail)
|
|
|
|
buttons_layout.addWidget(refresh_button)
|
|
self.scroll_layout.addLayout(buttons_layout)
|
|
|
|
def closeEvent(self, event):
|
|
"""关闭窗口事件"""
|
|
# 如果需要在关闭时执行清理操作,可以在这里添加
|
|
event.accept() |