From 12adb962063b643416899e925c81c9916247ea7e Mon Sep 17 00:00:00 2001 From: Mustafa Ali Mutlu Date: Thu, 2 Jan 2020 22:30:03 +0200 Subject: [PATCH] [feat] Option to change page gap in continuous mode (#5705) Fixes #5656. --- frontend/apps/reader/modules/readerview.lua | 21 +++++++++++---------- frontend/ui/data/koptoptions.lua | 13 +++++++++++++ frontend/ui/data/strings.lua | 1 + 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index 8fcd5106c..b538f8c6e 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -48,13 +48,8 @@ local ReaderView = OverlapGroup:extend{ page_scroll = nil, page_bgcolor = Blitbuffer.gray(DBACKGROUND_COLOR/15), page_states = {}, - scroll_mode = "vertical", -- properties of the gap drawn between each page in scroll mode: page_gap = { - -- width in pixels (when scrolling horizontally) - width = Screen:scaleBySize(G_reader_settings:readSetting("page_gap_width") or 8), - -- height in pixels (when scrolling vertically) - height = Screen:scaleBySize(G_reader_settings:readSetting("page_gap_height") or 8), -- color (0 = white, 8 = gray, 15 = black) color = Blitbuffer.gray((G_reader_settings:readSetting("page_gap_color") or 8)/15), }, @@ -387,11 +382,7 @@ function ReaderView:getScrollPageRect(page, rect_p) end function ReaderView:drawPageGap(bb, x, y) - if self.scroll_mode == "vertical" then - bb:paintRect(x, y, self.dimen.w, self.page_gap.height, self.page_gap.color) - elseif self.scroll_mode == "horizontal" then - bb:paintRect(x, y, self.page_gap.width, self.dimen.h, self.page_gap.color) - end + bb:paintRect(x, y, self.dimen.w, self.page_gap.height, self.page_gap.color) end function ReaderView:drawSinglePage(bb, x, y) @@ -780,6 +771,8 @@ function ReaderView:onReadSettings(config) self.page_scroll = page_scroll == 1 and true or false self.highlight.saved = config:readSetting("highlight") or {} self.page_overlap_style = config:readSetting("page_overlap_style") or G_reader_settings:readSetting("page_overlap_style") or "dim" + self.page_gap.height = Screen:scaleBySize(config:readSetting("kopt_page_gap_height") or + G_reader_settings:readSetting("kopt_page_gap_height") or 8) end function ReaderView:onPageUpdate(new_page_no) @@ -843,6 +836,14 @@ function ReaderView:onSetViewMode(new_mode) return true end +--Refresh after changing a variable done by koptoptions.lua since all of them +--requires full screen refresh. If this handler used for changing page gap from +--another source (eg. coptions.lua) triggering a redraw is needed. +function ReaderView:onPageGapUpdate(page_gap) + self.page_gap.height = page_gap + return true +end + function ReaderView:onSaveSettings() self.ui.doc_settings:saveSetting("render_mode", self.render_mode) self.ui.doc_settings:saveSetting("screen_mode", self.screen_mode) diff --git a/frontend/ui/data/koptoptions.lua b/frontend/ui/data/koptoptions.lua index 6c0f811fa..73d2a1bef 100644 --- a/frontend/ui/data/koptoptions.lua +++ b/frontend/ui/data/koptoptions.lua @@ -83,6 +83,19 @@ local KoptOptions = { advanced = true, name_text_hold_callback = optionsutil.showValues, }, + { + name = "page_gap_height", + name_text = S.PAGE_GAP, + toggle = {S.NONE, S.SMALL, S.MEDIUM, S.LARGE}, + values = {0, 8, 16, 32}, + default_value = 8, + args = {0, 8, 16, 32}, + event = "PageGapUpdate", + enabled_func = function (configurable) + return optionsutil.enableIfEquals(configurable, "page_scroll", 1) + end, + name_text_hold_callback = optionsutil.showValues, + }, { name = "max_columns", name_text = S.COLUMNS, diff --git a/frontend/ui/data/strings.lua b/frontend/ui/data/strings.lua index 5d0304c17..5db647faa 100644 --- a/frontend/ui/data/strings.lua +++ b/frontend/ui/data/strings.lua @@ -46,6 +46,7 @@ S.HW_DITHERING = _("Dithering") S.INVERSE_READING_ORDER = _("Inverse Order") S.IMAGE_SCALING = _("Image Scaling") S.NIGHTMODE_IMAGES = _("Invert Images") +S.PAGE_GAP = _("Page Gap") S.ON = _("on") S.OFF = _("off")