From b50029b673b22708bced4bede88c50936fc0fcff Mon Sep 17 00:00:00 2001 From: ruisu Date: Mon, 17 Feb 2025 20:52:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=AE=9A=E6=97=B6=E6=A3=80=E6=B5=8B=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui/main_mac.py | 131 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 124 insertions(+), 7 deletions(-) diff --git a/gui/main_mac.py b/gui/main_mac.py index ddf635c..af7389b 100644 --- a/gui/main_mac.py +++ b/gui/main_mac.py @@ -57,7 +57,7 @@ try: from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QLabel, QLineEdit, QTextEdit, QMessageBox, QHBoxLayout, QFrame, QStackedWidget) - from PyQt5.QtCore import Qt, QThread, pyqtSignal + from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer from PyQt5.QtGui import QFont, QIcon, QPalette, QColor from update_cursor_token import CursorTokenUpdater from logger import logging @@ -109,6 +109,8 @@ class MainWindow(QMainWindow): self.init_ui() # 检查会员状态 self.check_member_status() + # 启动定时检测 + self.setup_status_timer() logging.info("主窗口初始化完成") except Exception as e: logging.error(f"初始化主窗口时发生错误: {str(e)}") @@ -320,6 +322,8 @@ class MainWindow(QMainWindow): self.update_button.setEnabled(False) # 显示处理中的提示 + self.member_info.clear() + self.member_info.append("正在激活,请稍候...") QApplication.processEvents() # 调用激活接口 @@ -332,27 +336,49 @@ class MainWindow(QMainWindow): self.member_info.append(f"到期时间: {account_info['expire_time']}") self.member_info.append(f"剩余天数: {account_info['days_left']}天") + # 禁用激活输入框 + self.activate_input.setEnabled(False) + self.activate_input.clear() + self.activate_input.setPlaceholderText("已激活") + + # 启用更新按钮 + self.update_button.setEnabled(True) + # 显示成功消息 QMessageBox.information(self, "激活成功", f"设备已成功激活!\n" f"到期时间: {account_info['expire_time']}\n" f"剩余天数: {account_info['days_left']}天") - # 清空激活码输入框 - self.activate_input.clear() - logging.info(f"设备激活成功,到期时间: {account_info['expire_time']}") else: + # 恢复激活输入框 + self.activate_input.setEnabled(True) + self.activate_input.setPlaceholderText("请输入激活码") + + # 更新状态显示 + self.member_info.clear() + self.member_info.append("会员状态: 未激活") + self.member_info.append("请输入激活码进行激活") + QMessageBox.warning(self, "激活失败", message) logging.error(f"激活失败: {message}") except Exception as e: + # 恢复激活输入框 + self.activate_input.setEnabled(True) + self.activate_input.setPlaceholderText("请输入激活码") + + # 更新状态显示 + self.member_info.clear() + self.member_info.append("会员状态: 激活失败") + self.member_info.append("请重新尝试") + logging.error(f"激活过程中发生错误: {str(e)}") QMessageBox.critical(self, "错误", f"激活过程发生错误: {str(e)}") finally: - # 恢复按钮状态 - self.activate_input.setEnabled(True) - self.update_button.setEnabled(True) + # 根据激活状态设置更新按钮状态 + self.update_button.setEnabled(success if 'success' in locals() else False) def disable_cursor_update(self): try: @@ -378,19 +404,110 @@ class MainWindow(QMainWindow): self.member_info.append(f"会员状态: 已激活") self.member_info.append(f"到期时间: {account_info['expire_time']}") self.member_info.append(f"剩余天数: {account_info['days_left']}天") + + # 禁用激活输入框和按钮 + self.activate_input.setEnabled(False) + self.activate_input.setPlaceholderText("已激活") + + # 启用更新按钮 + self.update_button.setEnabled(True) + logging.info(f"会员状态检查完成 - 到期时间: {account_info['expire_time']}") else: # 显示未激活状态 self.member_info.clear() self.member_info.append("会员状态: 未激活") self.member_info.append("请输入激活码进行激活") + + # 启用激活输入框和按钮 + self.activate_input.setEnabled(True) + self.activate_input.setPlaceholderText("请输入激活码") + + # 禁用更新按钮 + self.update_button.setEnabled(False) + logging.warning("会员状态检查结果:未激活") + if message and "设备未激活" not in message: + QMessageBox.warning(self, "提示", message) + except Exception as e: self.member_info.clear() self.member_info.append("会员状态: 检查失败") self.member_info.append("请稍后重试") + + # 启用激活输入框和按钮 + self.activate_input.setEnabled(True) + self.activate_input.setPlaceholderText("请输入激活码") + + # 禁用更新按钮 + self.update_button.setEnabled(False) + logging.error(f"检查会员状态时发生错误: {str(e)}") + QMessageBox.warning(self, "错误", f"检查会员状态失败: {str(e)}") + + def setup_status_timer(self): + """设置定时检测会员状态""" + try: + self.status_timer = QTimer(self) + self.status_timer.timeout.connect(self.silent_check_member_status) + # 设置3分钟检测一次 (180000毫秒) + self.status_timer.start(180000) + logging.info("会员状态定时检测已启动") + except Exception as e: + logging.error(f"设置定时器时发生错误: {str(e)}") + + def silent_check_member_status(self): + """静默检查会员状态""" + try: + logging.info("开始静默检查会员状态...") + success, message, account_info = self.updater.check_member_status() + + if success and account_info: + # 更新会员信息显示 + self.member_info.clear() + self.member_info.append(f"会员状态: 已激活") + self.member_info.append(f"到期时间: {account_info['expire_time']}") + self.member_info.append(f"剩余天数: {account_info['days_left']}天") + + # 禁用激活输入框和按钮 + self.activate_input.setEnabled(False) + self.activate_input.setPlaceholderText("已激活") + + # 启用更新按钮 + self.update_button.setEnabled(True) + + logging.info(f"静默检查完成 - 会员状态正常,到期时间: {account_info['expire_time']}") + else: + # 显示未激活状态 + self.member_info.clear() + self.member_info.append("会员状态: 未激活") + self.member_info.append("请输入激活码进行激活") + + # 启用激活输入框和按钮 + self.activate_input.setEnabled(True) + self.activate_input.setPlaceholderText("请输入激活码") + + # 禁用更新按钮 + self.update_button.setEnabled(False) + + logging.warning("静默检查结果:会员未激活") + + except Exception as e: + logging.error(f"静默检查会员状态时发生错误: {str(e)}") + # 静默检查出错时不显示错误提示,只记录日志 + + def closeEvent(self, event): + """窗口关闭事件""" + try: + # 停止定时器 + if hasattr(self, 'status_timer'): + self.status_timer.stop() + logging.info("应用程序正常关闭") + event.accept() + except Exception as e: + logging.error(f"关闭窗口时发生错误: {str(e)}") + event.accept() def main(): try: