mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
feat: support screenshot in filemanager
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user