feat(app_detail_window): 新增应用详情窗口独立组件
refactor(leonapp_gui): 重构应用详情展示逻辑,直接创建窗口实例 fix(version_control.php): 修复文件路径处理和删除逻辑问题 feat(upload_app.php): 添加Markdown预览功能 style(dashboard.php): 移除冗余的padding样式 chore: 更新favicon和清理pyc缓存文件
This commit is contained in:
BIN
pyqt5fluentdesign/__pycache__/app_detail_window.cpython-312.pyc
Normal file
BIN
pyqt5fluentdesign/__pycache__/app_detail_window.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
142
pyqt5fluentdesign/app_detail_window.py
Normal file
142
pyqt5fluentdesign/app_detail_window.py
Normal file
@@ -0,0 +1,142 @@
|
||||
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()
|
||||
@@ -240,7 +240,10 @@ class AppTab(QWidget):
|
||||
def show_app_detail(self, row, column):
|
||||
"""显示应用详情"""
|
||||
app_id = self.table.item(row, 0).text()
|
||||
self.parent().show_app_detail(app_id)
|
||||
# 直接创建应用详情窗口,而不是通过父对象调用方法
|
||||
from app_detail_window import AppDetailWindow
|
||||
detail_window = AppDetailWindow(self.api_client, app_id, self)
|
||||
detail_window.show()
|
||||
|
||||
def show_progress(self):
|
||||
"""显示进度条"""
|
||||
|
||||
Reference in New Issue
Block a user