File browser: Settings submenu reordering (#8000)

pull/8019/head
hius07 3 years ago committed by GitHub
parent d9cc3af220
commit 2ab31a9a36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -136,12 +136,6 @@ function FileManagerMenu:onOpenLastDoc()
end end
function FileManagerMenu:setUpdateItemTable() function FileManagerMenu:setUpdateItemTable()
for _, widget in pairs(self.registered_widgets) do
local ok, err = pcall(widget.addToMainMenu, widget, self.menu_items)
if not ok then
logger.err("failed to register widget", widget.name, err)
end
end
-- setting tab -- setting tab
self.menu_items.filebrowser_settings = { self.menu_items.filebrowser_settings = {
@ -158,14 +152,16 @@ function FileManagerMenu:setUpdateItemTable()
callback = function() self.ui:toggleUnsupportedFiles() end, callback = function() self.ui:toggleUnsupportedFiles() end,
separator = true, separator = true,
}, },
{
text = _("Classic mode settings"),
sub_item_table = {
{ {
text = _("Items per page"), text = _("Items per page"),
help_text = _([[This sets the number of items per page in: help_text = _([[This sets the number of items per page in:
- File browser, history and favorites in 'classic' display mode - File browser, history and favorites in 'classic' display mode
- Search results and folder shortcuts - Search results and folder shortcuts
- File and directory selection - File and folder selection
- Calibre and OPDS browsers/search results]]), - Calibre and OPDS browsers/search results]]),
keep_menu_open = true,
callback = function() callback = function()
local SpinWidget = require("ui/widget/spinwidget") local SpinWidget = require("ui/widget/spinwidget")
local Menu = require("ui/widget/menu") local Menu = require("ui/widget/menu")
@ -189,7 +185,6 @@ function FileManagerMenu:setUpdateItemTable()
}, },
{ {
text = _("Item font size"), text = _("Item font size"),
keep_menu_open = true,
callback = function() callback = function()
local SpinWidget = require("ui/widget/spinwidget") local SpinWidget = require("ui/widget/spinwidget")
local Menu = require("ui/widget/menu") local Menu = require("ui/widget/menu")
@ -221,7 +216,6 @@ function FileManagerMenu:setUpdateItemTable()
}, },
{ {
text = _("Shrink item font size to fit more text"), text = _("Shrink item font size to fit more text"),
keep_menu_open = true,
checked_func = function() checked_func = function()
return G_reader_settings:isTrue("items_multilines_show_more_text") return G_reader_settings:isTrue("items_multilines_show_more_text")
end, end,
@ -229,49 +223,104 @@ function FileManagerMenu:setUpdateItemTable()
G_reader_settings:flipNilOrFalse("items_multilines_show_more_text") G_reader_settings:flipNilOrFalse("items_multilines_show_more_text")
self.ui:onRefresh() self.ui:onRefresh()
end, end,
separator = true,
}, },
{ {
text_func = function() text = _("Show opened files in bold"),
local current_state = _("Show new files in bold") checked_func = function()
return G_reader_settings:readSetting("show_file_in_bold") == "opened"
end,
callback = function()
if G_reader_settings:readSetting("show_file_in_bold") == "opened" then if G_reader_settings:readSetting("show_file_in_bold") == "opened" then
current_state = _("Show opened files in bold") G_reader_settings:saveSetting("show_file_in_bold", false)
elseif G_reader_settings:isFalse("show_file_in_bold") then else
current_state = _("Show files in bold") -- with checkmark unchecked G_reader_settings:saveSetting("show_file_in_bold", "opened")
end end
-- Inform that this settings applies only to classic file chooser self.ui:onRefresh()
current_state = T(_("(Classic file browser) %1"), current_state)
return current_state
end, end,
checked_func = function() return not G_reader_settings:isFalse("show_file_in_bold") end, },
sub_item_table = {
{ {
text = _("Don't show files in bold"), text = _("Show new (not yet opened) files in bold"),
checked_func = function() return G_reader_settings:isFalse("show_file_in_bold") end, checked_func = function()
return G_reader_settings:hasNot("show_file_in_bold")
end,
callback = function() callback = function()
if G_reader_settings:hasNot("show_file_in_bold") then
G_reader_settings:saveSetting("show_file_in_bold", false) G_reader_settings:saveSetting("show_file_in_bold", false)
else
G_reader_settings:delSetting("show_file_in_bold")
end
self.ui:onRefresh() self.ui:onRefresh()
end, end,
}, },
},
},
{ {
text = _("Show opened files in bold"), text = _("History settings"),
checked_func = function() return G_reader_settings:readSetting("show_file_in_bold") == "opened" end, sub_item_table = {
{
text = _("Clear history of deleted files"),
callback = function() callback = function()
G_reader_settings:saveSetting("show_file_in_bold", "opened") UIManager:show(ConfirmBox:new{
self.ui:onRefresh() text = _("Clear history of deleted files?"),
ok_text = _("Clear"),
ok_callback = function()
require("readhistory"):clearMissing()
end,
})
end, end,
}, },
{ {
text = _("Show new (not yet opened) files in bold"), text = _("Auto-remove deleted or purged items from history"),
checked_func = function() checked_func = function()
return not G_reader_settings:isFalse("show_file_in_bold") and G_reader_settings:readSetting("show_file_in_bold") ~= "opened" return G_reader_settings:isTrue("autoremove_deleted_items_from_history")
end, end,
callback = function() callback = function()
G_reader_settings:delSetting("show_file_in_bold") G_reader_settings:flipNilOrFalse("autoremove_deleted_items_from_history")
self.ui:onRefresh()
end, end,
separator = true,
}, },
{
text = _("Show filename in Open last/previous menu items"),
checked_func = function()
return G_reader_settings:isTrue("open_last_menu_show_filename")
end,
callback = function()
G_reader_settings:flipNilOrFalse("open_last_menu_show_filename")
end,
}, },
separator = true, },
},
{
text = _("Home folder settings"),
sub_item_table = {
{
text = _("Set home folder"),
callback = function()
local text
local home_dir = G_reader_settings:readSetting("home_dir")
if home_dir then
text = T(_("Home folder is set to:\n%1"), home_dir)
else
text = _("Home folder is not set.")
home_dir = Device.home_dir
end
UIManager:show(ConfirmBox:new{
text = text .. "\nChoose new folder to set as home?",
ok_text = _("Choose folder"),
ok_callback = function()
local path_chooser = require("ui/widget/pathchooser"):new{
select_file = false,
show_files = false,
path = home_dir,
onConfirm = function(new_path)
G_reader_settings:saveSetting("home_dir", new_path)
end
}
UIManager:show(path_chooser)
end,
})
end,
}, },
{ {
text = _("Shorten home folder"), text = _("Shorten home folder"),
@ -294,14 +343,19 @@ To:
`Manga/Cells at Work`.]]), `Manga/Cells at Work`.]]),
}, },
{ {
text = _("Show filename in Open last/previous menu items"), text = _("Lock home folder"),
checked_func = function() return G_reader_settings:isTrue("open_last_menu_show_filename") end, enabled_func = function()
callback = function() G_reader_settings:flipNilOrFalse("open_last_menu_show_filename") end, return G_reader_settings:has("home_dir")
end,
checked_func = function()
return G_reader_settings:isTrue("lock_home_folder")
end,
callback = function()
G_reader_settings:flipNilOrFalse("lock_home_folder")
self.ui:onRefresh()
end,
},
}, },
{
text = _("Auto-remove deleted or purged items from history"),
checked_func = function() return G_reader_settings:isTrue("autoremove_deleted_items_from_history") end,
callback = function() G_reader_settings:flipNilOrFalse("autoremove_deleted_items_from_history") end,
separator = true, separator = true,
}, },
{ {
@ -340,6 +394,14 @@ To:
}, },
} }
} }
for _, widget in pairs(self.registered_widgets) do
local ok, err = pcall(widget.addToMainMenu, widget, self.menu_items)
if not ok then
logger.err("failed to register widget", widget.name, err)
end
end
self.menu_items.sort_by = self.ui:getSortingMenuTable() self.menu_items.sort_by = self.ui:getSortingMenuTable()
self.menu_items.reverse_sorting = { self.menu_items.reverse_sorting = {
text = _("Reverse sorting"), text = _("Reverse sorting"),

@ -264,7 +264,10 @@ function FileChooser:genItemTableFromPath(path)
table.sort(dirs, sorting) table.sort(dirs, sorting)
table.sort(files, sorting) table.sort(files, sorting)
end end
if path ~= "/" then table.insert(dirs, 1, {name = ".."}) end if path ~= "/" and not (G_reader_settings:isTrue("lock_home_folder") and
path == G_reader_settings:readSetting("home_dir")) then
table.insert(dirs, 1, {name = ".."})
end
if self.show_current_dir_for_hold then table.insert(dirs, 1, {name = "."}) end if self.show_current_dir_for_hold then table.insert(dirs, 1, {name = "."}) end
local item_table = {} local item_table = {}
@ -394,7 +397,10 @@ function FileChooser:changeToPath(path, focused_path)
end end
function FileChooser:onFolderUp() function FileChooser:onFolderUp()
if not (G_reader_settings:isTrue("lock_home_folder") and
self.path == G_reader_settings:readSetting("home_dir")) then
self:changeToPath(string.format("%s/..", self.path), self.path) self:changeToPath(string.format("%s/..", self.path), self.path)
end
end end
function FileChooser:changePageToPath(path) function FileChooser:changePageToPath(path)

@ -178,7 +178,6 @@ function CoverBrowser:addToMainMenu(menu_items)
callback = function() callback = function()
self:setupHistoryDisplayMode("list_image_filename") self:setupHistoryDisplayMode("list_image_filename")
end, end,
separator = true,
}, },
}, },
}, },
@ -226,15 +225,45 @@ function CoverBrowser:addToMainMenu(menu_items)
callback = function() callback = function()
self:setupCollectionDisplayMode("list_image_filename") self:setupCollectionDisplayMode("list_image_filename")
end, end,
separator = true,
}, },
}, },
separator = true,
}, },
-- Misc settings },
{ }
-- add Mosaic / Detailed list mode settings to File browser Settings submenu
-- next to Classic mode settings
if menu_items.filebrowser_settings == nil then return end
table.insert (menu_items.filebrowser_settings.sub_item_table, 4, {
text = _("Mosaic and detailed list settings"), text = _("Mosaic and detailed list settings"),
separator = true,
sub_item_table = { sub_item_table = {
{
text = _("Items per page"),
help_text = _([[This sets the number of files and folders per page in display modes other than classic.]]),
-- Best to not "keep_menu_open = true", to see how this apply on the full view
callback = function()
local SpinWidget = require("ui/widget/spinwidget")
-- "files_per_page" should have been saved with an adequate value
-- the first time Detailed list was shown. Fallback to a start
-- value of 10 if it hasn't.
local curr_items = BookInfoManager:getSetting("files_per_page") or 10
local items = SpinWidget:new{
width = math.floor(Screen:getWidth() * 0.6),
value = curr_items,
value_min = 4,
value_max = 20,
default_value = 10,
keep_shown_on_apply = true,
title_text = _("Items per page"),
callback = function(spin)
BookInfoManager:saveSetting("files_per_page", spin.value)
self.ui:onRefresh()
end
}
UIManager:show(items)
end,
},
{ {
text = _("Display hints"), text = _("Display hints"),
sub_item_table = { sub_item_table = {
@ -321,31 +350,6 @@ function CoverBrowser:addToMainMenu(menu_items)
}, },
separator = true separator = true
}, },
{
text = _("(Detailed list) Files per page"),
help_text = _([[This sets the number of files and directories per page in non-'classic' display modes.]]),
-- Best to not "keep_menu_open = true", to see how this apply on the full view
callback = function()
local SpinWidget = require("ui/widget/spinwidget")
-- "files_per_page" should have been saved with an adequate value
-- the first time Detailed list was shown. Fallback to a start
-- value of 10 if it hasn't.
local curr_items = BookInfoManager:getSetting("files_per_page") or 10
local items = SpinWidget:new{
width = math.floor(Screen:getWidth() * 0.6),
value = curr_items,
value_min = 4,
value_max = 20,
keep_shown_on_apply = true,
title_text = _("Files per page"),
callback = function(spin)
BookInfoManager:saveSetting("files_per_page", spin.value)
self.ui:onRefresh()
end
}
UIManager:show(items)
end,
},
{ {
text = _("Show number of pages read instead of progress %"), text = _("Show number of pages read instead of progress %"),
checked_func = function() return BookInfoManager:getSetting("show_pages_read_as_progress") end, checked_func = function() return BookInfoManager:getSetting("show_pages_read_as_progress") end,
@ -369,9 +373,7 @@ function CoverBrowser:addToMainMenu(menu_items)
end end
self:refreshFileManagerInstance() self:refreshFileManagerInstance()
end, end,
separator = true separator = true,
},
},
}, },
{ {
text = _("Book info cache management"), text = _("Book info cache management"),
@ -447,7 +449,7 @@ function CoverBrowser:addToMainMenu(menu_items)
}, },
}, },
}, },
} })
end end
function CoverBrowser:refreshFileManagerInstance(cleanup, post_init) function CoverBrowser:refreshFileManagerInstance(cleanup, post_init)

Loading…
Cancel
Save