From 78732fc8ea168c2557e9ebb22c9bbd7699c0eb2d Mon Sep 17 00:00:00 2001 From: Lucas Patenaude Date: Sat, 31 Jan 2026 14:12:30 -0700 Subject: [PATCH] Upload modified plugin files that correct .svg rendering issue as well as adding feature for auto-enter on correct PIN --- .DS_Store | Bin 0 -> 6148 bytes pinpadlockscreen.koplugin/.DS_Store | Bin 0 -> 6148 bytes pinpadlockscreen.koplugin/_meta.lua | 0 pinpadlockscreen.koplugin/main.lua | 0 .../menu/menuentryitems.lua | 0 .../menu/pinpadmenuentry.lua | 0 pinpadlockscreen.koplugin/ui/.DS_Store | Bin 0 -> 6148 bytes pinpadlockscreen.koplugin/ui/icons/lock.svg | 0 .../ui/pinpadbuttondialog.lua | 15 ++++++++-- pinpadlockscreen.koplugin/ui/pinpaddialog.lua | 27 ++++++++++++++++-- .../util/screensaverutil.lua | 0 11 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 .DS_Store create mode 100644 pinpadlockscreen.koplugin/.DS_Store mode change 100644 => 100755 pinpadlockscreen.koplugin/_meta.lua mode change 100644 => 100755 pinpadlockscreen.koplugin/main.lua mode change 100644 => 100755 pinpadlockscreen.koplugin/menu/menuentryitems.lua mode change 100644 => 100755 pinpadlockscreen.koplugin/menu/pinpadmenuentry.lua create mode 100644 pinpadlockscreen.koplugin/ui/.DS_Store mode change 100644 => 100755 pinpadlockscreen.koplugin/ui/icons/lock.svg mode change 100644 => 100755 pinpadlockscreen.koplugin/ui/pinpadbuttondialog.lua mode change 100644 => 100755 pinpadlockscreen.koplugin/ui/pinpaddialog.lua mode change 100644 => 100755 pinpadlockscreen.koplugin/util/screensaverutil.lua diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0%XRv)pF80Dx<9S$dc!%&TVAGha|K)hSKw$BK+k5IoD2Hs z3b+EUz)k`FK14WUrI-ZsrvpPi0su>dvtiC>39gBXm0}V^1{S0gD5XJ<7(vPrkGif> zOoCEQAv0qiWe$2m37H-7n3q$i1buV`Tmh@ViCj*(|KI$4{d zZ!$m0=7UW#BBIN;?LuTOB2zS?QW+7NM_o4_+yJ%C@w$6lben#E7@6j8n)vOv@+=$a zzip3qZ9;oMqcE;efj}QT0x;k?a#x+^Pt*~Y9g87np}nR9;~`K9i7puU1qMC< D`kN^2 literal 0 HcmV?d00001 diff --git a/pinpadlockscreen.koplugin/ui/icons/lock.svg b/pinpadlockscreen.koplugin/ui/icons/lock.svg old mode 100644 new mode 100755 diff --git a/pinpadlockscreen.koplugin/ui/pinpadbuttondialog.lua b/pinpadlockscreen.koplugin/ui/pinpadbuttondialog.lua old mode 100644 new mode 100755 index 93637ba..f90f165 --- a/pinpadlockscreen.koplugin/ui/pinpadbuttondialog.lua +++ b/pinpadlockscreen.koplugin/ui/pinpadbuttondialog.lua @@ -24,6 +24,7 @@ local VerticalGroup = require("ui/widget/verticalgroup") local VerticalSpan = require("ui/widget/verticalspan") local Screen = Device.screen local util = require("util") +local RenderImage = require("ui/renderimage") local DGENERIC_ICON_SIZE = G_defaults:readSetting("DGENERIC_ICON_SIZE") @@ -83,14 +84,23 @@ function PinpadButtonDialog:init() } local aesthetic_space = VerticalSpan:new { width = Size.margin.default + Size.padding.default } + -- Pre-render the SVG to an image to avoid inconsistent caching/rasterization across multiple shows. + local icon_image = nil + local icon_path = plugin_dir and (plugin_dir .. "/icons/lock.svg") or nil + if icon_path and util.getFileNameSuffix(icon_path) == "svg" then + icon_image = RenderImage:renderSVGImageFile(icon_path, nil, nil, 1) + end local text_pin_content = VerticalGroup:new { align = "center", ImageWidget:new { - file = plugin_dir .. "/icons/lock.svg", + -- Prefer a pre-rendered image object when available; fallback to file path so existing behavior is preserved. + image = icon_image, + file = icon_image and nil or (plugin_dir .. "/icons/lock.svg"), alpha = true, width = Screen:scaleBySize(DGENERIC_ICON_SIZE) * 1.25, height = Screen:scaleBySize(DGENERIC_ICON_SIZE) * 1.25, - scale_factor = 0, + -- don't force raster scaling for SVGs; let renderer handle vector scaling for crisp output + scale_factor = nil, original_in_nightmode = false, }, aesthetic_space, @@ -204,6 +214,7 @@ function PinpadButtonDialog:init() alpha = self.alpha, anchor = self.anchor, FrameContainer:new { + -- Restore original white window background so the dialog has a proper window appearance. background = Blitbuffer.COLOR_WHITE, bordersize = Size.border.window, radius = Size.radius.window, diff --git a/pinpadlockscreen.koplugin/ui/pinpaddialog.lua b/pinpadlockscreen.koplugin/ui/pinpaddialog.lua old mode 100644 new mode 100755 index 25eada0..1da58f2 --- a/pinpadlockscreen.koplugin/ui/pinpaddialog.lua +++ b/pinpadlockscreen.koplugin/ui/pinpaddialog.lua @@ -204,7 +204,8 @@ function PinPadDialog:initializeScreensaverBackground() alpha = true, width = self.icon_size, height = self.icon_size, - scale_factor = 0, + -- don't force raster scaling for SVGs; let renderer handle vector scaling for crisp output + scale_factor = nil, original_in_nightmode = false, } self.screensaver_widget = ScreenSaverWidget:new { @@ -284,7 +285,8 @@ function PinPadDialog:showPinPad() alpha = true, width = self.icon_size, height = self.icon_size, - scale_factor = 0, + -- allow vector rendering for SVGs + scale_factor = nil, original_in_nightmode = false, } } @@ -301,7 +303,8 @@ function PinPadDialog:showPinPad() alpha = true, width = self.icon_size, height = self.icon_size, - scale_factor = 0, + -- allow vector rendering for SVGs + scale_factor = nil, original_in_nightmode = false, } } @@ -399,12 +402,25 @@ function PinPadDialog:onAppendToPin(digit) end self.pin = self.pin .. digit + -- Check whether we should auto-submit the PIN immediately: only when + -- we're in the locked/confirm_current_code stages and the entered pin + -- matches the stored PIN. + local stored_pin = G_reader_settings:readSetting("pinpadlock_pin_code") or "" + local should_auto_submit = (self.stage == "locked" or self.stage == "confirm_current_code") and (self.pin == stored_pin) + if G_reader_settings:isTrue("pinpadlock_display_digit_activated") then local temp_display_text = self.dialog_text .. digit self.dialog:updateTitle(temp_display_text) self.dialog_text = self.dialog_text .. "*" + -- If we matched the PIN, submit immediately. closeDialogs() (called in onOk) + -- will stop any timers and clean up widgets properly. + if should_auto_submit then + self:onOk() + return + end + self.digit_display_timer = UIManager:scheduleIn(1, function() self.dialog:updateTitle(self.dialog_text) self.digit_display_timer = nil @@ -412,6 +428,11 @@ function PinPadDialog:onAppendToPin(digit) else self.dialog_text = self.dialog_text .. "*" self.dialog:updateTitle(self.dialog_text) + + if should_auto_submit then + self:onOk() + return + end end end diff --git a/pinpadlockscreen.koplugin/util/screensaverutil.lua b/pinpadlockscreen.koplugin/util/screensaverutil.lua old mode 100644 new mode 100755