feat: add main entry point with upload logic

This commit is contained in:
OpenCode Bot
2026-05-24 22:56:24 +08:00
parent ac267e2277
commit 2f23dce4ac

View File

@@ -0,0 +1,108 @@
import sys
from PySide6.QtWidgets import QApplication, QMessageBox, QMainWindow
from PySide6.QtCore import QThread, Signal
from ui import UiCreator
from api import load_config, save_config, upload_file, get_file_info
class UploadThread(QThread):
finished = Signal(dict)
error = Signal(str)
progress = Signal(int)
def __init__(self, filepath, expiry, server_url):
super().__init__()
self.filepath = filepath
self.expiry = expiry
self.server_url = server_url
def run(self):
try:
self.progress.emit(50)
result = upload_file(self.filepath, self.expiry, self.server_url)
self.progress.emit(100)
self.finished.emit(result)
except Exception as e:
self.error.emit(str(e))
class MainWindow:
def __init__(self):
self.app = QApplication(sys.argv)
self.window = QMainWindow()
config = load_config()
self.server_url = config.get('server_url', 'http://localhost:5000')
self.selected_file = None
self.upload_thread = None
central = UiCreator.create_main_ui(self.window)
self.window.server_input.setText(self.server_url)
self.window.save_btn.clicked.connect(self.save_server_config)
self.window.upload_btn.clicked.connect(self.start_upload)
self.window.copy_btn.clicked.connect(self.copy_result)
self.window.drop_zone.file_dropped.connect(self.on_file_selected)
def save_server_config(self):
self.server_url = self.window.server_input.text().strip()
config = {"server_url": self.server_url, "default_expiry": "24h"}
save_config(config)
self.window.status_label.setText("状态: 配置已保存")
def on_file_selected(self, filepath):
self.selected_file = filepath
filename = filepath.split('/')[-1] if '/' in filepath else filepath.split('\\')[-1]
self.window.drop_label.setText(f"已选择: {filename}")
self.window.status_label.setText(f"状态: 已选择文件: {filename}")
def start_upload(self):
if not self.selected_file:
self.window.status_label.setText("状态: 请先选择文件")
return
expiry = self.window.expiry_combo.currentText()
self.window.progress_bar.setVisible(True)
self.window.progress_bar.setValue(30)
self.window.upload_btn.setEnabled(False)
self.window.status_label.setText("状态: 上传中...")
self.upload_thread = UploadThread(self.selected_file, expiry, self.server_url)
self.upload_thread.finished.connect(self.on_upload_success)
self.upload_thread.error.connect(self.on_upload_error)
self.upload_thread.progress.connect(self.window.progress_bar.setValue)
self.upload_thread.start()
def on_upload_success(self, result):
self.window.progress_bar.setVisible(False)
self.window.upload_btn.setEnabled(True)
share_url = result.get('share_url', '')
file_id = result.get('id', '')
filename = result.get('filename', '')
filesize = result.get('filesize', 0)
result_text = f"✅ 上传成功!\n\n文件: {filename}\n大小: {filesize:,} 字节\n\n分享链接:\n{share_url}\n\n文件ID: {file_id}"
self.window.result_area.setPlainText(result_text)
self.window.result_area.setVisible(True)
self.window.copy_btn.setVisible(True)
self.window.share_url = share_url
self.window.status_label.setText("状态: 上传完成")
def on_upload_error(self, error_msg):
self.window.progress_bar.setVisible(False)
self.window.upload_btn.setEnabled(True)
self.window.status_label.setText(f"状态: 上传失败")
QMessageBox.critical(self.window, "上传失败", error_msg)
def copy_result(self):
if hasattr(self.window, 'share_url'):
clipboard = self.app.clipboard()
clipboard.setText(self.window.share_url)
self.window.status_label.setText("状态: 链接已复制到剪贴板")
def run(self):
self.window.show()
sys.exit(self.app.exec())
if __name__ == '__main__':
MainWindow().run()