From f7d538b108167a6bb4e89880d2b0cf8b4c69b42f Mon Sep 17 00:00:00 2001 From: yparitcher Date: Wed, 1 Jul 2020 16:17:41 -0400 Subject: [PATCH] Landscape FM / Refactor rotation (#6309) * landscape FM / Refactor rotation refactor and simplify the orientation handling code. the user generally cares about the rotation (what direction the device is facing) and not about if koreader is displaying in portrait or landscape mode * bump base update luasocket, libjpeg-turbo, curl add logging to evernote-sdk-lua update framebuffer for proper rotation --- base | 2 +- frontend/apps/filemanager/filemanager.lua | 37 +++--- frontend/apps/reader/modules/readerfooter.lua | 2 +- .../apps/reader/modules/readergesture.lua | 6 +- .../apps/reader/modules/readerrolling.lua | 8 -- frontend/apps/reader/modules/readerview.lua | 65 +++------ frontend/device/input.lua | 18 +-- frontend/dispatcher.lua | 2 +- frontend/ui/data/creoptions.lua | 14 +- frontend/ui/data/koptoptions.lua | 13 +- frontend/ui/data/optionsutil.lua | 5 - frontend/ui/data/strings.lua | 9 +- .../elements/common_settings_menu_table.lua | 5 +- .../ui/elements/filemanager_menu_order.lua | 4 +- frontend/ui/elements/reader_menu_order.lua | 4 +- .../elements/screen_rotation_menu_table.lua | 124 ++++++++++++++++++ .../ui/elements/screen_toggle_gsensor.lua | 13 -- spec/unit/evernote_plugin_main_spec.lua | 4 +- spec/unit/readerbookmark_spec.lua | 2 + spec/unit/readerdictionary_spec.lua | 1 + spec/unit/readerfooter_spec.lua | 24 ++++ spec/unit/readerhighlight_spec.lua | 3 + spec/unit/readerlink_spec.lua | 10 +- spec/unit/readerpaging_spec.lua | 7 +- spec/unit/readerrolling_spec.lua | 32 ++--- spec/unit/readersearch_spec.lua | 5 +- spec/unit/readertoc_spec.lua | 4 +- spec/unit/readerui_spec.lua | 5 +- spec/unit/readerview_spec.lua | 6 +- spec/unit/screenshoter_spec.lua | 10 +- 30 files changed, 287 insertions(+), 157 deletions(-) create mode 100644 frontend/ui/elements/screen_rotation_menu_table.lua delete mode 100644 frontend/ui/elements/screen_toggle_gsensor.lua diff --git a/base b/base index 849231bf5..68b3a7c5d 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 849231bf518a6b1457459b408b9ef04e36f44b83 +Subproject commit 68b3a7c5d74cb77d82a9eff5b9d9dd9c5bb368f7 diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index c6bf452ef..60db22e8e 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -47,20 +47,6 @@ local C_ = _.pgettext local Screen = Device.screen local T = require("ffi/util").template -local function restoreScreenMode() - --- @todo: Not Yet Implemented. Layout is currently broken in Landscape. - local screen_mode = G_reader_settings:readSetting("fm_screen_mode") or "portrait" - --- @note: Basically, if we were already in Portrait/Inverted Portrait, don't mess with it, - -- as the FM supports it. - -- See setScreenMode in base's ffi/framebuffer.lua for the gory details. - -- See also ReaderView:onSetScreenMode in apps/reader/modules/readerview.lua for a similar logic, - -- if we ever need to add Landscape to the mix. - -- c.f., https://github.com/koreader/koreader/issues/5772#issuecomment-577242365 - if Screen:getScreenMode() ~= screen_mode then - Screen:setScreenMode(screen_mode) - end -end - local FileManager = InputContainer:extend{ title = _("KOReader"), root_path = lfs.currentdir(), @@ -71,6 +57,27 @@ local FileManager = InputContainer:extend{ mkdir_bin = Device:isAndroid() and "/system/bin/mkdir" or "/bin/mkdir", } +function FileManager:onSetRotationMode(rotation) + if rotation ~= nil and rotation ~= Screen:getRotationMode() then + Screen:setRotationMode(rotation) + if self.instance then + self:reinit(self.instance.path, self.instance.focused_file) + UIManager:setDirty(self.instance.banner, function() + return "ui", self.instance.banner.dimen + end) + end + end + return true +end + +function FileManager:setRotationMode() + local locked = G_reader_settings:readSetting("lock_rotation") + local rotation_mode = G_reader_settings:readSetting("fm_rotation_mode") or 0 + if locked then + self:onSetRotationMode(rotation_mode) + end +end + function FileManager:init() if Device:isTouchDevice() then self:registerTouchZones({ @@ -1029,7 +1036,7 @@ end function FileManager:showFiles(path, focused_file) path = path or G_reader_settings:readSetting("lastdir") or filemanagerutil.getDefaultDir() G_reader_settings:saveSetting("lastdir", path) - restoreScreenMode() + self:setRotationMode() local file_manager = FileManager:new{ dimen = Screen:getSize(), covers_fullscreen = true, -- hint for UIManager:_repaint() diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index 7c08bb324..a8653d643 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -1975,7 +1975,7 @@ function ReaderFooter:onFrontlightStateChanged() end end -function ReaderFooter:onChangeScreenMode() +function ReaderFooter:onSetRotationMode() self:updateFooterContainer() self:resetLayout(true) end diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index bc01b543b..73caeff53 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -1,4 +1,5 @@ local BD = require("ui/bidi") +local bit = require("bit") local ConfirmBox = require("ui/widget/confirmbox") local DataStorage = require("datastorage") local Device = require("device") @@ -1551,9 +1552,8 @@ function ReaderGesture:gestureAction(action, ges) self.ui:handleEvent(Event:new("RestoreZoomMode")) self.ui:handleEvent(Event:new("InitScrollPageStates")) elseif action == "toggle_rotation" then - local event_name = self.document.info.has_pages and "SwapScreenMode" or "ChangeScreenMode" - local arg = Screen:getScreenMode() == "portrait" and "landscape" or "portrait" - self.ui:handleEvent(Event:new(event_name, arg)) + local arg = bit.band((Screen:getRotationMode() + 1), 3) + self.ui:handleEvent(Event:new("SetRotationMode", arg)) elseif action == "toggle_wifi" then local NetworkMgr = require("ui/network/manager") diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 237eed78f..0445d93cf 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -850,14 +850,6 @@ function ReaderRolling:onSetDimensions(dimen) end end -function ReaderRolling:onChangeScreenMode(mode, rotation) - -- Flag it as interactive so we can properly swap to Inverted orientations - -- (we usurp the second argument, which usually means rotation) - self.ui:handleEvent(Event:new("SetScreenMode", mode, rotation or true)) - -- (This had the above ReaderRolling:onSetDimensions() called to resize - -- document dimensions and keep up with current position) -end - function ReaderRolling:onColorRenderingUpdate() self.ui.document:updateColorRendering() UIManager:setDirty(self.view.dialog, "partial") diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index c57f848c2..43944e40e 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -672,45 +672,18 @@ function ReaderView:restoreViewContext(ctx) end end --- NOTE: This is just a shim for koptoptions, because we want to be able to pass an optional second argument to SetScreenMode... --- This is also used as a sink for gsensor input events, because we can only send a single event per input, --- and we need to cover both CRe & KOpt... -function ReaderView:onSwapScreenMode(new_mode, rotation) - -- Don't do anything if an explicit rotation was requested, but it hasn't actually changed, - -- because we may be sending this event *right before* a ChangeScreenMode in CRe (gyro) - if rotation ~= nil and rotation ~= true and rotation == Screen:getRotationMode() then - return true - end - -- CRe - self.ui:handleEvent(Event:new("ChangeScreenMode", new_mode, rotation or true)) - -- KOpt (On CRe, since it's redundant (RR:onChangeScreenMode already sends one), this'll get discarded early) - self.ui:handleEvent(Event:new("SetScreenMode", new_mode, rotation or true)) -end - -function ReaderView:onSetScreenMode(new_mode, rotation, noskip) - -- Don't do anything if an explicit rotation was requested, but it hasn't actually changed, - -- because we may be sending this event *right after* a ChangeScreenMode in CRe (gsensor) - -- We only want to let the onReadSettings one go through, otherwise the testsuite blows up... - if noskip == nil and rotation ~= nil and rotation ~= true and rotation == Screen:getRotationMode() then - return true - end - if new_mode == "landscape" or new_mode == "portrait" then - -- NOTE: Hacky hack! If rotation is "true", that's actually an "interactive" flag for setScreenMode - --- @fixme That's because we can't store nils in a table, which is what Event:new attempts to do ;). - -- c.f., & - -- With a fixed Event implementation, we'd instead stick "interactive" in a third argument, - -- which we could happily pass while still keeping rotation nil ;). - if rotation ~= nil and rotation ~= true then - Screen:setRotationMode(rotation) - else - Screen:setScreenMode(new_mode, rotation) +function ReaderView:onSetRotationMode(rotation) + if rotation ~= nil then + if rotation == Screen:getRotationMode() then + return true end - UIManager:setDirty(self.dialog, "full") - local new_screen_size = Screen:getSize() - self.ui:handleEvent(Event:new("SetDimensions", new_screen_size)) - self.ui:onScreenResize(new_screen_size) - self.ui:handleEvent(Event:new("InitScrollPageStates")) + Screen:setRotationMode(rotation) end + UIManager:setDirty(self.dialog, "full") + local new_screen_size = Screen:getSize() + self.ui:handleEvent(Event:new("SetDimensions", new_screen_size)) + self.ui:onScreenResize(new_screen_size) + self.ui:handleEvent(Event:new("InitScrollPageStates")) return true end @@ -750,15 +723,18 @@ In combination with zoom to fit page, page height, content height or content, co end function ReaderView:onReadSettings(config) - local screen_mode self.render_mode = config:readSetting("render_mode") or 0 - if self.ui.document.info.has_pages then - screen_mode = config:readSetting("screen_mode") or G_reader_settings:readSetting("kopt_screen_mode") or "portrait" - else - screen_mode = config:readSetting("screen_mode") or G_reader_settings:readSetting("copt_screen_mode") or "portrait" + local locked = G_reader_settings:readSetting("lock_rotation") + local rotation_mode = config:readSetting("rotation_mode") + if not rotation_mode and locked then + if self.ui.document.info.has_pages then + rotation_mode = G_reader_settings:readSetting("kopt_rotation_mode") or 0 + else + rotation_mode = G_reader_settings:readSetting("copt_rotation_mode") or 0 + end end - if screen_mode then - self:onSetScreenMode(screen_mode, config:readSetting("rotation_mode"), true) + if rotation_mode then + self:onSetRotationMode(rotation_mode) end self.state.gamma = config:readSetting("gamma") or 1.0 local full_screen = config:readSetting("kopt_full_screen") or self.document.configurable.full_screen @@ -845,7 +821,6 @@ end function ReaderView:onSaveSettings() self.ui.doc_settings:saveSetting("render_mode", self.render_mode) - self.ui.doc_settings:saveSetting("screen_mode", Screen:getScreenMode()) self.ui.doc_settings:saveSetting("rotation_mode", Screen:getRotationMode()) self.ui.doc_settings:saveSetting("gamma", self.state.gamma) self.ui.doc_settings:saveSetting("highlight", self.highlight.saved) diff --git a/frontend/device/input.lua b/frontend/device/input.lua index 0c580890b..c7103764d 100644 --- a/frontend/device/input.lua +++ b/frontend/device/input.lua @@ -667,24 +667,20 @@ end --- Accelerometer on the Forma, c.f., drivers/hwmon/mma8x5x.c function Input:handleMiscEvNTX(ev) - local rotation_mode, screen_mode + local rotation_mode if ev.code == MSC_RAW then if ev.value == MSC_RAW_GSENSOR_PORTRAIT_UP then -- i.e., UR rotation_mode = framebuffer.ORIENTATION_PORTRAIT - screen_mode = 'portrait' elseif ev.value == MSC_RAW_GSENSOR_LANDSCAPE_RIGHT then -- i.e., CW rotation_mode = framebuffer.ORIENTATION_LANDSCAPE - screen_mode = 'landscape' elseif ev.value == MSC_RAW_GSENSOR_PORTRAIT_DOWN then -- i.e., UD rotation_mode = framebuffer.ORIENTATION_PORTRAIT_ROTATED - screen_mode = 'portrait' elseif ev.value == MSC_RAW_GSENSOR_LANDSCAPE_LEFT then -- i.e., CCW rotation_mode = framebuffer.ORIENTATION_LANDSCAPE_ROTATED - screen_mode = 'landscape' else -- Discard FRONT/BACK return @@ -695,18 +691,10 @@ function Input:handleMiscEvNTX(ev) end local old_rotation_mode = self.device.screen:getRotationMode() - local old_screen_mode = self.device.screen:getScreenMode() - -- NOTE: Try to handle ScreenMode changes sanely, without wrecking the FM, which only supports Portrait/Inverted ;). -- NOTE: See the Oasis version just above us for a variant that's locked to the current ScreenMode. -- Might be nice to expose the two behaviors to the user, somehow? - if rotation_mode ~= old_rotation_mode then - if screen_mode ~= old_screen_mode then - return Event:new("SwapScreenMode", screen_mode, rotation_mode) - else - self.device.screen:setRotationMode(rotation_mode) - local UIManager = require("ui/uimanager") - UIManager:onRotation() - end + if rotation_mode and rotation_mode ~= old_rotation_mode then + return Event:new("SetRotationMode", rotation_mode) end end diff --git a/frontend/dispatcher.lua b/frontend/dispatcher.lua index ae84cc646..d459bad86 100644 --- a/frontend/dispatcher.lua +++ b/frontend/dispatcher.lua @@ -23,7 +23,7 @@ and optionally --]]-- local settingsList = { --CreOptions - screen_mode = {category="string"}, + rotation_mode = {category="string"}, visible_pages = {category="string"}, h_page_margins = {category="string"}, sync_t_b_page_margins = {category="string"}, diff --git a/frontend/ui/data/creoptions.lua b/frontend/ui/data/creoptions.lua index d1db5d1c8..fc3f13f54 100644 --- a/frontend/ui/data/creoptions.lua +++ b/frontend/ui/data/creoptions.lua @@ -1,4 +1,5 @@ local Device = require("device") +local Screen = Device.screen local S = require("ui/data/strings") local optionsutil = require("ui/data/optionsutil") local _ = require("gettext") @@ -19,14 +20,15 @@ local CreOptions = { icon = "resources/icons/appbar.transform.rotate.right.large.png", options = { { - name = "screen_mode", + name = "rotation_mode", name_text = S.SCREEN_MODE, - toggle = {S.PORTRAIT, S.LANDSCAPE}, + toggle = {S.LANDSCAPE_ROTATED, S.PORTRAIT, S.LANDSCAPE, S.PORTRAIT_ROTATED}, alternate = false, - args = {"portrait", "landscape"}, - default_arg = "portrait", - current_func = function() return Device.screen:getScreenMode() end, - event = "ChangeScreenMode", + values = {Screen.ORIENTATION_LANDSCAPE_ROTATED, Screen.ORIENTATION_PORTRAIT, Screen.ORIENTATION_LANDSCAPE, Screen.ORIENTATION_PORTRAIT_ROTATED}, + args = {Screen.ORIENTATION_LANDSCAPE_ROTATED, Screen.ORIENTATION_PORTRAIT, Screen.ORIENTATION_LANDSCAPE, Screen.ORIENTATION_PORTRAIT_ROTATED}, + default_arg = 0, + current_func = function() return Device.screen:getRotationMode() end, + event = "SetRotationMode", name_text_hold_callback = optionsutil.showValues, }, { diff --git a/frontend/ui/data/koptoptions.lua b/frontend/ui/data/koptoptions.lua index 2beeadf5d..969740c37 100644 --- a/frontend/ui/data/koptoptions.lua +++ b/frontend/ui/data/koptoptions.lua @@ -26,14 +26,15 @@ local KoptOptions = { icon = "resources/icons/appbar.transform.rotate.right.large.png", options = { { - name = "screen_mode", + name = "rotation_mode", name_text = S.SCREEN_MODE, - toggle = {S.PORTRAIT, S.LANDSCAPE}, + toggle = {S.LANDSCAPE_ROTATED, S.PORTRAIT, S.LANDSCAPE, S.PORTRAIT_ROTATED}, alternate = false, - args = {"portrait", "landscape"}, - default_arg = "portrait", - current_func = function() return Screen:getScreenMode() end, - event = "SwapScreenMode", + values = {Screen.ORIENTATION_LANDSCAPE_ROTATED, Screen.ORIENTATION_PORTRAIT, Screen.ORIENTATION_LANDSCAPE, Screen.ORIENTATION_PORTRAIT_ROTATED}, + args = {Screen.ORIENTATION_LANDSCAPE_ROTATED, Screen.ORIENTATION_PORTRAIT, Screen.ORIENTATION_LANDSCAPE, Screen.ORIENTATION_PORTRAIT_ROTATED}, + default_arg = 0, + current_func = function() return Screen:getRotationMode() end, + event = "SetRotationMode", name_text_hold_callback = optionsutil.showValues, } } diff --git a/frontend/ui/data/optionsutil.lua b/frontend/ui/data/optionsutil.lua index 028912ef3..7867b639e 100644 --- a/frontend/ui/data/optionsutil.lua +++ b/frontend/ui/data/optionsutil.lua @@ -2,11 +2,9 @@ This module contains miscellaneous helper functions for the creoptions and koptoptions. ]] -local Device = require("device") local InfoMessage = require("ui/widget/infomessage") local UIManager = require("ui/uimanager") local _ = require("gettext") -local Screen = Device.screen local T = require("ffi/util").template local optionsutil = {} @@ -19,9 +17,6 @@ function optionsutil.showValues(configurable, option, prefix) local default = G_reader_settings:readSetting(prefix.."_"..option.name) local current = configurable[option.name] local value_default, value_current - if option.name == "screen_mode" then - current = Screen:getScreenMode() - end if option.toggle and option.values then -- build a table so we can see if current/default settings map -- to a known setting with a name (in option.toggle) diff --git a/frontend/ui/data/strings.lua b/frontend/ui/data/strings.lua index 04cce78e4..c4f790801 100644 --- a/frontend/ui/data/strings.lua +++ b/frontend/ui/data/strings.lua @@ -1,8 +1,9 @@ local _ = require("gettext") +local C_ = _.pgettext local S = {} -S.SCREEN_MODE = _("Orientation") +S.SCREEN_MODE = _("Rotation") S.DUAL_PAGES = _("Dual Pages") S.PAGE_CROP = _("Page Crop") S.FULL_SCREEN = _("Full Screen") @@ -77,8 +78,10 @@ S.HIGH = _("high") S.ZERO_DEG = _("0 deg") S.FIVE_DEG = _("5 deg") S.TEN_DEG = _("10 deg") -S.PORTRAIT = _("portrait") -S.LANDSCAPE = _("landscape") +S.PORTRAIT = C_("Rotation", "↑ 0°") +S.LANDSCAPE = C_("Rotation", "⤸ 90°") +S.PORTRAIT_ROTATED = C_("Rotation", "↓ 180°") +S.LANDSCAPE_ROTATED = C_("Rotation", "⤹ 90°") S.REGULAR = _("regular") S.BOLD = _("bold") S.VIEW_SCROLL = _("continuous") diff --git a/frontend/ui/elements/common_settings_menu_table.lua b/frontend/ui/elements/common_settings_menu_table.lua index 8311cc735..cdd29489b 100644 --- a/frontend/ui/elements/common_settings_menu_table.lua +++ b/frontend/ui/elements/common_settings_menu_table.lua @@ -180,6 +180,7 @@ NetworkMgr:getMenuTable(common_settings) common_settings.screen = { text = _("Screen"), } +common_settings.screen_rotation = require("ui/elements/screen_rotation_menu_table") common_settings.screen_dpi = require("ui/elements/screen_dpi_menu_table") common_settings.screen_eink_opt = require("ui/elements/screen_eink_opt_menu_table") common_settings.menu_activate = require("ui/elements/menu_activate") @@ -194,10 +195,6 @@ common_settings.ignore_hold_corners = { end, } -if Device:canToggleGSensor() then - common_settings.screen_toggle_gsensor = require("ui/elements/screen_toggle_gsensor") -end - -- NOTE: Allow disabling color if it's mistakenly enabled on a Grayscale screen (after a settings import?) if Screen:isColorEnabled() or Screen:isColorScreen() then common_settings.color_rendering = require("ui/elements/screen_color_menu_table") diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 05942a737..f7f9d76c8 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -72,12 +72,12 @@ local order = { screen = { "screensaver", "----------------------------", + "screen_rotation", + "----------------------------", "screen_dpi", "screen_eink_opt", "color_rendering", "----------------------------", - "screen_toggle_gsensor", - "----------------------------", "screen_timeout", "fullscreen", }, diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index 3965a2790..d2e46fca9 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -93,12 +93,12 @@ local order = { screen = { "screensaver", "----------------------------", + "screen_rotation", + "----------------------------", "screen_dpi", "screen_eink_opt", "color_rendering", "----------------------------", - "screen_toggle_gsensor", - "----------------------------", "screen_timeout", "fullscreen", }, diff --git a/frontend/ui/elements/screen_rotation_menu_table.lua b/frontend/ui/elements/screen_rotation_menu_table.lua new file mode 100644 index 000000000..65bb9e61f --- /dev/null +++ b/frontend/ui/elements/screen_rotation_menu_table.lua @@ -0,0 +1,124 @@ +local _ = require("gettext") +local Device = require("device") +local Event = require("ui/event") +local FileManager = require("apps/filemanager/filemanager") +local UIManager = require("ui/uimanager") +local Screen = Device.screen +local S = require("ui/data/strings") + +return { + text = _("Rotation"), + sub_item_table_func = function() + local rotation_table = {} + + if Device:canToggleGSensor() then + table.insert(rotation_table, { + text = _("Ignore accelerometer rotation events"), + checked_func = function() + return G_reader_settings:isTrue("input_ignore_gsensor") + end, + callback = function() + G_reader_settings:flipNilOrFalse("input_ignore_gsensor") + Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor")) + end, + }) + end + + table.insert(rotation_table, { + text = _("Keep file browser rotation"), + help_text = _("When checked the rotation of the file browser and the reader will not affect each other"), + checked_func = function() + return G_reader_settings:isTrue("lock_rotation") + end, + callback = function() + G_reader_settings:flipNilOrFalse("lock_rotation") + end, + separator = true, + }) + + if FileManager.instance then + table.insert(rotation_table, { + text_func = function() + local text = S.LANDSCAPE_ROTATED + if G_reader_settings:readSetting("fm_rotation_mode") == Screen.ORIENTATION_LANDSCAPE_ROTATED then + text = text .. " ★" + end + return text + end, + checked_func = function() + return Screen:getRotationMode() == Screen.ORIENTATION_LANDSCAPE_ROTATED + end, + callback = function(touchmenu_instance) + UIManager:broadcastEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE_ROTATED)) + if touchmenu_instance then touchmenu_instance:closeMenu() end + end, + hold_callback = function(touchmenu_instance) + G_reader_settings:saveSetting("fm_rotation_mode", Screen.ORIENTATION_LANDSCAPE_ROTATED) + if touchmenu_instance then touchmenu_instance:updateItems() end + end, + }) + table.insert(rotation_table, { + text_func = function() + local text = S.PORTRAIT + if G_reader_settings:readSetting("fm_rotation_mode") == Screen.ORIENTATION_PORTRAIT then + text = text .. " ★" + end + return text + end, + checked_func = function() + return Screen:getRotationMode() == Screen.ORIENTATION_PORTRAIT + end, + callback = function(touchmenu_instance) + UIManager:broadcastEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) + if touchmenu_instance then touchmenu_instance:closeMenu() end + end, + hold_callback = function(touchmenu_instance) + G_reader_settings:saveSetting("fm_rotation_mode", Screen.ORIENTATION_PORTRAIT) + if touchmenu_instance then touchmenu_instance:updateItems() end + end, + }) + table.insert(rotation_table, { + text_func = function() + local text = S.LANDSCAPE + if G_reader_settings:readSetting("fm_rotation_mode") == Screen.ORIENTATION_LANDSCAPE then + text = text .. " ★" + end + return text + end, + checked_func = function() + return Screen:getRotationMode() == Screen.ORIENTATION_LANDSCAPE + end, + callback = function(touchmenu_instance) + UIManager:broadcastEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE)) + if touchmenu_instance then touchmenu_instance:closeMenu() end + end, + hold_callback = function(touchmenu_instance) + G_reader_settings:saveSetting("fm_rotation_mode", Screen.ORIENTATION_LANDSCAPE) + if touchmenu_instance then touchmenu_instance:updateItems() end + end, + }) + table.insert(rotation_table, { + text_func = function() + local text = S.PORTRAIT_ROTATED + if G_reader_settings:readSetting("fm_rotation_mode") == Screen.ORIENTATION_PORTRAIT_ROTATED then + text = text .. " ★" + end + return text + end, + checked_func = function() + return Screen:getRotationMode() == Screen.ORIENTATION_PORTRAIT_ROTATED + end, + callback = function(touchmenu_instance) + UIManager:broadcastEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT_ROTATED)) + if touchmenu_instance then touchmenu_instance:closeMenu() end + end, + hold_callback = function(touchmenu_instance) + G_reader_settings:saveSetting("fm_rotation_mode", Screen.ORIENTATION_PORTRAIT_ROTATED) + if touchmenu_instance then touchmenu_instance:updateItems() end + end, + }) + end + + return rotation_table + end, +} diff --git a/frontend/ui/elements/screen_toggle_gsensor.lua b/frontend/ui/elements/screen_toggle_gsensor.lua deleted file mode 100644 index 92b978737..000000000 --- a/frontend/ui/elements/screen_toggle_gsensor.lua +++ /dev/null @@ -1,13 +0,0 @@ -local Device = require("device") -local _ = require("gettext") - -return { - text = _("Ignore accelerometer rotation events"), - checked_func = function() - return G_reader_settings:isTrue("input_ignore_gsensor") - end, - callback = function() - G_reader_settings:flipNilOrFalse("input_ignore_gsensor") - Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor")) - end, -} diff --git a/spec/unit/evernote_plugin_main_spec.lua b/spec/unit/evernote_plugin_main_spec.lua index d9288198e..4bdbe80ca 100644 --- a/spec/unit/evernote_plugin_main_spec.lua +++ b/spec/unit/evernote_plugin_main_spec.lua @@ -1,14 +1,16 @@ describe("Evernote plugin module", function() local readerui, match local sample_clippings, sample_epub - local DocumentRegistry + local DocumentRegistry, Screen setup(function() require("commonrequire") match = require("luassert.match") local ReaderUI = require("apps/reader/readerui") DocumentRegistry = require("document/documentregistry") + Screen = require("device").screen sample_epub = "spec/front/unit/data/juliet.epub" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } diff --git a/spec/unit/readerbookmark_spec.lua b/spec/unit/readerbookmark_spec.lua index a7c162192..c03583f22 100644 --- a/spec/unit/readerbookmark_spec.lua +++ b/spec/unit/readerbookmark_spec.lua @@ -48,6 +48,7 @@ describe("ReaderBookmark module", function() setup(function() DocSettings:open(sample_epub):purge() readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } readerui.status.enabled = false @@ -130,6 +131,7 @@ describe("ReaderBookmark module", function() setup(function() DocSettings:open(sample_pdf):purge() readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui.status.enabled = false diff --git a/spec/unit/readerdictionary_spec.lua b/spec/unit/readerdictionary_spec.lua index f60621558..c2f84a25f 100644 --- a/spec/unit/readerdictionary_spec.lua +++ b/spec/unit/readerdictionary_spec.lua @@ -13,6 +13,7 @@ describe("Readerdictionary module", function() setup(function() local sample_epub = "spec/front/unit/data/leaves.epub" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } rolling = readerui.rolling diff --git a/spec/unit/readerfooter_spec.lua b/spec/unit/readerfooter_spec.lua index d0910cdef..a9fb03bfc 100644 --- a/spec/unit/readerfooter_spec.lua +++ b/spec/unit/readerfooter_spec.lua @@ -70,6 +70,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_pdf)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } assert.is.same(true, readerui.view.footer_visible) @@ -95,6 +96,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_pdf)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } assert.is.same(true, readerui.view.footer_visible) @@ -112,6 +114,7 @@ describe("Readerfooter module", function() cfg:flush() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } assert.is.same(false, readerui.view.footer_visible) @@ -128,6 +131,7 @@ describe("Readerfooter module", function() cfg:flush() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } assert.is.same(false, readerui.view.footer_visible) @@ -144,6 +148,7 @@ describe("Readerfooter module", function() cfg:flush() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } assert.is.same(true, readerui.view.footer_visible) @@ -156,6 +161,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_epub)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -174,6 +180,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_pdf)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local footer = readerui.view.footer @@ -189,6 +196,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_pdf)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local fake_menu = {setting = {}} @@ -240,6 +248,7 @@ describe("Readerfooter module", function() it("should rotate through different modes", function() local sample_pdf = "spec/front/unit/data/2col.pdf" local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local footer = readerui.view.footer @@ -281,6 +290,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_pdf)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local footer = readerui.view.footer @@ -309,6 +319,7 @@ describe("Readerfooter module", function() os.remove(DocSettings:getHistoryPath(sample_epub)) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -331,6 +342,7 @@ describe("Readerfooter module", function() }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -357,6 +369,7 @@ describe("Readerfooter module", function() auto_refresh_time = true, }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -391,6 +404,7 @@ describe("Readerfooter module", function() auto_refresh_time = true, }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -416,6 +430,7 @@ describe("Readerfooter module", function() auto_refresh_time = true, }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local footer = readerui.view.footer @@ -469,6 +484,7 @@ describe("Readerfooter module", function() time = true, }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local footer = readerui.view.footer @@ -508,6 +524,7 @@ describe("Readerfooter module", function() pages_left = true, }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } local footer = readerui.view.footer @@ -539,6 +556,7 @@ describe("Readerfooter module", function() pages_left = true, }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf) } local footer = readerui.view.footer @@ -557,6 +575,7 @@ describe("Readerfooter module", function() assert.are.same({}, UIManager._task_queue) G_reader_settings:saveSetting("footer", {}) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -593,6 +612,7 @@ describe("Readerfooter module", function() G_reader_settings:saveSetting("reader_footer_mode", 2) G_reader_settings:saveSetting("footer", { time = true }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -611,6 +631,7 @@ describe("Readerfooter module", function() G_reader_settings:saveSetting("reader_footer_mode", 1) G_reader_settings:saveSetting("footer", {}) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -629,6 +650,7 @@ describe("Readerfooter module", function() G_reader_settings:saveSetting("reader_footer_mode", 1) G_reader_settings:saveSetting("footer", {disable_progress_bar = true}) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -645,6 +667,7 @@ describe("Readerfooter module", function() G_reader_settings:saveSetting("footer", { disabled = true }) local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } local footer = readerui.view.footer @@ -657,6 +680,7 @@ describe("Readerfooter module", function() it("should toggle between full and min progress bar for cre documents", function() local sample_txt = "spec/front/unit/data/sample.txt" local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_txt), } local footer = readerui.view.footer diff --git a/spec/unit/readerhighlight_spec.lua b/spec/unit/readerhighlight_spec.lua index 32bc41b10..4f4f2a7dd 100644 --- a/spec/unit/readerhighlight_spec.lua +++ b/spec/unit/readerhighlight_spec.lua @@ -70,6 +70,7 @@ describe("Readerhighlight module", function() setup(function() local sample_epub = "spec/front/unit/data/juliet.epub" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } end) @@ -111,6 +112,7 @@ describe("Readerhighlight module", function() setup(function() local sample_pdf = "spec/front/unit/data/sample.pdf" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", false)) @@ -194,6 +196,7 @@ describe("Readerhighlight module", function() setup(function() local sample_pdf = "spec/front/unit/data/sample.pdf" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", true)) diff --git a/spec/unit/readerlink_spec.lua b/spec/unit/readerlink_spec.lua index 5d3889df9..28b36f6c3 100644 --- a/spec/unit/readerlink_spec.lua +++ b/spec/unit/readerlink_spec.lua @@ -1,5 +1,5 @@ describe("ReaderLink module", function() - local DocumentRegistry, ReaderUI, UIManager, sample_epub, sample_pdf, Event + local DocumentRegistry, ReaderUI, UIManager, sample_epub, sample_pdf, Event, Screen setup(function() require("commonrequire") @@ -9,12 +9,14 @@ describe("ReaderLink module", function() Event = require("ui/event") ReaderUI = require("apps/reader/readerui") UIManager = require("ui/uimanager") + Screen = require("device").screen sample_epub = "spec/front/unit/data/leaves.epub" sample_pdf = "spec/front/unit/data/paper.pdf" end) it("should jump to links in epub #nocov", function() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } readerui.rolling:onGotoPage(5) @@ -25,6 +27,7 @@ describe("ReaderLink module", function() it("should jump to links in pdf page mode", function() UIManager:quit() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", false)) @@ -38,6 +41,7 @@ describe("ReaderLink module", function() it("should jump to links in pdf scroll mode", function() UIManager:quit() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", true)) @@ -54,6 +58,7 @@ describe("ReaderLink module", function() it("should be able to go back after link jump in epub #nocov", function() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } readerui.rolling:onGotoPage(5) @@ -66,6 +71,7 @@ describe("ReaderLink module", function() it("should be able to go back after link jump in pdf page mode", function() UIManager:quit() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", false)) @@ -81,6 +87,7 @@ describe("ReaderLink module", function() it("should be able to go back after link jump in pdf scroll mode", function() UIManager:quit() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", true)) @@ -133,6 +140,7 @@ describe("ReaderLink module", function() G_reader_settings:saveSetting("reader_footer_mode", 0) require("docsettings"):open(sample_pdf):purge() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetZoomMode", "page")) diff --git a/spec/unit/readerpaging_spec.lua b/spec/unit/readerpaging_spec.lua index 881836403..c49185f9b 100644 --- a/spec/unit/readerpaging_spec.lua +++ b/spec/unit/readerpaging_spec.lua @@ -1,6 +1,6 @@ describe("Readerpaging module", function() local sample_pdf = "spec/front/unit/data/sample.pdf" - local readerui, UIManager, Event, DocumentRegistry, ReaderUI + local readerui, UIManager, Event, DocumentRegistry, ReaderUI, Screen local paging setup(function() @@ -9,11 +9,13 @@ describe("Readerpaging module", function() Event = require("ui/event") DocumentRegistry = require("document/documentregistry") ReaderUI = require("apps/reader/readerui") + Screen = require("device").screen end) describe("Page mode", function() setup(function() readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } paging = readerui.paging @@ -46,6 +48,7 @@ describe("Readerpaging module", function() os.remove(DocSettings:getHistoryPath(sample_pdf)) readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } paging = readerui.paging @@ -74,6 +77,7 @@ describe("Readerpaging module", function() it("should scroll backward on the first page without crash", function() local sample_djvu = "spec/front/unit/data/djvu3spec.djvu" local tmp_readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_djvu), } tmp_readerui.paging:onScrollPanRel(-100) @@ -82,6 +86,7 @@ describe("Readerpaging module", function() it("should scroll forward on the last page without crash", function() local sample_djvu = "spec/front/unit/data/djvu3spec.djvu" local tmp_readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_djvu), } paging = tmp_readerui.paging diff --git a/spec/unit/readerrolling_spec.lua b/spec/unit/readerrolling_spec.lua index f670ec337..47ba387c0 100644 --- a/spec/unit/readerrolling_spec.lua +++ b/spec/unit/readerrolling_spec.lua @@ -1,5 +1,5 @@ describe("Readerrolling module", function() - local DocumentRegistry, ReaderUI, Event + local DocumentRegistry, ReaderUI, Event, Screen local readerui, rolling setup(function() @@ -7,9 +7,11 @@ describe("Readerrolling module", function() DocumentRegistry = require("document/documentregistry") ReaderUI = require("apps/reader/readerui") Event = require("ui/event") + Screen = require("device").screen local sample_epub = "spec/front/unit/data/juliet.epub" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } rolling = readerui.rolling @@ -17,7 +19,7 @@ describe("Readerrolling module", function() describe("test in portrait screen mode", function() it("should goto portrait screen mode", function() - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) end) it("should goto certain page", function() @@ -79,6 +81,7 @@ describe("Readerrolling module", function() it("should emit EndOfBook event at the end sample txt", function() local sample_txt = "spec/front/unit/data/sample.txt" local txt_readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_txt), } local called = false @@ -108,7 +111,7 @@ describe("Readerrolling module", function() describe("test in landscape screen mode", function() it("should go to landscape screen mode", function() - readerui:handleEvent(Event:new("ChangeScreenMode", "landscape")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE)) end) it("should goto certain page", function() for i = 1, 10, 5 do @@ -156,27 +159,27 @@ describe("Readerrolling module", function() describe("switching screen mode should not change current page number", function() teardown(function() - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) end) it("for portrait-landscape-portrait switching", function() for i = 80, 100, 10 do - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) rolling:onGotoPage(i) assert.are.same(i, rolling.current_page) - readerui:handleEvent(Event:new("ChangeScreenMode", "landscape")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE)) assert.are_not.same(i, rolling.current_page) - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) assert.are.same(i, rolling.current_page) end end) it("for landscape-portrait-landscape switching", function() for i = 110, 130, 10 do - readerui:handleEvent(Event:new("ChangeScreenMode", "landscape")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE)) rolling:onGotoPage(i) assert.are.same(i, rolling.current_page) - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) assert.are_not.same(i, rolling.current_page) - readerui:handleEvent(Event:new("ChangeScreenMode", "landscape")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE)) assert.are.same(i, rolling.current_page) end end) @@ -184,14 +187,11 @@ describe("Readerrolling module", function() describe("test changing word gap - space condensing", function() it("should show pages for different word gap", function() - readerui.document:setWordSpacing({100, 90}) - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetWordSpacing", {100, 90})) assert.are.same(252, readerui.document:getPageCount()) - readerui.document:setWordSpacing({95, 75}) - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetWordSpacing", {95, 75})) assert.are.same(241, readerui.document:getPageCount()) - readerui.document:setWordSpacing({75, 50}) - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetWordSpacing", {75, 50})) assert.are.same(231, readerui.document:getPageCount()) end) end) diff --git a/spec/unit/readersearch_spec.lua b/spec/unit/readersearch_spec.lua index ef84edca5..aa31fcd58 100644 --- a/spec/unit/readersearch_spec.lua +++ b/spec/unit/readersearch_spec.lua @@ -1,12 +1,13 @@ describe("Readersearch module", function() local sample_epub = "spec/front/unit/data/juliet.epub" local sample_pdf = "spec/front/unit/data/sample.pdf" - local DocumentRegistry, ReaderUI, dbg + local DocumentRegistry, ReaderUI, Screen, dbg setup(function() require("commonrequire") DocumentRegistry = require("document/documentregistry") ReaderUI = require("apps/reader/readerui") + Screen = require("device").screen dbg = require("dbg") end) @@ -14,6 +15,7 @@ describe("Readersearch module", function() local doc, search, rolling setup(function() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } doc = readerui.document @@ -118,6 +120,7 @@ describe("Readersearch module", function() local doc, search, paging setup(function() local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } doc = readerui.document diff --git a/spec/unit/readertoc_spec.lua b/spec/unit/readertoc_spec.lua index 60b7ab507..aa839c356 100644 --- a/spec/unit/readertoc_spec.lua +++ b/spec/unit/readertoc_spec.lua @@ -1,15 +1,17 @@ describe("Readertoc module", function() - local DocumentRegistry, ReaderUI, DEBUG + local DocumentRegistry, ReaderUI, Screen, DEBUG local readerui, toc, toc_max_depth, title setup(function() require("commonrequire") DocumentRegistry = require("document/documentregistry") ReaderUI = require("apps/reader/readerui") + Screen = require("device").screen DEBUG = require("dbg") local sample_epub = "spec/front/unit/data/juliet.epub" readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } -- reset book to first page diff --git a/spec/unit/readerui_spec.lua b/spec/unit/readerui_spec.lua index 3ce53eec1..f57a9e77a 100644 --- a/spec/unit/readerui_spec.lua +++ b/spec/unit/readerui_spec.lua @@ -1,5 +1,5 @@ describe("Readerui module", function() - local DocumentRegistry, ReaderUI, DocSettings, UIManager + local DocumentRegistry, ReaderUI, DocSettings, UIManager, Screen local sample_epub = "spec/front/unit/data/leaves.epub" local readerui setup(function() @@ -8,8 +8,10 @@ describe("Readerui module", function() ReaderUI = require("apps/reader/readerui") DocSettings = require("docsettings") UIManager = require("ui/uimanager") + Screen = require("device").screen readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } end) @@ -40,6 +42,7 @@ describe("Readerui module", function() local new_readerui = ReaderUI:_getRunningInstance() assert.is.truthy(new_readerui.document) ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub) }:onClose() assert.is.truthy(new_readerui.document) diff --git a/spec/unit/readerview_spec.lua b/spec/unit/readerview_spec.lua index a7bfd6d7d..9495d118e 100644 --- a/spec/unit/readerview_spec.lua +++ b/spec/unit/readerview_spec.lua @@ -1,5 +1,5 @@ describe("Readerview module", function() - local DocumentRegistry, Blitbuffer, ReaderUI, UIManager, Event + local DocumentRegistry, Blitbuffer, ReaderUI, UIManager, Event, Screen setup(function() require("commonrequire") @@ -10,11 +10,13 @@ describe("Readerview module", function() ReaderUI = require("apps/reader/readerui") UIManager = require("ui/uimanager") Event = require("ui/event") + Screen = require("device").screen end) it("should stop hinting on document close event", function() local sample_epub = "spec/front/unit/data/leaves.epub" local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } for i = #UIManager._task_queue, 1, -1 do @@ -52,6 +54,7 @@ describe("Readerview module", function() G_reader_settings:saveSetting("reader_footer_mode", 0) local sample_pdf = "spec/front/unit/data/2col.pdf" local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", false)) @@ -103,6 +106,7 @@ describe("Readerview module", function() G_reader_settings:saveSetting("reader_footer_mode", 0) local sample_pdf = "spec/front/unit/data/2col.pdf" local readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_pdf), } readerui:handleEvent(Event:new("SetScrollMode", true)) diff --git a/spec/unit/screenshoter_spec.lua b/spec/unit/screenshoter_spec.lua index 33ff15186..ce2d94b95 100644 --- a/spec/unit/screenshoter_spec.lua +++ b/spec/unit/screenshoter_spec.lua @@ -1,5 +1,5 @@ describe("ReaderScreenshot module", function() - local DocumentRegistry, ReaderUI, lfs, UIManager, Event + local DocumentRegistry, ReaderUI, lfs, UIManager, Event, Screen local sample_epub = "spec/front/unit/data/leaves.epub" local readerui setup(function() @@ -9,19 +9,21 @@ describe("ReaderScreenshot module", function() lfs = require("libs/libkoreader-lfs") UIManager = require("ui/uimanager") Event = require("ui/event") + Screen = require("device").screen readerui = ReaderUI:new{ + dimen = Screen:getSize(), document = DocumentRegistry:openDocument(sample_epub), } end) teardown(function() - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) end) it("should get screenshot in portrait", function() local name = "screenshots/reader_screenshot_portrait.png" - readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_PORTRAIT)) UIManager:quit() UIManager:show(readerui) UIManager:scheduleIn(1, function() UIManager:close(readerui) end) @@ -33,7 +35,7 @@ describe("ReaderScreenshot module", function() it("should get screenshot in landscape", function() local name = "screenshots/reader_screenshot_landscape.png" - readerui:handleEvent(Event:new("ChangeScreenMode", "landscape")) + readerui:handleEvent(Event:new("SetRotationMode", Screen.ORIENTATION_LANDSCAPE)) UIManager:quit() UIManager:show(readerui) UIManager:scheduleIn(2, function() UIManager:close(readerui) end)