Skip to content

Commit 3b395f7

Browse files
Merge pull request #220 from Y-ASLant/main
激活界面重写
2 parents 56c8966 + c8dee43 commit 3b395f7

File tree

4 files changed

+658
-429
lines changed

4 files changed

+658
-429
lines changed
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
激活窗口数据模型 - 用于QML数据绑定
4+
"""
5+
6+
from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty
7+
8+
9+
class ActivationModel(QObject):
10+
"""
11+
激活窗口的数据模型,用于Python和QML之间的数据绑定.
12+
"""
13+
14+
# 属性变化信号
15+
serialNumberChanged = pyqtSignal()
16+
macAddressChanged = pyqtSignal()
17+
activationStatusChanged = pyqtSignal()
18+
activationCodeChanged = pyqtSignal()
19+
statusColorChanged = pyqtSignal()
20+
21+
# 用户操作信号
22+
copyCodeClicked = pyqtSignal()
23+
retryClicked = pyqtSignal()
24+
closeClicked = pyqtSignal()
25+
26+
def __init__(self, parent=None):
27+
super().__init__(parent)
28+
29+
# 私有属性
30+
self._serial_number = "--"
31+
self._mac_address = "--"
32+
self._activation_status = "检查中..."
33+
self._activation_code = "--"
34+
self._status_color = "#6c757d"
35+
36+
# 序列号属性
37+
@pyqtProperty(str, notify=serialNumberChanged)
38+
def serialNumber(self):
39+
return self._serial_number
40+
41+
@serialNumber.setter
42+
def serialNumber(self, value):
43+
if self._serial_number != value:
44+
self._serial_number = value
45+
self.serialNumberChanged.emit()
46+
47+
# MAC地址属性
48+
@pyqtProperty(str, notify=macAddressChanged)
49+
def macAddress(self):
50+
return self._mac_address
51+
52+
@macAddress.setter
53+
def macAddress(self, value):
54+
if self._mac_address != value:
55+
self._mac_address = value
56+
self.macAddressChanged.emit()
57+
58+
# 激活状态属性
59+
@pyqtProperty(str, notify=activationStatusChanged)
60+
def activationStatus(self):
61+
return self._activation_status
62+
63+
@activationStatus.setter
64+
def activationStatus(self, value):
65+
if self._activation_status != value:
66+
self._activation_status = value
67+
self.activationStatusChanged.emit()
68+
69+
# 激活码属性
70+
@pyqtProperty(str, notify=activationCodeChanged)
71+
def activationCode(self):
72+
return self._activation_code
73+
74+
@activationCode.setter
75+
def activationCode(self, value):
76+
if self._activation_code != value:
77+
self._activation_code = value
78+
self.activationCodeChanged.emit()
79+
80+
# 状态颜色属性
81+
@pyqtProperty(str, notify=statusColorChanged)
82+
def statusColor(self):
83+
return self._status_color
84+
85+
@statusColor.setter
86+
def statusColor(self, value):
87+
if self._status_color != value:
88+
self._status_color = value
89+
self.statusColorChanged.emit()
90+
91+
# 便捷方法
92+
def update_device_info(self, serial_number=None, mac_address=None):
93+
"""更新设备信息"""
94+
if serial_number is not None:
95+
self.serialNumber = serial_number
96+
if mac_address is not None:
97+
self.macAddress = mac_address
98+
99+
def update_activation_status(self, status, color="#6c757d"):
100+
"""更新激活状态"""
101+
self.activationStatus = status
102+
self.statusColor = color
103+
104+
def update_activation_code(self, code):
105+
"""更新激活码"""
106+
self.activationCode = code
107+
108+
def reset_activation_code(self):
109+
"""重置激活码"""
110+
self.activationCode = "--"
111+
112+
def set_status_activated(self):
113+
"""设置为已激活状态"""
114+
self.update_activation_status("已激活", "#28a745")
115+
self.reset_activation_code()
116+
117+
def set_status_not_activated(self):
118+
"""设置为未激活状态"""
119+
self.update_activation_status("未激活", "#dc3545")
120+
121+
def set_status_inconsistent(self, local_activated=False, server_activated=False):
122+
"""设置状态不一致"""
123+
if local_activated and not server_activated:
124+
self.update_activation_status("状态不一致(需重新激活)", "#ff9900")
125+
else:
126+
self.update_activation_status("状态不一致(已修复)", "#28a745")

0 commit comments

Comments
 (0)