diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index cb718c26b..58109b043 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -81,22 +81,34 @@ function FileManager:setRotationMode(init) end end -function FileManager:init() - if Device:isTouchDevice() then - self:registerTouchZones({ - { - id = "filemanager_swipe", - ges = "swipe", - screen_zone = { - ratio_x = 0, ratio_y = 0, - ratio_w = Screen:getWidth(), ratio_h = Screen:getHeight(), - }, - handler = function(ges) - self:onSwipeFM(ges) - end, +function FileManager:initGesListener() + if not Device:isTouchDevice() then + return + end + + self:registerTouchZones({ + { + id = "filemanager_swipe", + ges = "swipe", + screen_zone = { + ratio_x = 0, ratio_y = 0, + ratio_w = Screen:getWidth(), ratio_h = Screen:getHeight(), }, - }) + handler = function(ges) + self:onSwipeFM(ges) + end, + }, + }) +end + +function FileManager:onSetDimensions(dimen) + -- update listening according to new screen dimen + if Device:isTouchDevice() then + self:initGesListener() end +end + +function FileManager:setupLayout() self.show_parent = self.show_parent or self local icon_size = Screen:scaleBySize(DGENERIC_ICON_SIZE) local home_button = IconButton:new{ @@ -457,6 +469,20 @@ function FileManager:init() ui = self } + if Device:hasKeys() then + self.key_events.Home = { {"Home"}, doc = "go home" } + -- Override the menu.lua way of handling the back key + self.file_chooser.key_events.Back = { {"Back"}, doc = "go back" } + if not Device:hasFewKeys() then + -- Also remove the handler assigned to the "Back" key by menu.lua + self.file_chooser.key_events.Close = nil + end + end +end + +function FileManager:init() + self:setupLayout() + local screenshoter = Screenshoter:new{ prefix = 'FileManager' } table.insert(self, screenshoter) -- for regular events self.active_widgets = { screenshoter } -- to get events even when hidden @@ -476,22 +502,19 @@ function FileManager:init() table.insert(self, DeviceListener:new{ ui = self }) -- koreader plugins - if not self._plugins_loaded then - for _,plugin_module in ipairs(PluginLoader:loadPlugins()) do - if not plugin_module.is_doc_only then - local ok, plugin_or_err = PluginLoader:createPluginInstance( - plugin_module, { ui = self, }) - -- Keep references to the modules which do not register into menu. - if ok then - local name = plugin_module.name - if name then self[name] = plugin_or_err end - table.insert(self, plugin_or_err) - logger.info("FM loaded plugin", name, - "at", plugin_module.path) - end + for _, plugin_module in ipairs(PluginLoader:loadPlugins()) do + if not plugin_module.is_doc_only then + local ok, plugin_or_err = PluginLoader:createPluginInstance( + plugin_module, { ui = self, }) + -- Keep references to the modules which do not register into menu. + if ok then + local name = plugin_module.name + if name then self[name] = plugin_or_err end + table.insert(self, plugin_or_err) + logger.info("FM loaded plugin", name, + "at", plugin_module.path) end end - self._plugins_loaded = true end if Device:hasWifiToggle() then @@ -499,16 +522,6 @@ function FileManager:init() table.insert(self, NetworkListener:new{ ui = self }) end - if Device:hasKeys() then - self.key_events.Home = { {"Home"}, doc = "go home" } - -- Override the menu.lua way of handling the back key - self.file_chooser.key_events.Back = { {"Back"}, doc = "go back" } - if not Device:hasFewKeys() then - -- Also remove the handler assigned to the "Back" key by menu.lua - self.file_chooser.key_events.Close = nil - end - end - self:handleEvent(Event:new("SetDimensions", self.dimen)) end @@ -696,10 +709,12 @@ function FileManager:reinit(path, focused_file) end -- reinit filemanager self.focused_file = focused_file - self:init() + self:setupLayout() + self:handleEvent(Event:new("SetDimensions", self.dimen)) self.file_chooser.path_items = path_items_backup - -- self:init() has already done file_chooser:refreshPath(), so this one - -- looks like not necessary (cheap with classic mode, less cheap with + -- self:init() has already done file_chooser:refreshPath() + -- (by virtue of rebuilding file_chooser), so this one + -- looks unnecessary (cheap with classic mode, less cheap with -- CoverBrowser plugin's cover image renderings) -- self:onRefresh() end