Compare commits

...

2 Commits

Author SHA1 Message Date
ruisu
58d7dc35b5 feat: 优化激活码输入框,支持已激活状态下叠加时长 2025-02-17 20:55:25 +08:00
ruisu
b50029b673 feat: 添加会员状态定时检测功能 2025-02-17 20:52:37 +08:00

View File

@@ -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,47 @@ class MainWindow(QMainWindow):
self.member_info.append(f"到期时间: {account_info['expire_time']}")
self.member_info.append(f"剩余天数: {account_info['days_left']}")
# 清空激活码输入框并更新提示(不禁用输入框)
self.activate_input.clear()
self.activate_input.setPlaceholderText("输入激活码可叠加时长")
# 启用更新按钮
self.update_button.setEnabled(True)
# 显示成功消息
QMessageBox.information(self, "激活成功",
f"设备已成功激活!\n"
f"激活成功\n"
f"到期时间: {account_info['expire_time']}\n"
f"剩余天数: {account_info['days_left']}")
# 清空激活码输入框
self.activate_input.clear()
f"剩余天数: {account_info['days_left']}\n"
f"您可以继续输入其他激活码叠加时长")
logging.info(f"设备激活成功,到期时间: {account_info['expire_time']}")
else:
# 恢复激活输入框
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.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 +402,108 @@ 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.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.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: