注册码增加测试功能

This commit is contained in:
张开科 2025-03-10 14:23:56 +08:00
parent 7f6d43be70
commit bc36533ef7
2 changed files with 50 additions and 14 deletions

View File

@ -35,7 +35,15 @@ class RegistrationInterface(DbusInterfaceCommonAsync, interface_name="org.regist
raise NotImplementedError
@dbus_method_async(input_signature="s", result_signature="b")
async def reset_registration(self, val: str) -> bool:
async def test_registration(self, val: str) -> bool:
raise NotImplementedError
@dbus_method_async(result_signature="b")
async def add_registration_time(self) -> bool:
raise NotImplementedError
@dbus_method_async(result_signature="b")
async def minus_registration_time(self) -> bool:
raise NotImplementedError
@dbus_property_async(property_signature="b")
@ -146,12 +154,24 @@ class LicenseManager:
return self._async_call(_verify, default=False)
def reset_registration(self, code: str) -> bool:
def test_registration(self, code: str) -> bool:
async def _reset():
return await self.registration_interface.proxy.reset_registration(code)
return await self.registration_interface.proxy.test_registration(code)
return self._async_call(_reset, default=False)
def add_registration_time(self) -> bool:
async def _add():
return await self.registration_interface.proxy.add_registration_time()
return self._async_call(_add, default=False)
def minus_registration_time(self) -> bool:
async def _minus():
return await self.registration_interface.proxy.minus_registration_time()
return self._async_call(_minus, default=False)
def enabled_registration(self) -> bool:
async def _get():
return await self.registration_interface.proxy.enabled_registration

View File

@ -17,6 +17,9 @@ class Panel(ScreenPanel):
+ _("Please enter a key to activate")
)
self.key_len = 15
self.key_val_test = 1
self.key_val_add = 2
self.key_val_minus = 3
self.full = False
self.interface = screen.license
self.serial_num = self.interface.get_unique_id() or _("Unknown")
@ -71,6 +74,13 @@ class Panel(ScreenPanel):
for child in self.content.get_children():
self.content.remove(child)
def display_test_dialog(self, key_text=""):
buttons = [
{"name": _("Add"), "response": self.key_val_add, "style": "dialog-secondary"},
{"name": _("Minus"), "response": self.key_val_minus, "style": "dialog-info"},
{"name": _("Close"), "response": Gtk.ResponseType.CLOSE, "style": "dialog-error"},
]
self.create_license_key_dialog(buttons=buttons, key=key_text)
def display_dialog(self, full=False, key=""):
BUTTON_CONFIGS = {
"trial_with_callback": [
@ -78,7 +88,7 @@ class Panel(ScreenPanel):
{"name": _("Skip"), "response": Gtk.ResponseType.CANCEL, "style": "dialog-error"},
],
"full_features": [
{"name": _("Reset"), "response": Gtk.ResponseType.APPLY, "style": "dialog-secondary"},
{"name": _("Test Mode"), "response": self.key_val_test, "style": "dialog-secondary"},
{"name": _("Activate"), "response": Gtk.ResponseType.OK, "style": "dialog-info"},
{"name": _("Close"), "response": Gtk.ResponseType.CLOSE, "style": "dialog-error"},
],
@ -133,6 +143,7 @@ class Panel(ScreenPanel):
status_text = _("Unknown")
elif self.is_active:
status_text = _("Permanent Activation")
self.title_label.set_markup(f"<big>{status_text}</big>\n")
self.license_box["state_text"], self.license_box["state_text_value"] = add_labeled_value(
0, _("State:"), status_text
)
@ -180,16 +191,6 @@ class Panel(ScreenPanel):
if response_id == Gtk.ResponseType.YES:
if self.interface.enabled_registration():
self.state_update(_("Enabled successfully"))
elif response_id == Gtk.ResponseType.APPLY:
if len(self.license_box["key_input"].get_text()) == 0:
self.state_update(_("Key is empty"))
return
else:
if self.interface.reset_registration(self.license_box["key_input"].get_text()):
self.update_time()
self.state_update(_("Reset successfully"))
else:
self.state_update(_("Key is invalid"))
elif response_id == Gtk.ResponseType.CLOSE:
self._gtk.remove_dialog(dialog)
self._screen._menu_go_back()
@ -205,6 +206,21 @@ class Panel(ScreenPanel):
return
self.verify_key(self.license_box["key_input"].get_text())
self.update_time()
elif response_id == self.key_val_test:
if len(self.license_box["key_input"].get_text()) == 0:
self.state_update(_("Key is empty"))
return
if self.interface.test_registration(self.license_box["key_input"].get_text()):
self._gtk.remove_dialog(dialog)
self.display_test_dialog()
else:
self.state_update(_("Key is invalid"))
elif response_id == self.key_val_add:
self.interface.add_registration_time()
self.update_time()
elif response_id == self.key_val_minus:
self.interface.minus_registration_time()
self.update_time()
def on_show_keyboard(self, entry=None, event=None):
self._gtk.remove_dialog(self.dialog)