From f21d34f682ec5d42756cc790ab1501c1f9836cee Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 12 Feb 2014 20:32:23 +0800 Subject: [PATCH] add two finger swipe gestures for showing TOC and bookmarks two_finger_swipe to east is for TOC two_finger_swipe to west is for bookmarks --- frontend/ui/gesturerange.lua | 5 +++++ frontend/ui/reader/readerbookmark.lua | 17 ++++++++++++++++- frontend/ui/reader/readertoc.lua | 17 +++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/frontend/ui/gesturerange.lua b/frontend/ui/gesturerange.lua index 4b7d7363d..ed5ae7ab9 100644 --- a/frontend/ui/gesturerange.lua +++ b/frontend/ui/gesturerange.lua @@ -39,6 +39,11 @@ function GestureRange:match(gs) return false end end + if self.direction then + if self.direction ~= gs.direction then + return false + end + end return true end diff --git a/frontend/ui/reader/readerbookmark.lua b/frontend/ui/reader/readerbookmark.lua index f717d43b7..56132babd 100644 --- a/frontend/ui/reader/readerbookmark.lua +++ b/frontend/ui/reader/readerbookmark.lua @@ -18,11 +18,26 @@ local ReaderBookmark = InputContainer:new{ function ReaderBookmark:init() if Device:hasKeyboard() then self.key_events = { - ShowToc = { + ShowBookmark = { { "B" }, doc = _("show bookmarks") }, } end + if Device:isTouchDevice() then + self.ges_events = { + ShowBookmark = { + GestureRange:new{ + ges = "two_finger_swipe", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight(), + }, + direction = "west" + } + }, + } + end self.ui.menu:registerToMainMenu(self) end diff --git a/frontend/ui/reader/readertoc.lua b/frontend/ui/reader/readertoc.lua index d74b2f165..9bd7d6794 100644 --- a/frontend/ui/reader/readertoc.lua +++ b/frontend/ui/reader/readertoc.lua @@ -1,6 +1,8 @@ local InputContainer = require("ui/widget/container/inputcontainer") local CenterContainer = require("ui/widget/container/centercontainer") +local GestureRange = require("ui/gesturerange") local Menu = require("ui/widget/menu") +local Geom = require("ui/geometry") local Screen = require("ui/screen") local Device = require("ui/device") local UIManager = require("ui/uimanager") @@ -20,6 +22,21 @@ function ReaderToc:init() doc = _("show Table of Content menu") }, } end + if Device:isTouchDevice() then + self.ges_events = { + ShowToc = { + GestureRange:new{ + ges = "two_finger_swipe", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight(), + }, + direction = "east" + } + }, + } + end self.ui.menu:registerToMainMenu(self) end