From 29578d74eb2bd854ba89a6fd9c57d217753dd3c4 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 31 Jul 2016 18:22:35 -0700 Subject: [PATCH 1/3] touchmenu(fix): reset page num before switching to sub menu --- frontend/ui/widget/touchmenu.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index 833e51c9e..5c2e7eccf 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -575,6 +575,7 @@ function TouchMenu:onMenuSelect(item) else table.insert(self.item_table_stack, self.item_table) self.item_table = sub_item_table + self.page = 1 self:updateItems() end end From ec6da5318c6739900a73ccc62c139a002768c61a Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 31 Jul 2016 18:26:26 -0700 Subject: [PATCH 2/3] screensaver(fix): add back menu toggle to support screensaver folder --- .luacheckrc | 2 - frontend/apps/filemanager/filemanagermenu.lua | 93 +++++++++++-------- frontend/apps/reader/modules/readermenu.lua | 26 ++++-- frontend/ui/screensaver.lua | 41 ++++---- 4 files changed, 97 insertions(+), 65 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 729129542..bddf6fb5f 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -87,8 +87,6 @@ read_globals = { "SEARCH_SERIES", "SEARCH_PATH", "KOBO_LIGHT_ON_START", - "KOBO_SCREEN_SAVER", - "KOBO_SCREEN_SAVER_LAST_BOOK", "NETWORK_PROXY", "DUSE_TURBO_LIB", "cre", diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index eec77bd26..29998b823 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -6,6 +6,7 @@ local GestureRange = require("ui/gesturerange") local InputDialog = require("ui/widget/inputdialog") local Geom = require("ui/geometry") local Device = require("device") +local Screensaver = require("ui/screensaver") local Screen = Device.screen local DEBUG = require("dbg") local _ = require("gettext") @@ -105,6 +106,61 @@ function FileManagerMenu:setUpdateItemTable() G_reader_settings:saveSetting("open_last", not open_last) end }) + if Device.isKobo() then + table.insert(self.tab_item_table.setting, { + text = _("Screensaver"), + sub_item_table = { + { + text = _("Use last book's cover as screensaver"), + checked_func = Screensaver.isUsingBookCover, + callback = function() + if Screensaver:isUsingBookCover() then + G_reader_settings:saveSetting( + "use_lastfile_as_screensaver", false) + else + G_reader_settings:delSetting( + "use_lastfile_as_screensaver") + end + end + }, + { + text = _("Screensaver folder"), + callback = function() + local ss_folder_path_input + local function save_folder_path() + G_reader_settings:saveSetting( + "screensaver_folder", ss_folder_path_input:getInputText()) + UIManager:close(ss_folder_path_input) + end + local curr_path = G_reader_settings:readSetting("screensaver_folder") + ss_folder_path_input = InputDialog:new{ + title = _("Screensaver folder"), + input = curr_path, + input_hint = "/mnt/onboard/screensaver", + input_type = "text", + buttons = { + { + { + text = _("Cancel"), + callback = function() + UIManager:close(ss_folder_path_input) + end, + }, + { + text = _("Save"), + is_enter_default = true, + callback = save_folder_path, + }, + } + }, + } + ss_folder_path_input:onShowKeyboard() + UIManager:show(ss_folder_path_input) + end, + }, + } + }) + end -- insert common settings for i, common_setting in ipairs(require("ui/elements/common_settings_menu_table")) do table.insert(self.tab_item_table.setting, common_setting) @@ -117,43 +173,6 @@ function FileManagerMenu:setUpdateItemTable() end -- tools tab - if Device.isKobo() then - table.insert(self.tab_item_table.tools, { - text = _("Screensaver folder"), - callback = function() - local ss_folder_path_input - local function save_folder_path() - G_reader_settings:saveSetting( - "screensaver_folder", ss_folder_path_input:getInputText()) - UIManager:close(ss_folder_path_input) - end - local curr_path = G_reader_settings:readSetting("screensaver_folder") - ss_folder_path_input = InputDialog:new{ - title = _("Screensaver folder"), - input = curr_path, - input_hint = "/mnt/onboard/screensaver", - input_type = "text", - buttons = { - { - { - text = _("Cancel"), - callback = function() - UIManager:close(ss_folder_path_input) - end, - }, - { - text = _("Save"), - is_enter_default = true, - callback = save_folder_path, - }, - } - }, - } - ss_folder_path_input:onShowKeyboard() - UIManager:show(ss_folder_path_input) - end, - }) - end table.insert(self.tab_item_table.tools, { text = _("Advanced settings"), callback = function() diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index ffed21153..9aa93f9c2 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -4,6 +4,7 @@ local GestureRange = require("ui/gesturerange") local UIManager = require("ui/uimanager") local Device = require("device") local Geom = require("ui/geometry") +local Screensaver = require("ui/screensaver") local Event = require("ui/event") local Screen = require("device").screen local DEBUG = require("dbg") @@ -114,29 +115,38 @@ function ReaderMenu:setUpdateItemTable() table.insert(self.tab_item_table.info, common_setting) end - if Device:isKobo() and KOBO_SCREEN_SAVER_LAST_BOOK then + if Device:isKobo() and Screensaver:isUsingBookCover() then local excluded = function() return self.ui.doc_settings:readSetting("exclude_screensaver") or false end local proportional = function() return self.ui.doc_settings:readSetting("proportional_screensaver") or false end - table.insert(self.tab_item_table.typeset, { + table.insert(self.tab_item_table.setting, { text = _("Screensaver"), sub_item_table = { { - text = _("Use this book's cover as screensaver"), - checked_func = function() return not excluded() end, + text = _("Exclude this book's cover from screensaver"), + checked_func = excluded, callback = function() - self.ui.doc_settings:saveSetting("exclude_screensaver", not excluded()) + if excluded() then + self.ui.doc_settings:delSetting("exclude_screensaver") + else + self.ui.doc_settings:saveSetting("exclude_screensaver", true) + end self.ui:saveSettings() end }, { - text = _("Display proportional cover image in screensaver"), - checked_func = function() return proportional() end, + text = _("Auto stretch this book's cover image in screensaver"), + checked_func = proportional, callback = function() - self.ui.doc_settings:saveSetting("proportional_screensaver", not proportional()) + if proportional() then + self.ui.doc_settings:delSetting("proportional_screensaver") + else + self.ui.doc_settings:saveSetting( + "proportional_screensaver", not proportional()) + end self.ui:saveSettings() end } diff --git a/frontend/ui/screensaver.lua b/frontend/ui/screensaver.lua index 3ff9d33c3..adaf9cca3 100644 --- a/frontend/ui/screensaver.lua +++ b/frontend/ui/screensaver.lua @@ -60,38 +60,42 @@ local function getRandomImage(dir) return createWidgetFromFile(dir .. pics[math.random(i)]) end +function Screensaver:isUsingBookCover() + -- this setting is on by default + return G_reader_settings:readSetting('use_lastfile_as_screensaver') ~= false +end + function Screensaver:getCoverImage(file) local ImageWidget = require("ui/widget/imagewidget") local doc = DocumentRegistry:openDocument(file) - if doc then - local image = doc:getCoverPageImage() - doc:close() - local lastfile = G_reader_settings:readSetting("lastfile") - local data = DocSettings:open(lastfile) - local proportional_cover = data:readSetting("proportional_screensaver") - if image then - return createWidgetFromImage( - ImageWidget:new{ - image = image, - height = Screen:getHeight(), - width = Screen:getWidth(), - autostretch = proportional_cover, - }) - end + if not doc then return end + + local image = doc:getCoverPageImage() + doc:close() + local lastfile = G_reader_settings:readSetting("lastfile") + local doc_settings = DocSettings:open(lastfile) + if image then + local img_widget = ImageWidget:new{ + image = image, + height = Screen:getHeight(), + width = Screen:getWidth(), + autostretch = doc_settings:readSetting("proportional_screensaver"), + } + return createWidgetFromImage(img_widget) end end function Screensaver:show() DEBUG("show screensaver") local InfoMessage = require("ui/widget/infomessage") - -- first check book cover image + -- first check book cover image, on by default local screen_saver_last_book = G_reader_settings:readSetting("use_lastfile_as_screensaver") if screen_saver_last_book == nil or screen_saver_last_book then local lastfile = G_reader_settings:readSetting("lastfile") if lastfile then - local data = DocSettings:open(lastfile) - local exclude = data:readSetting("exclude_screensaver") + local doc_settings = DocSettings:open(lastfile) + local exclude = doc_settings:readSetting("exclude_screensaver") if not exclude then self.suspend_msg = self:getCoverImage(lastfile) end @@ -99,6 +103,7 @@ function Screensaver:show() end -- then screensaver directory or file image if not self.suspend_msg then + -- FIXME: rename this config to screen_saver_path local screen_saver_folder = G_reader_settings:readSetting("screensaver_folder") if screen_saver_folder == nil From 73dc44a639369ee291db0e600dbeb27d9d5b2b44 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 31 Jul 2016 18:26:42 -0700 Subject: [PATCH 3/3] minor: ignore kobo builds --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index accf69fef..df7f97ae3 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,7 @@ koreader-android-arm-linux-androideabi koreader-kindle-legacy-arm-kindle-linux-gnueabi koreader-kindle-arm-linux-gnueabi koreader-kobo-arm-linux-gnueabihf* -koreader-kobo-arm-kobo-linux-gnueabi +koreader-kobo-arm-kobo-linux-gnueabi* koreader-emulator-i686-w64-mingw32 koreader-emulator-x86_64-linux-gnu koreader-emulator-x86_64-pc-linux-gnu