From bc36533ef7266c49c2ef8d9429fca1bc3fadf6f0 Mon Sep 17 00:00:00 2001 From: zkk <1007518571@qq.com> Date: Mon, 10 Mar 2025 14:23:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=A0=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ks_includes/sdbus_reg.py | 26 +++++++++++++++++++++++--- panels/license.py | 38 +++++++++++++++++++++++++++----------- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/ks_includes/sdbus_reg.py b/ks_includes/sdbus_reg.py index 7007b4b3..f2148e20 100644 --- a/ks_includes/sdbus_reg.py +++ b/ks_includes/sdbus_reg.py @@ -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 diff --git a/panels/license.py b/panels/license.py index e83b818b..a18dc041 100644 --- a/panels/license.py +++ b/panels/license.py @@ -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"{status_text}\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)