From 5c2d9bb1ad2edfaa6db4198735a99b0a189356c2 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 6 Mar 2013 22:36:51 +0800 Subject: [PATCH] screenshot with finger touch at the two corners of the diagonal --- frontend/ui/gesturedetector.lua | 8 ++++---- frontend/ui/reader/readerscreenshot.lua | 25 +++++++++++++++++++++++++ frontend/ui/readerui.lua | 8 ++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 frontend/ui/reader/readerscreenshot.lua diff --git a/frontend/ui/gesturedetector.lua b/frontend/ui/gesturedetector.lua index 68550623d..1ab5bf6f4 100644 --- a/frontend/ui/gesturedetector.lua +++ b/frontend/ui/gesturedetector.lua @@ -7,7 +7,7 @@ GestureRange = { -- temproal range limits the gesture emitting rate rate = nil, -- span limits of this gesture - span = nil, + scale = nil, } function GestureRange:new(o) @@ -34,8 +34,8 @@ function GestureRange:match(gs) return false end end - if self.span then - if self.span[1] > gs.span or self.span[2] < gs.span then + if self.scale then + if self.scale[1] > gs.span or self.scale[2] < gs.span then return false end end @@ -244,7 +244,7 @@ function GestureDetector:tapState(tev) span = pos0:distance(pos1), time = tev.timev, } - DEBUG("two-finger tap detected") + DEBUG("two-finger tap detected with span", pos0:distance(pos1)) self:clearState(0) self:clearState(1) return ges_ev diff --git a/frontend/ui/reader/readerscreenshot.lua b/frontend/ui/reader/readerscreenshot.lua new file mode 100644 index 000000000..838e8f2c5 --- /dev/null +++ b/frontend/ui/reader/readerscreenshot.lua @@ -0,0 +1,25 @@ + +ReaderScreenshot = InputContainer:new{} + +function ReaderScreenshot:init() + local diagonal = math.sqrt( + math.pow(Screen:getWidth(), 2) + + math.pow(Screen:getHeight(), 2) + ) + self.ges_events = { + Screenshot = { + GestureRange:new{ + ges = "two_finger_tap", + scale = {diagonal - 80*Screen:getDPI()/167, diagonal}, + rate = 1.0, + } + }, + } +end + +function ReaderScreenshot:onScreenshot() + os.execute("screenshot") + UIManager:setDirty(self.view.dialog, "full") + return true +end + diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 8e2c5808f..b180731c8 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -14,6 +14,7 @@ require "ui/reader/readerconfig" require "ui/reader/readercropping" require "ui/reader/readerkopt" require "ui/reader/readercopt" +require "ui/reader/readerscreenshot" --[[ This is an abstraction for a reader interface @@ -90,6 +91,13 @@ function ReaderUI:init() ui = self } table.insert(self, reader_bm) + -- screenshot controller + local reader_ss = ReaderScreenshot:new{ + dialog = self.dialog, + view = self[1], + ui = self + } + table.insert(self, reader_ss) if self.document.info.has_pages then -- for page specific controller