From c662ca4cc83ac83b7417646d9ac2f5188e0e64c0 Mon Sep 17 00:00:00 2001 From: Hzj_jie Date: Mon, 19 Dec 2016 23:19:54 -0800 Subject: [PATCH] Load plugins also in FileManager (#2426) added is_doc_only plugin attribute --- frontend/apps/filemanager/filemanager.lua | 12 ++++++++- frontend/apps/filemanager/filemanagermenu.lua | 3 +++ frontend/apps/reader/readerui.lua | 2 +- frontend/{apps/reader => }/pluginloader.lua | 0 plugins/evernote.koplugin/main.lua | 1 + plugins/hello.koplugin/main.lua | 27 +++++++++++++++++++ plugins/kosync.koplugin/main.lua | 1 + plugins/statistics.koplugin/main.lua | 1 + plugins/zsync.koplugin/main.lua | 1 + 9 files changed, 46 insertions(+), 2 deletions(-) rename frontend/{apps/reader => }/pluginloader.lua (100%) create mode 100644 plugins/hello.koplugin/main.lua diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index 5b423bc62..e64d74787 100755 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -26,6 +26,7 @@ local _ = require("gettext") local KeyValuePage = require("ui/widget/keyvaluepage") local ReaderUI = require("apps/reader/readerui") local InfoMessage = require("ui/widget/infomessage") +local PluginLoader = require("pluginloader") local function getDefaultDir() if Device:isKindle() then @@ -293,9 +294,18 @@ function FileManager:init() table.insert(self, self.menu) table.insert(self, FileManagerHistory:new{ ui = self, - menu = self.menu }) + self.loaded_modules = {} + -- koreader plugins + for _,plugin_module in ipairs(PluginLoader:loadPlugins()) do + DEBUG("Loaded plugin", plugin_module.name, "at", plugin_module.path) + if not plugin_module.is_doc_only then + -- Keep references to the modules which do not register into menu. + table.insert(self.loaded_modules, plugin_module:new{ ui = self, }) + end + end + if Device:hasKeys() then self.key_events.Close = { {"Home"}, doc = "Close file manager" } end diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 7e8301174..d3da4db42 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -51,6 +51,9 @@ function FileManagerMenu:init() end, }, } + -- For backward compatibility, plugins look for plugins tab, which should be tools tab in file + -- manager. + self.tab_item_table.plugins = self.tab_item_table.tools self.registered_widgets = {} if Device:hasKeys() then diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index fa533b55e..46735a948 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -43,7 +43,7 @@ local FileManagerHistory = require("apps/filemanager/filemanagerhistory") local ReaderSearch = require("apps/reader/modules/readersearch") local ReaderLink = require("apps/reader/modules/readerlink") local ReaderStatus = require("apps/reader/modules/readerstatus") -local PluginLoader = require("apps/reader/pluginloader") +local PluginLoader = require("pluginloader") --[[ This is an abstraction for a reader interface diff --git a/frontend/apps/reader/pluginloader.lua b/frontend/pluginloader.lua similarity index 100% rename from frontend/apps/reader/pluginloader.lua rename to frontend/pluginloader.lua diff --git a/plugins/evernote.koplugin/main.lua b/plugins/evernote.koplugin/main.lua index b38a15dda..f89a5a80a 100644 --- a/plugins/evernote.koplugin/main.lua +++ b/plugins/evernote.koplugin/main.lua @@ -16,6 +16,7 @@ local MyClipping = require("clip") local EvernoteExporter = InputContainer:new{ name = "evernote", + is_doc_only = true, login_title = _("Login to Evernote"), notebook_name = _("KOReader Notes"), evernote_domain = nil, diff --git a/plugins/hello.koplugin/main.lua b/plugins/hello.koplugin/main.lua new file mode 100644 index 000000000..690e8061b --- /dev/null +++ b/plugins/hello.koplugin/main.lua @@ -0,0 +1,27 @@ +local InfoMessage = require("ui/widget/infomessage") +local UIManager = require("ui/uimanager") +local WidgetContainer = require("ui/widget/container/widgetcontainer") +local _ = require("gettext") + +local Hello = WidgetContainer:new{ + name = 'Hello', + is_doc_only = false, + disabled = true, -- This is a debug plugin +} + +function Hello:init() + self.ui.menu:registerToMainMenu(self) +end + +function Hello:addToMainMenu(tab_item_table) + table.insert(tab_item_table.plugins, { + text = _("Hello World"), + callback_func = function() + UIManager:show(InfoMessage:new{ + text = _("Hello, docless plugin world"), + }) + end, + }) +end + +return Hello diff --git a/plugins/kosync.koplugin/main.lua b/plugins/kosync.koplugin/main.lua index aa3e3d734..6661b90e2 100644 --- a/plugins/kosync.koplugin/main.lua +++ b/plugins/kosync.koplugin/main.lua @@ -20,6 +20,7 @@ end local KOSync = InputContainer:new{ name = "kosync", + is_doc_only = true, title = _("Register/login to KOReader server"), page_update_times = 0, diff --git a/plugins/statistics.koplugin/main.lua b/plugins/statistics.koplugin/main.lua index 208a4707b..2666a17ae 100755 --- a/plugins/statistics.koplugin/main.lua +++ b/plugins/statistics.koplugin/main.lua @@ -21,6 +21,7 @@ local statistics_dir = DataStorage:getDataDir() .. "/statistics/" local page_max_time local ReaderStatistics = InputContainer:new { + is_doc_only = true, last_time = nil, page_min_read_sec = 5, page_max_read_sec = 90, diff --git a/plugins/zsync.koplugin/main.lua b/plugins/zsync.koplugin/main.lua index afea173a3..32f5dd4be 100644 --- a/plugins/zsync.koplugin/main.lua +++ b/plugins/zsync.koplugin/main.lua @@ -14,6 +14,7 @@ int rmdir(const char *); require("ffi/zeromq_h") local ZSync = InputContainer:new{ name = "zsync", + is_doc_only = true, } function ZSync:init()