From 4478ccafc90fb7c31ff3ca661e420f6f08294d7f Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 7 Aug 2019 10:10:26 +0200 Subject: [PATCH 1/2] Add spread and pinch gesture --- frontend/apps/reader/modules/readerfont.lua | 67 +++++++------------ .../apps/reader/modules/readergesture.lua | 36 +++++++++- 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/frontend/apps/reader/modules/readerfont.lua b/frontend/apps/reader/modules/readerfont.lua index e443ba4e2298..0d7ae877dcbc 100644 --- a/frontend/apps/reader/modules/readerfont.lua +++ b/frontend/apps/reader/modules/readerfont.lua @@ -94,33 +94,6 @@ function ReaderFont:init() self.ui.menu:registerToMainMenu(self) end -function ReaderFont:onReaderReady() - self:setupTouchZones() -end - -function ReaderFont:setupTouchZones() - if Device:isTouchDevice() then - self.ui:registerTouchZones({ - { - id = "id_spread", - ges = "spread", - screen_zone = { - ratio_x = 0, ratio_y = 0, ratio_w = 1, ratio_h = 1, - }, - handler = function(ges) return self:onAdjustSpread(ges) end - }, - { - id = "id_pinch", - ges = "pinch", - screen_zone = { - ratio_x = 0, ratio_y = 0, ratio_w = 1, ratio_h = 1, - }, - handler = function(ges) return self:onAdjustPinch(ges) end - }, - }) - end -end - function ReaderFont:onSetDimensions(dimen) self.dimen = dimen end @@ -338,25 +311,31 @@ function ReaderFont:addToMainMenu(menu_items) } end -function ReaderFont:onAdjustSpread(ges) - local step = math.ceil(2 * #self.steps * ges.distance / self.gestureScale) - local delta_int = self.steps[step] or self.steps[#self.steps] - local info = Notification:new{text = _("Increasing font size…")} - UIManager:show(info) - UIManager:forceRePaint() - self:onChangeSize("increase", delta_int) - UIManager:close(info) - return true -end - -function ReaderFont:onAdjustPinch(ges) +-- direction +1 - increase font size +-- direction -1 - decrease front size +function ReaderFont:onAdjustFontSize(ges, direction) + if ges.distance == nil then + ges.distance = 1 + end + if direction ~= -1 and direction ~= 1 then + -- set default value (increase frontlight) + direction = 1 + end local step = math.ceil(2 * #self.steps * ges.distance / self.gestureScale) local delta_int = self.steps[step] or self.steps[#self.steps] - local info = Notification:new{text = _("Decreasing font size…")} - UIManager:show(info) - UIManager:forceRePaint() - self:onChangeSize("decrease", delta_int) - UIManager:close(info) + if direction == 1 then + local info = Notification:new{text = _("Increasing font size…")} + UIManager:show(info) + UIManager:forceRePaint() + self:onChangeSize("increase", delta_int) + UIManager:close(info) + else + local info = Notification:new{text = _("Decreasing font size…")} + UIManager:show(info) + UIManager:forceRePaint() + self:onChangeSize("decrease", delta_int) + UIManager:close(info) + end return true end diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index 461d36e842b7..ebb935d577ff 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -85,6 +85,9 @@ local action_strings = { zoom_content = _("Zoom to fit content"), zoom_page = _("Zoom to fit page"), + increase_font = _("Increase font size"), + decrease_font = _("Decrease font size"), + folder_up = _("Folder up"), show_plus_menu = _("Show plus menu"), folder_shortcuts = _("Folder shortcuts"), @@ -203,12 +206,14 @@ function ReaderGesture:init() two_finger_swipe_east = self.ges_mode == "gesture_reader" and "toc" or "ignore", two_finger_swipe_west = self.ges_mode == "gesture_reader" and "bookmarks" or "folder_shortcuts", - two_finger_swipe_south = Device:hasFrontlight() and "decrease_frontlight" or "ignore", - two_finger_swipe_north = Device:hasFrontlight() and "increase_frontlight" or "ignore", + two_finger_swipe_south = Device:hasFrontlight() and "increase_frontlight" or "ignore", + two_finger_swipe_north = Device:hasFrontlight() and "decrease_frontlight" or "ignore", two_finger_swipe_northeast = "ignore", two_finger_swipe_northwest = "ignore", two_finger_swipe_southeast = "ignore", two_finger_swipe_southwest = "ignore", + spread_gesture = self.ges_mode == "gesture_reader" and "increase_font" or "ignore", + pinch_gesture = self.ges_mode == "gesture_reader" and "decrease_font" or "ignore", } local gm = G_reader_settings:readSetting(self.ges_mode) if gm == nil then G_reader_settings:saveSetting(self.ges_mode, {}) end @@ -617,6 +622,19 @@ Default value: %1]]), GestureDetector.SWIPE_INTERVAL/1000), }, }, }) + table.insert(menu_items.gesture_manager.sub_item_table, { + text = _("Spread and pinch"), + sub_item_table = { + { + text_func = function() return actionTextFunc("spread_gesture", _("Spread")) end, + sub_item_table = self:buildMenu("spread_gesture", self.default_gesture["spread_gesture"]), + }, + { + text_func = function() return actionTextFunc("pinch_gesture", _("Pinch")) end, + sub_item_table = self:buildMenu("pinch_gesture", self.default_gesture["pinch_gesture"]), + }, + } + }) end end @@ -685,6 +703,9 @@ function ReaderGesture:buildMenu(ges, default) {"wifi_off", Device:hasWifiToggle()}, {"toggle_wifi", Device:hasWifiToggle(), true}, + {"increase_font", not self.is_docless}, + {"decrease_font", not self.is_docless, true}, + {"toggle_bookmark", not self.is_docless, true}, {"toggle_page_flipping", not self.is_docless, true}, {"toggle_reflow", not self.is_docless, true}, @@ -1101,7 +1122,12 @@ function ReaderGesture:setupGesture(ges, action) "paging_swipe", } end - + elseif ges == "spread_gesture" then + ges_type = "spread" + zone = zone_fullscreen + elseif ges == "pinch_gesture" then + ges_type = "pinch" + zone = zone_fullscreen else return end self:registerGesture(ges, action, ges_type, zone, overrides, direction, distance) @@ -1370,6 +1396,10 @@ function ReaderGesture:gestureAction(action, ges) timeout = 1, }) end + elseif action == "increase_font" then + self.ui:handleEvent(Event:new("AdjustFontSize", ges, 1)) + elseif action == "decrease_font" then + self.ui:handleEvent(Event:new("AdjustFontSize", ges, -1)) elseif action == "suspend" then UIManager:suspend() elseif action == "exit" then From d659ceb1162a89d490e155f151c9caea9f97a533 Mon Sep 17 00:00:00 2001 From: Robert0 Date: Wed, 7 Aug 2019 19:13:58 +0200 Subject: [PATCH 2/2] reverse order --- frontend/apps/reader/modules/readergesture.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index ebb935d577ff..cdf62b411796 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -206,8 +206,8 @@ function ReaderGesture:init() two_finger_swipe_east = self.ges_mode == "gesture_reader" and "toc" or "ignore", two_finger_swipe_west = self.ges_mode == "gesture_reader" and "bookmarks" or "folder_shortcuts", - two_finger_swipe_south = Device:hasFrontlight() and "increase_frontlight" or "ignore", - two_finger_swipe_north = Device:hasFrontlight() and "decrease_frontlight" or "ignore", + two_finger_swipe_south = Device:hasFrontlight() and "decrease_frontlight" or "ignore", + two_finger_swipe_north = Device:hasFrontlight() and "increase_frontlight" or "ignore", two_finger_swipe_northeast = "ignore", two_finger_swipe_northwest = "ignore", two_finger_swipe_southeast = "ignore",