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()
local data_dir
if isAndroid then
data_dir = "/sdcard/koreader/"
data_dir = "/sdcard/koreader"
elseif os.getenv("UBUNTU_APPLICATION_ISOLATION") then
local app_id = os.getenv("APP_ID")
local package_name = app_id:match("^(.-)_")
-- confinded ubuntu app has write access to this dir
data_dir = os.getenv("XDG_DATA_HOME") .. "/" .. package_name
else
data_dir = "./"
data_dir = "."
end
if lfs.attributes(data_dir, "mode") ~= "directory" then
lfs.mkdir(data_dir)

@ -3,22 +3,23 @@ local InputContainer = require("ui/widget/container/inputcontainer")
local FrameContainer = require("ui/widget/container/framecontainer")
local FileManagerMenu = require("apps/filemanager/filemanagermenu")
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 Screenshoter = require("ui/widget/screenshoter")
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 UIManager = require("ui/uimanager")
local Font = require("ui/font")
local Screen = require("device").screen
local Geom = require("ui/geometry")
local Device = require("device")
local Event = require("ui/event")
local Device = require("device")
local util = require("ffi/util")
local Font = require("ui/font")
local DEBUG = require("dbg")
local _ = require("gettext")
local util = require("ffi/util")
local Blitbuffer = require("ffi/blitbuffer")
local FileManager = InputContainer:extend{
title = _("FileManager"),
@ -158,6 +159,7 @@ function FileManager:init()
self.menu = FileManagerMenu:new{
ui = self
}
table.insert(self, Screenshoter:new{ prefix = 'FileManager' })
table.insert(self, self.menu)
table.insert(self, FileManagerHistory:new{
ui = self,

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

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