diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index 710a560f4..fb0987ed2 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -490,24 +490,38 @@ function FileManager:setupLayout() end end +function FileManager:registerModule(name, ui_module, always_active) + if name then + self[name] = ui_module + ui_module.name = "filemanager" .. name + end + table.insert(self, ui_module) + if always_active then + -- to get events even when hidden + table.insert(self.active_widgets, ui_module) + end +end + -- NOTE: The only thing that will *ever* instantiate a new FileManager object is our very own showFiles below! 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 - - table.insert(self, self.menu) - table.insert(self, FileManagerHistory:new{ ui = self }) - table.insert(self, FileManagerCollection:new{ ui = self }) - table.insert(self, FileManagerFileSearcher:new{ ui = self }) - table.insert(self, FileManagerShortcuts:new{ ui = self }) - table.insert(self, LanguageSupport:new{ ui = self }) - table.insert(self, ReaderDictionary:new{ ui = self }) - table.insert(self, ReaderWikipedia:new{ ui = self }) - table.insert(self, ReaderDeviceStatus:new{ ui = self }) - table.insert(self, DeviceListener:new{ ui = self }) + self.active_widgets = {} + + self:registerModule("screenshot", Screenshoter:new{ + prefix = 'FileManager', + ui = self, + }, true) + + self:registerModule("menu", self.menu) + self:registerModule("history", FileManagerHistory:new{ ui = self }) + self:registerModule("collections", FileManagerCollection:new{ ui = self }) + self:registerModule("filesearcher", FileManagerFileSearcher:new{ ui = self }) + self:registerModule("folder_shortcuts", FileManagerShortcuts:new{ ui = self }) + self:registerModule("languagesupport", LanguageSupport:new{ ui = self }) + self:registerModule("dictionary", ReaderDictionary:new{ ui = self }) + self:registerModule("wikipedia", ReaderWikipedia:new{ ui = self }) + self:registerModule("devicestatus", ReaderDeviceStatus:new{ ui = self }) + self:registerModule("devicelistener", DeviceListener:new{ ui = self }) -- koreader plugins for _, plugin_module in ipairs(PluginLoader:loadPlugins()) do @@ -516,10 +530,8 @@ function FileManager:init() 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.dbg("FM loaded plugin", name, + self:registerModule(plugin_module.name, plugin_or_err) + logger.dbg("FM loaded plugin", plugin_module.name, "at", plugin_module.path) end end diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index df7ab7091..8c085d778 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -83,8 +83,10 @@ local ReaderUI = InputContainer:new{ } function ReaderUI:registerModule(name, ui_module, always_active) - if name then self[name] = ui_module end - ui_module.name = "reader" .. name + if name then + self[name] = ui_module + ui_module.name = "reader" .. name + end table.insert(self, ui_module) if always_active then -- to get events even when hidden