From 5c9e6498044d31010e7964e25f68e17701562a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Fern=C3=A1ndez?= <975883+pazos@users.noreply.github.com> Date: Sat, 6 Feb 2021 19:09:31 +0100 Subject: [PATCH] move opds to plugin (#7237) --- plugins/opds.koplugin/_meta.lua | 6 +++ plugins/opds.koplugin/main.lua | 47 +++++++++++++++++++ .../opds.koplugin}/opdsbrowser.lua | 2 +- .../opds.koplugin}/opdscatalog.lua | 2 +- .../opds.koplugin}/opdsparser.lua | 0 spec/unit/opds_spec.lua | 11 ++++- 6 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 plugins/opds.koplugin/_meta.lua create mode 100644 plugins/opds.koplugin/main.lua rename {frontend/ui/widget => plugins/opds.koplugin}/opdsbrowser.lua (99%) rename {frontend/apps/opdscatalog => plugins/opds.koplugin}/opdscatalog.lua (97%) rename {frontend/ui => plugins/opds.koplugin}/opdsparser.lua (100%) diff --git a/plugins/opds.koplugin/_meta.lua b/plugins/opds.koplugin/_meta.lua new file mode 100644 index 000000000..c7c2258eb --- /dev/null +++ b/plugins/opds.koplugin/_meta.lua @@ -0,0 +1,6 @@ +local _ = require("gettext") +return { + name = "opds", + fullname = _("OPDS"), + description = _([[OPDS allows you to download books from online catalogs.]]), +} diff --git a/plugins/opds.koplugin/main.lua b/plugins/opds.koplugin/main.lua new file mode 100644 index 000000000..27144800c --- /dev/null +++ b/plugins/opds.koplugin/main.lua @@ -0,0 +1,47 @@ +local Dispatcher = require("dispatcher") +local UIManager = require("ui/uimanager") +local WidgetContainer = require("ui/widget/container/widgetcontainer") +local _ = require("gettext") + +local OPDS = WidgetContainer:new{ + name = "opds", + is_doc_only = false, +} + +function OPDS:onDispatcherRegisterActions() + Dispatcher:registerAction("opds_show_catalog", + {category="none", event="ShowOPDSCatalog", title=_("OPDS Catalog"), filemanager=true,} + ) +end + +function OPDS:init() + self:onDispatcherRegisterActions() + self.ui.menu:registerToMainMenu(self) +end + +function OPDS:showCatalog() + local OPDSCatalog = require("opdscatalog") + local filemanagerRefresh = function() self.ui:onRefresh() end + function OPDSCatalog:onClose() + filemanagerRefresh() + UIManager:close(self) + end + OPDSCatalog:showCatalog() +end + +function OPDS:onShowOPDSCatalog() + self:showCatalog() + return true +end + +function OPDS:addToMainMenu(menu_items) + if not self.ui.view then + menu_items.opds = { + text = _("OPDS catalog"), + sorting_hint = "search", + callback = function() self:showCatalog() end + } + end +end + +return OPDS diff --git a/frontend/ui/widget/opdsbrowser.lua b/plugins/opds.koplugin/opdsbrowser.lua similarity index 99% rename from frontend/ui/widget/opdsbrowser.lua rename to plugins/opds.koplugin/opdsbrowser.lua index ad4476ea7..f03d220a2 100644 --- a/frontend/ui/widget/opdsbrowser.lua +++ b/plugins/opds.koplugin/opdsbrowser.lua @@ -10,7 +10,7 @@ local Menu = require("ui/widget/menu") local MultiInputDialog = require("ui/widget/multiinputdialog") local InputDialog = require("ui/widget/inputdialog") local NetworkMgr = require("ui/network/manager") -local OPDSParser = require("ui/opdsparser") +local OPDSParser = require("opdsparser") local Screen = require("device").screen local UIManager = require("ui/uimanager") local http = require('socket.http') diff --git a/frontend/apps/opdscatalog/opdscatalog.lua b/plugins/opds.koplugin/opdscatalog.lua similarity index 97% rename from frontend/apps/opdscatalog/opdscatalog.lua rename to plugins/opds.koplugin/opdscatalog.lua index 788db49d6..b2f4d1dfc 100644 --- a/frontend/apps/opdscatalog/opdscatalog.lua +++ b/plugins/opds.koplugin/opdscatalog.lua @@ -3,7 +3,7 @@ local Blitbuffer = require("ffi/blitbuffer") local ConfirmBox = require("ui/widget/confirmbox") local FrameContainer = require("ui/widget/container/framecontainer") local InputContainer = require("ui/widget/container/inputcontainer") -local OPDSBrowser = require("ui/widget/opdsbrowser") +local OPDSBrowser = require("opdsbrowser") local ReaderUI = require("apps/reader/readerui") local UIManager = require("ui/uimanager") local logger = require("logger") diff --git a/frontend/ui/opdsparser.lua b/plugins/opds.koplugin/opdsparser.lua similarity index 100% rename from frontend/ui/opdsparser.lua rename to plugins/opds.koplugin/opdsparser.lua diff --git a/spec/unit/opds_spec.lua b/spec/unit/opds_spec.lua index 2405dd0d6..10927e8da 100644 --- a/spec/unit/opds_spec.lua +++ b/spec/unit/opds_spec.lua @@ -228,11 +228,18 @@ local facet_sample = [[ describe("OPDS module #nocov", function() local OPDSParser, OPDSBrowser + local orig_path setup(function() + orig_path = package.path + package.path = "plugins/opds.koplugin/?.lua;" .. package.path require("commonrequire") - OPDSParser = require("ui/opdsparser") - OPDSBrowser = require("ui/widget/opdsbrowser") + OPDSParser = require("opdsparser") + OPDSBrowser = require("opdsbrowser") + end) + + teardown(function() + package.path = orig_path end) describe("OPDS parser module", function()