diff --git a/base b/base index 5a83d4aad..f342e7fed 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 5a83d4aaded90420306380613ccdc4613a53a9ce +Subproject commit f342e7fedabe46dde7a54f30e25d555d4d311879 diff --git a/frontend/apps/reader/modules/readerscreenshot.lua b/frontend/apps/reader/modules/readerscreenshot.lua index 0698c468f..8fad7d925 100644 --- a/frontend/apps/reader/modules/readerscreenshot.lua +++ b/frontend/apps/reader/modules/readerscreenshot.lua @@ -7,7 +7,9 @@ local InfoMessage = require("ui/widget/infomessage") local _ = require("gettext") local DEBUG = require("dbg") -local ReaderScreenshot = InputContainer:new{} +local ReaderScreenshot = InputContainer:new{ + datetime_name = "screenshots/Screenshot_%Y-%b-%d_%Hh%M.png", +} function ReaderScreenshot:init() local diagonal = math.sqrt( @@ -32,16 +34,13 @@ function ReaderScreenshot:init() } end -function ReaderScreenshot:onScreenshot() - if os.execute("screenshot") ~= 0 then - local screenshot_name = os.date("screenshots/Screenshot_%Y-%B-%d_%Hh%M.pam") - UIManager:show(InfoMessage:new{ - text = _("Writing screen to ")..screenshot_name, - timeout = 2, - }) - Screen.bb:writePAM(screenshot_name) - DEBUG(screenshot_name) - end +function ReaderScreenshot:onScreenshot(filename) + local screenshot_name = filename or os.date(self.datetime_name) + UIManager:show(InfoMessage:new{ + text = _("Writing screen to ")..screenshot_name, + timeout = 2, + }) + Screen:shot(screenshot_name) UIManager.full_refresh = true return true end diff --git a/frontend/device/screen.lua b/frontend/device/screen.lua index 81ef62f9d..d755bb3cc 100644 --- a/frontend/device/screen.lua +++ b/frontend/device/screen.lua @@ -174,10 +174,14 @@ function Screen:restoreFromSavedBB() end end +function Screen:shot(filename) + DEBUG("write PNG file", filename) + self.bb:writePNG(filename) +end + function Screen:close() DEBUG("close screen framebuffer") self.fb:close() end - return Screen diff --git a/plugins/zsync.koplugin/main.lua b/plugins/zsync.koplugin/main.lua index 61f0f6eff..ae724abe5 100644 --- a/plugins/zsync.koplugin/main.lua +++ b/plugins/zsync.koplugin/main.lua @@ -1,8 +1,5 @@ -local FileManagerHistory = require("apps/filemanager/filemanagerhistory") -local FileManagerMenu = require("apps/filemanager/filemanagermenu") local InputContainer = require("ui/widget/container/inputcontainer") local FrameContainer = require("ui/widget/container/framecontainer") -local FileManager = require("apps/filemanager/filemanager") local VerticalGroup = require("ui/widget/verticalgroup") local VerticalSpan = require("ui/widget/verticalspan") local ButtonDialog = require("ui/widget/buttondialog") diff --git a/spec/unit/filemanager_spec.lua b/spec/unit/filemanager_spec.lua new file mode 100644 index 000000000..9eded5650 --- /dev/null +++ b/spec/unit/filemanager_spec.lua @@ -0,0 +1,18 @@ +require("commonrequire") +local FileManager = require("apps/filemanager/filemanager") +local UIManager = require("ui/uimanager") +local Screen = require("device").screen +local DEBUG = require("dbg") + +describe("FileManager module", function() + it("should show file manager", function() + UIManager:quit() + local filemanager = FileManager:new{ + dimen = Screen:getSize(), + root_path = "../../test", + } + UIManager:show(filemanager) + UIManager:scheduleIn(1, function() UIManager:close(filemanager) end) + UIManager:run() + end) +end) diff --git a/spec/unit/readerscreenshot_spec.lua b/spec/unit/readerscreenshot_spec.lua new file mode 100644 index 000000000..245b43559 --- /dev/null +++ b/spec/unit/readerscreenshot_spec.lua @@ -0,0 +1,38 @@ +require("commonrequire") +local DocumentRegistry = require("document/documentregistry") +local ReaderUI = require("apps/reader/readerui") +local lfs = require("libs/libkoreader-lfs") +local UIManager = require("ui/uimanager") +local Screen = require("device").screen +local Event = require("ui/event") +local DEBUG = require("dbg") + +describe("ReaderScreenshot module", function() + local sample_epub = "spec/front/unit/data/leaves.epub" + local readerui + setup(function() + readerui = ReaderUI:new{ + document = DocumentRegistry:openDocument(sample_epub), + } + end) + it("should get screenshot in portrait", function() + local name = "screenshots/reader_screenshot_portrait.png" + readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + UIManager:quit() + UIManager:show(readerui) + UIManager:scheduleIn(1, function() UIManager:close(readerui) end) + UIManager:run() + readerui.screenshot:onScreenshot(name) + assert.truthy(lfs.attributes(name, "mode")) + end) + it("should get screenshot in landscape", function() + local name = "screenshots/reader_screenshot_landscape.png" + readerui:handleEvent(Event:new("ChangeScreenMode", "landscape")) + UIManager:quit() + UIManager:show(readerui) + UIManager:scheduleIn(2, function() UIManager:close(readerui) end) + UIManager:run() + readerui.screenshot:onScreenshot(name) + assert.truthy(lfs.attributes(name, "mode")) + end) +end) diff --git a/spec/unit/readerui_spec.lua b/spec/unit/readerui_spec.lua index 241797d20..9b349c7ed 100644 --- a/spec/unit/readerui_spec.lua +++ b/spec/unit/readerui_spec.lua @@ -2,13 +2,17 @@ require("commonrequire") local DocumentRegistry = require("document/documentregistry") local ReaderUI = require("apps/reader/readerui") local DocSettings = require("docsettings") +local UIManager = require("ui/uimanager") local DEBUG = require("dbg") describe("Readerui module", function() local sample_epub = "spec/front/unit/data/leaves.epub" - local readerui = ReaderUI:new{ - document = DocumentRegistry:openDocument(sample_epub), - } + local readerui + setup(function() + readerui = ReaderUI:new{ + document = DocumentRegistry:openDocument(sample_epub), + } + end) it("should save settings", function() -- remove history settings and sidecar settings DocSettings:open(sample_epub):clear() @@ -21,6 +25,12 @@ describe("Readerui module", function() assert.are.same(doc_settings.data.last_xpointer, readerui.doc_settings.data.last_xpointer) end) + it("should show reader", function() + UIManager:quit() + UIManager:show(readerui) + UIManager:scheduleIn(1, function() UIManager:close(readerui) end) + UIManager:run() + end) it("should close document", function() readerui:closeDocument() assert(readerui.document == nil)