From ebb290f0ba89472403bb313c3894a676b9c75e6c Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Sat, 21 Jan 2017 20:00:02 -0500 Subject: [PATCH 1/2] OPDSCatalog: Normalize default and user-added catalogs This patch makes the OPDS Browser treat the default catalogs (Project Gutenberg, Feedbooks, etc.) the same as a user-added catalog. This makes them removable and editable if the user so chooses. --- frontend/apps/opdscatalog/opdscatalog.lua | 24 ------------------ frontend/ui/widget/opdsbrowser.lua | 31 +++++++++++++++++------ 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/frontend/apps/opdscatalog/opdscatalog.lua b/frontend/apps/opdscatalog/opdscatalog.lua index 403a8e935..38bf21921 100644 --- a/frontend/apps/opdscatalog/opdscatalog.lua +++ b/frontend/apps/opdscatalog/opdscatalog.lua @@ -9,37 +9,13 @@ local Blitbuffer = require("ffi/blitbuffer") local ReaderUI = require("apps/reader/readerui") local ConfirmBox = require("ui/widget/confirmbox") local T = require("ffi/util").template - local OPDSCatalog = InputContainer:extend{ title = _("OPDS Catalog"), - opds_servers = { - { - title = "Project Gutenberg", - subtitle = "Free ebooks since 1971.", - url = "http://m.gutenberg.org/ebooks.opds/?format=opds", - }, - { - title = "Feedbooks", - subtitle = "", - url = "http://www.feedbooks.com/publicdomain/catalog.atom", - }, - { - title = "ManyBooks", - subtitle = "Online Catalog for Manybooks.net", - url = "http://manybooks.net/opds/index.php", - }, - { - title = "Internet Archive", - subtitle = "Internet Archive Catalog", - url = "http://bookserver.archive.org/catalog/", - }, - }, onExit = function() end, } function OPDSCatalog:init() local opds_browser = OPDSBrowser:new{ - opds_servers = self.opds_servers, title = self.title, show_parent = self, is_popout = false, diff --git a/frontend/ui/widget/opdsbrowser.lua b/frontend/ui/widget/opdsbrowser.lua index ac39e7b85..7869df6ba 100644 --- a/frontend/ui/widget/opdsbrowser.lua +++ b/frontend/ui/widget/opdsbrowser.lua @@ -58,7 +58,29 @@ local OPDSBrowser = Menu:extend{ } function OPDSBrowser:init() - self.item_table = self:genItemTableFromRoot(self.opds_servers) + local servers = G_reader_settings:readSetting("opds_servers") + if not servers then -- If there are no saved servers, add some defaults + servers = { + { + title = "Project Gutenberg", + url = "http://m.gutenberg.org/ebooks.opds/?format=opds", + }, + { + title = "Feedbooks", + url = "http://www.feedbooks.com/publicdomain/catalog.atom", + }, + { + title = "ManyBooks", + url = "http://manybooks.net/opds/index.php", + }, + { + title = "Internet Archive", + url = "http://bookserver.archive.org/catalog/", + }, + } + G_reader_settings:saveSetting("opds_servers", servers) + end + self.item_table = self:genItemTableFromRoot() Menu.init(self) -- call parent's init() end @@ -168,13 +190,6 @@ end function OPDSBrowser:genItemTableFromRoot() local item_table = {} - for _, server in ipairs(self.opds_servers) do - table.insert(item_table, { - text = server.title, - content = server.subtitle, - url = server.url, - }) - end local added_servers = G_reader_settings:readSetting("opds_servers") or {} for _, server in ipairs(added_servers) do table.insert(item_table, { From 85585a0973a6a5d5d1bd56018d311b417d50c2de Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Sat, 21 Jan 2017 20:41:56 -0500 Subject: [PATCH 2/2] Fixed bug where only calibre OPDS catalogs would prompt to enable Wifi. Tested on Kindle PW3. The error message my device threw was different from what was coded in OPDSBrowser.lua in getCatalog(). Perhaps we should test other devices and see if there are other error messages thrown as well. --- frontend/ui/widget/opdsbrowser.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ui/widget/opdsbrowser.lua b/frontend/ui/widget/opdsbrowser.lua index 7869df6ba..eb6526300 100644 --- a/frontend/ui/widget/opdsbrowser.lua +++ b/frontend/ui/widget/opdsbrowser.lua @@ -353,7 +353,7 @@ end function OPDSBrowser:getCatalog(feed_url) local ok, catalog = pcall(self.parseFeed, self, feed_url) -- prompt users to turn on Wifi if network is unreachable - if not ok and catalog and catalog:find("Network is unreachable") then + if not ok and catalog and (catalog:find("Network is unreachable") or catalog:find("host or service not provided")) then NetworkMgr:promptWifiOn() return elseif not ok and catalog then