From d4e5b4cb06860342ee115ee18f9a34a5e1c64e4b Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 11 Nov 2012 15:24:11 +0800 Subject: [PATCH] add readerpaging and readermenu touch support --- frontend/ui/device.lua | 5 ++ frontend/ui/reader/readermenu.lua | 38 ++++++++++--- frontend/ui/reader/readerpaging.lua | 83 +++++++++++++++++++++++------ reader.lua | 2 +- 4 files changed, 106 insertions(+), 22 deletions(-) diff --git a/frontend/ui/device.lua b/frontend/ui/device.lua index 813fc1520..aaa3b1525 100644 --- a/frontend/ui/device.lua +++ b/frontend/ui/device.lua @@ -58,6 +58,11 @@ function Device:isKindle2() end end +function Device:isTouchDevice() + local model = self:getModel() + return (model == "Kindle4") or (model == "KindlePaperWhite") or util.isEmulated() +end + function Device:intoScreenSaver() --os.execute("echo 'screensaver in' >> /mnt/us/event_test.txt") if self.charging_mode == false and self.screen_saver_mode == false then diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 0c778cd9a..e61c8280d 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -1,8 +1,25 @@ -ReaderMenu = InputContainer:new{ - key_events = { - ShowMenu = { { "Menu" }, doc = "show menu" }, - }, -} +ReaderMenu = InputContainer:new{} + +function ReaderMenu:init() + if Device:isTouchDevice() then + self.ges_events = { + TapShowMenu = { + GestureRange:new{ + ges = "tap", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight()/2 + } + } + } + } + else + self.key_events = { + ShowMenu = { { "Menu" }, doc = "show menu" }, + } + end +end function ReaderMenu:onShowMenu() local item_table = {} @@ -49,7 +66,10 @@ function ReaderMenu:onShowMenu() end table.insert(item_table, { - text = "Return to file browser" + text = "Return to file browser", + callback = function() + self.ui:onClose() + end }) local main_menu = Menu:new{ @@ -69,3 +89,9 @@ function ReaderMenu:onShowMenu() return true end + +function ReaderMenu:onTapShowMenu() + self:onShowMenu() + return true +end + diff --git a/frontend/ui/reader/readerpaging.lua b/frontend/ui/reader/readerpaging.lua index 9d93ed606..c41481314 100644 --- a/frontend/ui/reader/readerpaging.lua +++ b/frontend/ui/reader/readerpaging.lua @@ -1,24 +1,65 @@ ReaderPaging = InputContainer:new{ - key_events = { - GotoNextPage = { {Input.group.PgFwd}, doc = "go to next page", event = "GotoPageRel", args = 1 }, - GotoPrevPage = { {Input.group.PgBack}, doc = "go to previous page", event = "GotoPageRel", args = -1 }, - - GotoFirst = { {"1"}, doc = "go to start", event = "GotoPercent", args = 0}, - Goto11 = { {"2"}, doc = "go to 11%", event = "GotoPercent", args = 11}, - Goto22 = { {"3"}, doc = "go to 22%", event = "GotoPercent", args = 22}, - Goto33 = { {"4"}, doc = "go to 33%", event = "GotoPercent", args = 33}, - Goto44 = { {"5"}, doc = "go to 44%", event = "GotoPercent", args = 44}, - Goto55 = { {"6"}, doc = "go to 55%", event = "GotoPercent", args = 55}, - Goto66 = { {"7"}, doc = "go to 66%", event = "GotoPercent", args = 66}, - Goto77 = { {"8"}, doc = "go to 77%", event = "GotoPercent", args = 77}, - Goto88 = { {"9"}, doc = "go to 88%", event = "GotoPercent", args = 88}, - GotoLast = { {"0"}, doc = "go to end", event = "GotoPercent", args = 100}, - }, current_page = 0, number_of_pages = 0 } function ReaderPaging:init() + if Device:isTouchDevice() then + self.ges_events = { + TapForward = { + GestureRange:new{ + ges = "tap", + range = Geom:new{ + x = Screen:getWidth()/2, + y = Screen:getHeight()/2, + w = Screen:getWidth(), + h = Screen:getHeight() + } + } + }, + TapBackward = { + GestureRange:new{ + ges = "tap", + range = Geom:new{ + x = 0, + y = Screen:getHeight()/2, + w = Screen:getWidth()/2, + h = Screen:getHeight()/2, + } + } + } + } + else + self.key_events = { + GotoNextPage = { + {Input.group.PgFwd}, doc = "go to next page", + event = "GotoPageRel", args = 1 }, + GotoPrevPage = { + {Input.group.PgBack}, doc = "go to previous page", + event = "GotoPageRel", args = -1 }, + + GotoFirst = { + {"1"}, doc = "go to start", event = "GotoPercent", args = 0}, + Goto11 = { + {"2"}, doc = "go to 11%", event = "GotoPercent", args = 11}, + Goto22 = { + {"3"}, doc = "go to 22%", event = "GotoPercent", args = 22}, + Goto33 = { + {"4"}, doc = "go to 33%", event = "GotoPercent", args = 33}, + Goto44 = { + {"5"}, doc = "go to 44%", event = "GotoPercent", args = 44}, + Goto55 = { + {"6"}, doc = "go to 55%", event = "GotoPercent", args = 55}, + Goto66 = { + {"7"}, doc = "go to 66%", event = "GotoPercent", args = 66}, + Goto77 = { + {"8"}, doc = "go to 77%", event = "GotoPercent", args = 77}, + Goto88 = { + {"9"}, doc = "go to 88%", event = "GotoPercent", args = 88}, + GotoLast = { + {"0"}, doc = "go to end", event = "GotoPercent", args = 100}, + } + end self.number_of_pages = self.ui.document.info.number_of_pages end @@ -68,3 +109,15 @@ end function ReaderPaging:onCloseDocument() self.ui.doc_settings:saveSetting("last_page", self.current_page) end + +function ReaderPaging:onTapForward() + self:onGotoPageRel(1) + return true +end + +function ReaderPaging:onTapBackward() + self:onGotoPageRel(-1) + return true +end + + diff --git a/reader.lua b/reader.lua index ff465a0e3..51932222c 100755 --- a/reader.lua +++ b/reader.lua @@ -97,7 +97,7 @@ else DEBUG = function() end end -if Device.isKindle4() then +if Device.isKindle4() or Device:isTouchDevice() then -- remove menu item shortcut for K4 Menu.is_enable_shortcut = false end