diff --git a/doc/Hacking.md b/doc/Hacking.md index 45aa0bcb7..725c0c1e2 100644 --- a/doc/Hacking.md +++ b/doc/Hacking.md @@ -4,10 +4,11 @@ Hacking Developing UI Widgets --------------------- -If you need to create new UI widgets, `utils/wbuilder.lua` is your friend. It +`utils/wbuilder.lua` is your friend, if you need to create new UI widgets. It sets up a minimal environment to bootstrap KOReader's UI framework to avoid starting the whole reader. This gives you quick feedback loop while iterating -through your widget changes. +through your widget changes. It's also a handy tool for debugging widget +issues. To get a taste of how it works, try running this command at the root of KOReader's source tree: @@ -19,5 +20,5 @@ KOReader's source tree: It will spawn up an emulator window with a grid and simple timer widget for demonstration. -You can add your own `UIManager:show` show call at the end of -`utils/wbuilder.lua` to test your new widget. +You can add more `UIManager:show` call at the end of `utils/wbuilder.lua` to +test your new widgets. diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index 5fb328b07..fa5730279 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -17,7 +17,6 @@ local Font = require("ui/font") local _ = require("gettext") local util = require("util") -local auto_refresh_scheduled = false local ReaderFooter = InputContainer:new{ mode = 1, @@ -158,8 +157,16 @@ function ReaderFooter:init() end self.mode = G_reader_settings:readSetting("reader_footer_mode") or self.mode self:applyFooterMode() - if self.settings.auto_refresh_time and not auto_refresh_scheduled then - self:autoRefreshTime() + if self.settings.auto_refresh_time then + self.autoRefreshTime = function() + self:updateFooterPage() + UIManager:setDirty(self.view.dialog, "ui", self[1][1][1].dimen) + UIManager:scheduleIn(61 - tonumber(os.date("%S")), self.autoRefreshTime) + end + UIManager:scheduleIn(61 - tonumber(os.date("%S")), self.autoRefreshTime) + self.onCloseDocument = function() + UIManager:unschedule(self.autoRefreshTime) + end end end @@ -213,19 +220,6 @@ function ReaderFooter:addToMainMenu(tab_item_table) }) end -function ReaderFooter:autoRefreshTime() - if self.settings.auto_refresh_time then - UIManager:scheduleIn(61 - tonumber(os.date("%S")) , function() - self:autoRefreshTime() - self:updateFooterPage() - UIManager:setDirty(self.view.dialog, "ui", self[1][1][1].dimen) - end) - auto_refresh_scheduled = true - else - auto_refresh_scheduled = false - end -end - function ReaderFooter:getBatteryInfo() local powerd = Device:getPowerDevice() return "B:" .. (powerd:isCharging() and "+" or "") .. powerd:getCapacity() .. "%"