From 536d71970f247303bbee7131511b8ba6ea6fb690 Mon Sep 17 00:00:00 2001 From: hius07 <62179190+hius07@users.noreply.github.com> Date: Mon, 13 Mar 2023 09:52:10 +0200 Subject: [PATCH] Bookmark flipping mode fix (#10196) (1) Changed indicator icon to "bookmark". (2) Added toggling action to dispatcher. --- .../apps/reader/modules/readerflipping.lua | 30 +++++++++++-------- frontend/apps/reader/modules/readerpaging.lua | 4 --- frontend/apps/reader/modules/readerview.lua | 8 ++--- frontend/dispatcher.lua | 2 ++ resources/icons/mdlight/bookmark.svg | 1 + 5 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 resources/icons/mdlight/bookmark.svg diff --git a/frontend/apps/reader/modules/readerflipping.lua b/frontend/apps/reader/modules/readerflipping.lua index c3b8b7f85..db82885f4 100644 --- a/frontend/apps/reader/modules/readerflipping.lua +++ b/frontend/apps/reader/modules/readerflipping.lua @@ -5,7 +5,6 @@ local WidgetContainer = require("ui/widget/container/widgetcontainer") local Screen = require("device").screen local ReaderFlipping = WidgetContainer:extend{ - orig_reflow_mode = 0, -- Icons to show during crengine partial rerendering automation rolling_rendering_state_icons = { PARTIALLY_RERENDERED = "cre.render.partial", @@ -22,7 +21,11 @@ function ReaderFlipping:init() width = icon_size, height = icon_size, } - -- Re-use this widget to show an indicator when we are in select mode + self.bookmark_flipping_widget = IconWidget:new{ + icon = "bookmark", + width = icon_size, + height = icon_size, + } icon_size = Screen:scaleBySize(36) self.select_mode_widget = IconWidget:new{ icon = "texture-box", @@ -83,22 +86,23 @@ function ReaderFlipping:onSetStatusLine() end function ReaderFlipping:paintTo(bb, x, y) - if self.ui.highlight.select_mode then - if self[1][1] ~= self.select_mode_widget then - self[1][1] = self.select_mode_widget - end + local widget + if self.ui.paging and self.view.flipping_visible then + -- pdf page flipping or bookmark browsing mode + widget = self.ui.paging.bookmark_flipping_mode and self.bookmark_flipping_widget or self.flipping_widget + elseif self.ui.highlight.select_mode then + -- highlight select mode + widget = self.select_mode_widget elseif self.ui.rolling and self.ui.rolling.rendering_state then - local widget = self:getRollingRenderingStateIconWidget() + -- epub rerendering + widget = self:getRollingRenderingStateIconWidget() + end + if widget then if self[1][1] ~= widget then self[1][1] = widget end - if not widget then return end -- nothing to get painted - else - if self[1][1] ~= self.flipping_widget then - self[1][1] = self.flipping_widget - end + WidgetContainer.paintTo(self, bb, x, y) end - WidgetContainer.paintTo(self, bb, x, y) end return ReaderFlipping diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index f61318ad7..326ff239f 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -273,15 +273,11 @@ function ReaderPaging:onToggleBookmarkFlipping() if self.bookmark_flipping_mode then self.orig_flipping_mode = self.view.flipping_visible - self.orig_dogear_mode = self.view.dogear_visible - self.view.flipping_visible = true - self.view.dogear_visible = true self.bm_flipping_orig_page = self.current_page self:enterFlippingMode() else self.view.flipping_visible = self.orig_flipping_mode - self.view.dogear_visible = self.orig_dogear_mode self:exitFlippingMode() self:_gotoPage(self.bm_flipping_orig_page) end diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index 957c2f550..69e823f37 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -233,11 +233,9 @@ function ReaderView:paintTo(bb, x, y) if self.footer_visible then self.footer:paintTo(bb, x, y) end - -- paint flipping or select mode sign - if self.flipping_visible or self.ui.highlight.select_mode - or (self.ui.rolling and self.ui.rolling.rendering_state) then - self.flipping:paintTo(bb, x, y) - end + -- paint top left corner indicator + self.flipping:paintTo(bb, x, y) + -- paint view modules for _, m in pairs(self.view_modules) do m:paintTo(bb, x, y) end diff --git a/frontend/dispatcher.lua b/frontend/dispatcher.lua index 545a40e1c..9449ff3e2 100644 --- a/frontend/dispatcher.lua +++ b/frontend/dispatcher.lua @@ -154,6 +154,7 @@ local settingsList = { -- paging reader settings toggle_page_flipping = {category="none", event="TogglePageFlipping", title=_("Toggle page flipping"), paging=true}, + toggle_bookmark_flipping = {category="none", event="ToggleBookmarkFlipping", title=_("Toggle bookmark flipping"), paging=true}, toggle_reflow = {category="none", event="ToggleReflow", title=_("Toggle reflow"), paging=true}, zoom = {category="string", event="SetZoomMode", title=_("Zoom mode"), args=ReaderZooming.available_zoom_modes, toggle=ReaderZooming.available_zoom_modes, paging=true}, zoom_factor_change = {category="none", event="ZoomFactorChange", title=_("Change zoom factor"), paging=true, separator=true}, @@ -335,6 +336,7 @@ local dispatcher_menu_order = { "toggle_bookmark", "toggle_page_change_animation", "toggle_page_flipping", + "toggle_bookmark_flipping", "toggle_reflow", "toggle_inverse_reading_order", "swap_page_turn_buttons", diff --git a/resources/icons/mdlight/bookmark.svg b/resources/icons/mdlight/bookmark.svg new file mode 100644 index 000000000..4f9c7b4ba --- /dev/null +++ b/resources/icons/mdlight/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file