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()
|
||||
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
|
||||
Reference in New Issue
Block a user