add lot of things

This commit is contained in:
2025-09-28 17:33:42 +08:00
parent 0e54dce62a
commit abdee75504
101 changed files with 3739 additions and 234 deletions

View File

@@ -6,6 +6,7 @@ from PyQt5.QtGui import QPixmap, QFont
from qfluentwidgets import (InfoBar, InfoBarPosition, TitleLabel, SubtitleLabel,
PrimaryPushButton, PushButton, ScrollArea, CardWidget,
FluentIcon, SimpleCardWidget, BodyLabel)
from loguru import logger
import json
import os
import requests
@@ -15,7 +16,10 @@ import subprocess
import platform
def show_error_dialog(title, message):
"""显示错误弹窗模拟Sweet Alert风格"""
"""显示错误弹窗模拟Sweet Alert风格并记录日志"""
# 记录错误日志
logger.error(f"{title}: {message}")
# 创建错误消息框
msg_box = QMessageBox()
msg_box.setIcon(QMessageBox.Critical)
@@ -388,7 +392,7 @@ class AppDetailWindow(QMainWindow):
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
/* color: white; */
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(0, 0, 0, 0.1);
}
#StatsCard QLabel {
/* color: white; */
@@ -444,7 +448,7 @@ class AppDetailWindow(QMainWindow):
#InfoCard {
background-color: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.05);
}
""")
@@ -531,7 +535,7 @@ class AppDetailWindow(QMainWindow):
#DescriptionCard {
background-color: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.05);
}
""")
@@ -640,7 +644,7 @@ class AppDetailWindow(QMainWindow):
#ButtonCard {
background-color: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.05);
}
""")
@@ -669,9 +673,14 @@ class AppDetailWindow(QMainWindow):
from qfluentwidgets import InfoBar, MessageBox
from PyQt5.QtWidgets import QProgressDialog
from leonapp_gui import get_global_settings
from loguru import logger
app_name = self.app_data.get('name', '未知应用') if hasattr(self, 'app_data') else '未知应用'
logger.info(f"用户开始安装应用,应用名称: {app_name}")
# 检查是否有应用数据
if not hasattr(self, 'app_data'):
logger.error("应用安装失败:应用数据未加载")
show_error_dialog("错误", "应用数据未加载,请刷新页面后重试。")
return
@@ -735,9 +744,12 @@ class AppDetailWindow(QMainWindow):
# 4. 如果仍然没有下载链接,显示错误信息
if not download_url:
logger.error(f"应用安装失败:无法获取{app_name}的下载链接")
show_error_dialog("错误", "无法获取应用的下载链接,请稍后重试。\n可能原因API返回数据中缺少下载链接字段。")
return
logger.info(f"成功获取{app_name}的下载链接: {download_url}")
# 5. 更健壮的URL处理逻辑
from urllib.parse import urlparse, quote
import os
@@ -829,6 +841,11 @@ class AppDetailWindow(QMainWindow):
def on_download_finished(self, file_path):
"""下载完成处理"""
from loguru import logger
app_name = self.app_data.get('name', '未知应用') if hasattr(self, 'app_data') else '未知应用'
logger.info(f"应用{app_name}下载完成,保存位置: {file_path}")
self.progress_dialog.accept()
# 确保subprocess模块可用
@@ -942,6 +959,11 @@ class AppDetailWindow(QMainWindow):
def on_download_error(self, error_msg):
"""下载错误处理"""
from loguru import logger
app_name = self.app_data.get('name', '未知应用') if hasattr(self, 'app_data') else '未知应用'
logger.error(f"应用{app_name}下载失败: {error_msg}")
self.progress_dialog.reject()
# 使用Sweet Alert风格弹窗显示错误
@@ -993,7 +1015,7 @@ class AppDetailWindow(QMainWindow):
self.copy_to_clipboard(app_share_url)
def copy_to_clipboard(self, text):
"""复制文本到剪贴板"""
# 复制文本到剪贴板
from qfluentwidgets import InfoBar
clipboard = QApplication.clipboard()
clipboard.setText(text)
@@ -1008,6 +1030,6 @@ class AppDetailWindow(QMainWindow):
)
def closeEvent(self, event):
"""关闭窗口事件"""
# 关闭窗口事件
# 如果需要在关闭时执行清理操作,可以在这里添加
event.accept()