feat: support screenshot in filemanager

pull/1763/head
Qingping Hou 8 years ago
parent 83b35fc99a
commit 3b92bdc084

@ -7,14 +7,14 @@ local DataStorage = {}
function DataStorage:getDataDir() function DataStorage:getDataDir()
local data_dir local data_dir
if isAndroid then if isAndroid then
data_dir = "/sdcard/koreader/" data_dir = "/sdcard/koreader"
elseif os.getenv("UBUNTU_APPLICATION_ISOLATION") then elseif os.getenv("UBUNTU_APPLICATION_ISOLATION") then
local app_id = os.getenv("APP_ID") local app_id = os.getenv("APP_ID")
local package_name = app_id:match("^(.-)_") local package_name = app_id:match("^(.-)_")
-- confinded ubuntu app has write access to this dir -- confinded ubuntu app has write access to this dir
data_dir = os.getenv("XDG_DATA_HOME") .. "/" .. package_name data_dir = os.getenv("XDG_DATA_HOME") .. "/" .. package_name
else else
data_dir = "./" data_dir = "."
end end
if lfs.attributes(data_dir, "mode") ~= "directory" then if lfs.attributes(data_dir, "mode") ~= "directory" then
lfs.mkdir(data_dir) lfs.mkdir(data_dir)

