diff --git a/defaults.lua b/defaults.lua index 6fa73ea3a..c422b77ca 100644 --- a/defaults.lua +++ b/defaults.lua @@ -83,6 +83,9 @@ DCREREADER_CONFIG_FONT_SIZES = {16, 20, 22, 24, 28, 32, 38, 44} -- range from 1 -- gesture detector defaults DGESDETECT_DISABLE_DOUBLE_TAP = true +-- change this to any numerical value if you want to antomatically save settings when turning pages +DAUTO_SAVE_PAGING_COUNT = nil + -- #################################################################### -- following features are not supported right now -- #################################################################### diff --git a/frontend/ui/reader/readerbookmark.lua b/frontend/ui/reader/readerbookmark.lua index aa5332ae2..c7602d07e 100644 --- a/frontend/ui/reader/readerbookmark.lua +++ b/frontend/ui/reader/readerbookmark.lua @@ -29,7 +29,7 @@ function ReaderBookmark:onReadSettings(config) self.bookmarks = config:readSetting("bookmarks") or {} end -function ReaderBookmark:onCloseDocument() +function ReaderBookmark:onSaveSettings() self.ui.doc_settings:saveSetting("bookmarks", self.bookmarks) end diff --git a/frontend/ui/reader/readerconfig.lua b/frontend/ui/reader/readerconfig.lua index 72a68d57d..d4f32bbf9 100644 --- a/frontend/ui/reader/readerconfig.lua +++ b/frontend/ui/reader/readerconfig.lua @@ -87,7 +87,7 @@ function ReaderConfig:onReadSettings(config) self.last_panel_index = config:readSetting("config_panel_index") or 1 end -function ReaderConfig:onCloseDocument() +function ReaderConfig:onSaveSettings() self.configurable:saveSettings(self.ui.doc_settings, self.options.prefix.."_") self.ui.doc_settings:saveSetting("config_panel_index", self.last_panel_index) end diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index e14879fe0..ef7637c40 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -156,7 +156,7 @@ function ReaderCropping:onReadSettings(config) self.document.bbox = config:readSetting("bbox") end -function ReaderCropping:onCloseDocument() +function ReaderCropping:onSaveSettings() self.ui.doc_settings:saveSetting("bbox", self.document.bbox) end diff --git a/frontend/ui/reader/readerdictionary.lua b/frontend/ui/reader/readerdictionary.lua index aebd6b797..734b0acd9 100644 --- a/frontend/ui/reader/readerdictionary.lua +++ b/frontend/ui/reader/readerdictionary.lua @@ -70,7 +70,7 @@ function ReaderDictionary:onReadSettings(config) self.default_dictionary = config:readSetting("default_dictionary") end -function ReaderDictionary:onCloseDocument() +function ReaderDictionary:onSaveSettings() self.ui.doc_settings:saveSetting("default_dictionary", self.default_dictionary) end diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 67e002db0..1c5f6ec85 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -213,7 +213,7 @@ function ReaderFont:onChangeFontGamma(direction) return true end -function ReaderFont:onCloseDocument() +function ReaderFont:onSaveSettings() self.ui.doc_settings:saveSetting("font_face", self.font_face) self.ui.doc_settings:saveSetting("header_font_face", self.header_font_face) self.ui.doc_settings:saveSetting("font_size", self.font_size) diff --git a/frontend/ui/reader/readerkoptlistener.lua b/frontend/ui/reader/readerkoptlistener.lua index fd0af15b7..73bc2c677 100644 --- a/frontend/ui/reader/readerkoptlistener.lua +++ b/frontend/ui/reader/readerkoptlistener.lua @@ -18,7 +18,7 @@ function ReaderKoptListener:onReadSettings(config) self:setZoomMode(self.normal_zoom_mode) end -function ReaderKoptListener:onCloseDocument() +function ReaderKoptListener:onSaveSettings() self.ui.doc_settings:saveSetting("normal_zoom_mode", self.normal_zoom_mode) end diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 4bbaa257b..c99cc0f83 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -137,7 +137,7 @@ function ReaderMenu:onSetDimensions(dimen) end end -function ReaderMenu:onCloseDocument() +function ReaderMenu:onSaveSettings() end function ReaderMenu:registerToMainMenu(widget) diff --git a/frontend/ui/reader/readerpaging.lua b/frontend/ui/reader/readerpaging.lua index 023d807bb..e1bc51eaf 100644 --- a/frontend/ui/reader/readerpaging.lua +++ b/frontend/ui/reader/readerpaging.lua @@ -133,7 +133,7 @@ function ReaderPaging:onReadSettings(config) end end -function ReaderPaging:onCloseDocument() +function ReaderPaging:onSaveSettings() self.ui.doc_settings:saveSetting("page_positions", self.page_positions) self.ui.doc_settings:saveSetting("last_page", self:getTopPage()) self.ui.doc_settings:saveSetting("percent_finished", self.current_page/self.number_of_pages) diff --git a/frontend/ui/reader/readerrolling.lua b/frontend/ui/reader/readerrolling.lua index 318eedc2e..0d2654440 100644 --- a/frontend/ui/reader/readerrolling.lua +++ b/frontend/ui/reader/readerrolling.lua @@ -155,7 +155,7 @@ function ReaderRolling:onReadSettings(config) end end -function ReaderRolling:onCloseDocument() +function ReaderRolling:onSaveSettings() -- remove last_percent config since its deprecated self.ui.doc_settings:saveSetting("last_percent", nil) self.ui.doc_settings:saveSetting("last_xpointer", self.ui.document:getXPointer()) diff --git a/frontend/ui/reader/readertypeset.lua b/frontend/ui/reader/readertypeset.lua index 05c9dab8e..d05bd60c3 100644 --- a/frontend/ui/reader/readertypeset.lua +++ b/frontend/ui/reader/readertypeset.lua @@ -33,7 +33,7 @@ function ReaderTypeset:onReadSettings(config) end end -function ReaderTypeset:onCloseDocument() +function ReaderTypeset:onSaveSettings() self.ui.doc_settings:saveSetting("css", self.css) self.ui.doc_settings:saveSetting("embedded_css", self.embedded_css) end diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index f472d45ea..d71a396a3 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -59,6 +59,9 @@ local ReaderView = OverlapGroup:new{ dogear_visible = false, -- in flipping state flipping_visible = false, + + -- auto save settings after turning pages + auto_save_paging_count = 0, } function ReaderView:init() @@ -516,11 +519,13 @@ end function ReaderView:onPageUpdate(new_page_no) self.state.page = new_page_no self:recalculate() + self:autoSaveSettings() end function ReaderView:onPosUpdate(new_pos) self.state.pos = new_pos self:recalculate() + self:autoSaveSettings() end function ReaderView:onZoomUpdate(zoom) @@ -577,7 +582,7 @@ function ReaderView:onSetPageMargins(margins) return true end -function ReaderView:onCloseDocument() +function ReaderView:onSaveSettings() self.ui.doc_settings:saveSetting("render_mode", self.render_mode) self.ui.doc_settings:saveSetting("screen_mode", self.screen_mode) self.ui.doc_settings:saveSetting("rotation_mode", self.cur_rotation_mode) @@ -585,4 +590,15 @@ function ReaderView:onCloseDocument() self.ui.doc_settings:saveSetting("highlight", self.highlight.saved) end +function ReaderView:autoSaveSettings() + if DAUTO_SAVE_PAGING_COUNT then + if self.auto_save_paging_count == DAUTO_SAVE_PAGING_COUNT then + self.ui:saveSettings() + self.auto_save_paging_count = 0 + else + self.auto_save_paging_count = self.auto_save_paging_count + 1 + end + end +end + return ReaderView diff --git a/frontend/ui/reader/readerzooming.lua b/frontend/ui/reader/readerzooming.lua index b8d7bfc10..a87643ba9 100644 --- a/frontend/ui/reader/readerzooming.lua +++ b/frontend/ui/reader/readerzooming.lua @@ -100,7 +100,7 @@ function ReaderZooming:onReadSettings(config) self.ui:handleEvent(Event:new("SetZoomMode", zoom_mode)) end -function ReaderZooming:onCloseDocument() +function ReaderZooming:onSaveSettings() self.ui.doc_settings:saveSetting("zoom_mode", self.zoom_mode) end diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 50e97ba04..64cdaf792 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -274,10 +274,14 @@ function ReaderUI:onSetDimensions(dimen) self.dimen = dimen end +function ReaderUI:saveSettings() + self:handleEvent(Event:new("SaveSettings")) + self.doc_settings:flush() +end + function ReaderUI:onClose() DEBUG("closing reader") - self:handleEvent(Event:new("CloseDocument")) - self.doc_settings:flush() + self:saveSettings() if self.document ~= nil then self.document:close() self.document = nil