Reorder menu: push/pull at top, remove Sync now, auto-position in tools menu

This commit is contained in:
2026-06-01 21:34:19 -04:00
parent 192a29211a
commit aaf4741f7e
+94 -26
View File
@@ -16,6 +16,7 @@ local logger = require("logger")
local sha2 = require("ffi/sha2") local sha2 = require("ffi/sha2")
local time = require("ui/time") local time = require("ui/time")
local util = require("util") local util = require("util")
local lfs = require("libs/libkoreader-lfs")
local T = require("ffi/util").template local T = require("ffi/util").template
local _ = require("gettext") local _ = require("gettext")
@@ -94,6 +95,7 @@ function Bookhoard:init()
end end
self.ui.menu:registerToMainMenu(self) self.ui.menu:registerToMainMenu(self)
self:setupMenuOrder()
end end
function Bookhoard:onReaderReady() function Bookhoard:onReaderReady()
@@ -173,6 +175,19 @@ function Bookhoard:buildMainMenu()
}) })
if self:isConfigured() then if self:isConfigured() then
table.insert(items, {
text = _("Push progress from this device"),
callback = function()
self:updateProgress(true, true)
end,
})
table.insert(items, {
text = _("Pull progress from server"),
callback = function()
self:getProgress(true, true)
end,
separator = true,
})
table.insert(items, { table.insert(items, {
text = _("Device info"), text = _("Device info"),
keep_menu_open = true, keep_menu_open = true,
@@ -403,32 +418,6 @@ function Bookhoard:buildMainMenu()
separator = true, separator = true,
}) })
table.insert(items, {
text = _("Sync now"),
enabled_func = function() return self:isConfigured() end,
callback = function()
self:updateProgress(true, true)
self:getProgress(true, true)
end,
})
table.insert(items, {
text = _("Push progress from this device"),
enabled_func = function() return self:isConfigured() end,
callback = function()
self:updateProgress(true, true)
end,
})
table.insert(items, {
text = _("Pull progress from server"),
enabled_func = function() return self:isConfigured() end,
callback = function()
self:getProgress(true, true)
end,
separator = true,
})
table.insert(items, { table.insert(items, {
text = _("Setup OPDS catalog"), text = _("Setup OPDS catalog"),
keep_menu_open = true, keep_menu_open = true,
@@ -479,6 +468,85 @@ function Bookhoard:toggleAutoSync()
end end
end end
function Bookhoard:setupMenuOrder()
local settings_dir = DataStorage:getSettingsDir()
self:patchMenuOrderFile(settings_dir .. "/reader_menu_order.lua")
self:patchMenuOrderFile(settings_dir .. "/filemanager_menu_order.lua")
end
function Bookhoard:patchMenuOrderFile(filepath)
local default_tools = {
"read_timer",
"calibre",
"bookhoard",
"exporter",
"statistics",
"progress_sync",
"move_to_archive",
"wallabag",
"news_downloader",
"text_editor",
"profiles",
"qrclipboard",
"----------------------------",
"more_tools",
}
local attr = lfs.attributes(filepath)
if not attr then
local f = io.open(filepath, "w")
if not f then return end
f:write("return {\n tools = {\n")
for _, id in ipairs(default_tools) do
f:write(' "' .. id .. '",\n')
end
f:write(" },\n}\n")
f:close()
logger.dbg("Bookhoard: created menu order file", filepath)
return
end
local existing = dofile(filepath)
if not existing or type(existing) ~= "table" then return end
local tools = existing.tools
if not tools or type(tools) ~= "table" then return end
for _, id in ipairs(tools) do
if id == "bookhoard" then return end
end
local insert_pos = nil
for i, id in ipairs(tools) do
if id == "calibre" then
insert_pos = i + 1
break
end
end
if not insert_pos then
insert_pos = 2
end
table.insert(tools, insert_pos, "bookhoard")
existing.tools = tools
local f = io.open(filepath, "w")
if not f then return end
f:write("return {\n")
for key, val in pairs(existing) do
if type(val) == "table" then
f:write(" " .. key .. " = {\n")
for _, id in ipairs(val) do
f:write(' "' .. id .. '",\n')
end
f:write(" },\n")
end
end
f:write("}\n")
f:close()
logger.dbg("Bookhoard: patched menu order file", filepath)
end
function Bookhoard:startRegistration() function Bookhoard:startRegistration()
if not self.settings.server_url or self.settings.server_url == "" then if not self.settings.server_url or self.settings.server_url == "" then
UIManager:show(InfoMessage:new{ UIManager:show(InfoMessage:new{