@ -3,22 +3,23 @@ local InputContainer = require("ui/widget/container/inputcontainer")
local FrameContainer = require("ui/widget/container/framecontainer") local FrameContainer = require("ui/widget/container/framecontainer")
local FileManagerMenu = require("apps/filemanager/filemanagermenu") local FileManagerMenu = require("apps/filemanager/filemanagermenu")
local DocumentRegistry = require("document/documentregistry") local DocumentRegistry = require("document/documentregistry")
local TextWidget = require("ui/widget/textwidget")
local FileChooser = require("ui/widget/filechooser")
local VerticalSpan = require("ui/widget/verticalspan")
local VerticalGroup = require("ui/widget/verticalgroup") local VerticalGroup = require("ui/widget/verticalgroup")
local Screenshoter = require("ui/widget/screenshoter")
local ButtonDialog = require("ui/widget/buttondialog") local ButtonDialog = require("ui/widget/buttondialog")
local VerticalSpan = require("ui/widget/verticalspan")
local FileChooser = require("ui/widget/filechooser")
local TextWidget = require("ui/widget/textwidget")
local Blitbuffer = require("ffi/blitbuffer")
local lfs = require("libs/libkoreader-lfs") local lfs = require("libs/libkoreader-lfs")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local Font = require("ui/font")
local Screen = require("device").screen local Screen = require("device").screen
local Geom = require("ui/geometry") local Geom = require("ui/geometry")
local Device = require("device")
local Event = require("ui/event") local Event = require("ui/event")
local Device = require("device")
local util = require("ffi/util")
local Font = require("ui/font")
local DEBUG = require("dbg") local DEBUG = require("dbg")
local _ = require("gettext") local _ = require("gettext")
local util = require("ffi/util")
local Blitbuffer = require("ffi/blitbuffer")
local FileManager = InputContainer:extend{ local FileManager = InputContainer:extend{
title = _("FileManager"), title = _("FileManager"),
@ -158,6 +159,7 @@ function FileManager:init()
self.menu = FileManagerMenu:new{ self.menu = FileManagerMenu:new{
ui = self ui = self
} }
table.insert(self, Screenshoter:new{ prefix = 'FileManager' })
table.insert(self, self.menu) table.insert(self, self.menu)
table.insert(self, FileManagerHistory:new{ table.insert(self, FileManagerHistory:new{
ui = self, ui = self,

@ -1,5 +1,6 @@
local InputContainer = require("ui/widget/container/inputcontainer") local InputContainer = require("ui/widget/container/inputcontainer")
local DocumentRegistry = require("document/documentregistry") local DocumentRegistry = require("document/documentregistry")
local Screenshoter = require("ui/widget/screenshoter")
local InfoMessage = require("ui/widget/infomessage") local InfoMessage = require("ui/widget/infomessage")
local InputDialog = require("ui/widget/inputdialog") local InputDialog = require("ui/widget/inputdialog")
local ConfirmBox = require("ui/widget/confirmbox") local ConfirmBox = require("ui/widget/confirmbox")
@ -33,7 +34,6 @@ local ReaderKoptListener = require("apps/reader/modules/readerkoptlistener")
local ReaderCoptListener = require("apps/reader/modules/readercoptlistener") local ReaderCoptListener = require("apps/reader/modules/readercoptlistener")
local ReaderHinting = require("apps/reader/modules/readerhinting") local ReaderHinting = require("apps/reader/modules/readerhinting")
local ReaderHighlight = require("apps/reader/modules/readerhighlight") local ReaderHighlight = require("apps/reader/modules/readerhighlight")
local ReaderScreenshot = require("apps/reader/modules/readerscreenshot")
local ReaderFrontLight = require("apps/reader/modules/readerfrontlight") local ReaderFrontLight = require("apps/reader/modules/readerfrontlight")
local ReaderDictionary = require("apps/reader/modules/readerdictionary") local ReaderDictionary = require("apps/reader/modules/readerdictionary")
local ReaderWikipedia = require("apps/reader/modules/readerwikipedia") local ReaderWikipedia = require("apps/reader/modules/readerwikipedia")
@ -164,7 +164,8 @@ function ReaderUI:init()
document = self.document, document = self.document,
}) })
-- screenshot controller -- screenshot controller
self:registerModule("screenshot", ReaderScreenshot:new{ self:registerModule("screenshot", Screenshoter:new{
prefix = 'Reader',
dialog = self.dialog, dialog = self.dialog,
view = self.view, view = self.view,
ui = self ui = self

@ -3,19 +3,18 @@ local InfoMessage = require("ui/widget/infomessage")
local GestureRange = require("ui/gesturerange") local GestureRange = require("ui/gesturerange")
local DataStorage = require("datastorage") local DataStorage = require("datastorage")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local Device = require("device")
local Screen = require("device").screen local Screen = require("device").screen
local DEBUG = require("dbg")
local T = require("ffi/util").template local T = require("ffi/util").template
local _ = require("gettext") local _ = require("gettext")
local screenshots_dir = DataStorage:getDataDir() .. "/screenshots/"
local ReaderScreenshot = InputContainer:new{ local Screenshoter = InputContainer:new{
datetime_name = screenshots_dir .. "Screenshot_%Y-%b-%d_%H%M%S.png", prefix = 'Screenshot',
} }
function ReaderScreenshot:init() function Screenshoter:init()
local screenshots_dir = DataStorage:getDataDir() .. "/screenshots/"
self.screenshot_fn_fmt = screenshots_dir .. self.prefix .. "_%Y-%b-%d_%H%M%S.png"
local diagonal = math.sqrt( local diagonal = math.sqrt(
math.pow(Screen:getWidth(), 2) + math.pow(Screen:getWidth(), 2) +
math.pow(Screen:getHeight(), 2) math.pow(Screen:getHeight(), 2)
@ -38,8 +37,8 @@ function ReaderScreenshot:init()
} }
end end
function ReaderScreenshot:onScreenshot(filename) function Screenshoter:onScreenshot(filename)
local screenshot_name = filename or os.date(self.datetime_name) local screenshot_name = filename or os.date(self.screenshot_fn_fmt)
UIManager:show(InfoMessage:new{ UIManager:show(InfoMessage:new{
text = T( _("Saving screenshot to %1."), screenshot_name), text = T( _("Saving screenshot to %1."), screenshot_name),
timeout = 3, timeout = 3,
@ -50,12 +49,12 @@ function ReaderScreenshot:onScreenshot(filename)
return true return true
end end
function ReaderScreenshot:onTapDiagonal() function Screenshoter:onTapDiagonal()
return self:onScreenshot() return self:onScreenshot()
end end
function ReaderScreenshot:onSwipeDiagonal() function Screenshoter:onSwipeDiagonal()
return self:onScreenshot() return self:onScreenshot()
end end
return ReaderScreenshot return Screenshoter
Loading…
Cancel
Save