mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Reader: re-enable File search, Folder shortcuts (#11028)
This commit is contained in:
@@ -30,7 +30,6 @@ function FileSearcher:init()
|
||||
end
|
||||
|
||||
function FileSearcher:onShowFileSearch(search_string)
|
||||
if not self.ui.file_chooser then return end -- FM only
|
||||
local search_dialog
|
||||
local check_button_case, check_button_subfolders, check_button_metadata
|
||||
search_dialog = InputDialog:new{
|
||||
@@ -57,13 +56,13 @@ function FileSearcher:onShowFileSearch(search_string)
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Current folder"),
|
||||
text = self.ui.file_chooser and _("Current folder") or _("Book folder"),
|
||||
is_enter_default = true,
|
||||
callback = function()
|
||||
self.search_value = search_dialog:getInputText()
|
||||
if self.search_value == "" then return end
|
||||
UIManager:close(search_dialog)
|
||||
self.path = self.ui.file_chooser.path or self.ui:getLastDirFile()
|
||||
self.path = self.ui.file_chooser and self.ui.file_chooser.path or self.ui:getLastDirFile()
|
||||
self:doSearch()
|
||||
end,
|
||||
},
|
||||
@@ -104,8 +103,14 @@ function FileSearcher:onShowFileSearch(search_string)
|
||||
end
|
||||
|
||||
function FileSearcher:doSearch()
|
||||
local results
|
||||
local dirs, files = self:getList()
|
||||
local results = self.ui.file_chooser:genItemTable(dirs, files)
|
||||
-- If we have a FileChooser instance, use it, to be able to make use of its natsort cache
|
||||
if self.ui.file_chooser then
|
||||
results = self.ui.file_chooser:genItemTable(dirs, files)
|
||||
else
|
||||
results = FileChooser:genItemTable(dirs, files)
|
||||
end
|
||||
if #results > 0 then
|
||||
self:showSearchResults(results)
|
||||
else
|
||||
@@ -239,18 +244,21 @@ function FileSearcher:showSearchResults(results)
|
||||
dimen = Screen:getSize(),
|
||||
}
|
||||
self.search_menu = Menu:new{
|
||||
ui = self.ui,
|
||||
covers_fullscreen = true, -- hint for UIManager:_repaint()
|
||||
is_borderless = true,
|
||||
is_popout = false,
|
||||
show_parent = menu_container,
|
||||
onMenuSelect = self.onMenuSelect,
|
||||
onMenuHold = self.onMenuHold,
|
||||
handle_hold_on_hold_release = true,
|
||||
_manager = self,
|
||||
}
|
||||
table.insert(menu_container, self.search_menu)
|
||||
self.search_menu.close_callback = function()
|
||||
UIManager:close(menu_container)
|
||||
self.ui.file_chooser:refreshPath()
|
||||
if self.ui.file_chooser then
|
||||
self.ui.file_chooser:refreshPath()
|
||||
end
|
||||
end
|
||||
self.search_menu:switchItemTable(T(_("Search results (%1)"), #results), results)
|
||||
UIManager:show(menu_container)
|
||||
@@ -272,18 +280,21 @@ function FileSearcher:onMenuSelect(item)
|
||||
end
|
||||
local buttons = {}
|
||||
if item.is_file then
|
||||
local is_currently_opened = self.ui.document and self.ui.document.file == file
|
||||
has_provider = DocumentRegistry:hasProvider(file)
|
||||
if has_provider or DocSettings:hasSidecarFile(file) then
|
||||
table.insert(buttons, filemanagerutil.genStatusButtonsRow(file, close_dialog_callback))
|
||||
local doc_settings_or_file = is_currently_opened and self.ui.doc_settings or file
|
||||
table.insert(buttons, filemanagerutil.genStatusButtonsRow(doc_settings_or_file, close_dialog_callback))
|
||||
table.insert(buttons, {}) -- separator
|
||||
table.insert(buttons, {
|
||||
filemanagerutil.genResetSettingsButton(file, close_dialog_callback),
|
||||
filemanagerutil.genResetSettingsButton(file, close_dialog_callback, is_currently_opened),
|
||||
filemanagerutil.genAddRemoveFavoritesButton(file, close_dialog_callback),
|
||||
})
|
||||
end
|
||||
table.insert(buttons, {
|
||||
{
|
||||
text = _("Delete"),
|
||||
enabled = not is_currently_opened,
|
||||
callback = function()
|
||||
local function post_delete_callback()
|
||||
UIManager:close(dialog)
|
||||
@@ -295,7 +306,8 @@ function FileSearcher:onMenuSelect(item)
|
||||
self:switchItemTable(T(_("Search results (%1)"), #self.item_table), self.item_table)
|
||||
end
|
||||
end
|
||||
self._manager.ui:showDeleteFileDialog(file, post_delete_callback)
|
||||
local FileManager = require("apps/filemanager/filemanager")
|
||||
FileManager:showDeleteFileDialog(file, post_delete_callback)
|
||||
end,
|
||||
},
|
||||
filemanagerutil.genBookInformationButton(file, close_dialog_callback),
|
||||
@@ -329,8 +341,13 @@ function FileSearcher:onMenuHold(item)
|
||||
end
|
||||
else
|
||||
self.close_callback()
|
||||
local pathname = util.splitFilePathName(item.path)
|
||||
self._manager.ui.file_chooser:changeToPath(pathname, item.path)
|
||||
if self.ui.file_chooser then
|
||||
local pathname = util.splitFilePathName(item.path)
|
||||
self.ui.file_chooser:changeToPath(pathname, item.path)
|
||||
else -- called from Reader
|
||||
self.ui:onClose()
|
||||
self.ui:showFileManager(item.path)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -1021,13 +1021,12 @@ end
|
||||
function Dispatcher:isActionEnabled(action)
|
||||
local disabled = true
|
||||
if action and (action.condition == nil or action.condition == true) then
|
||||
local for_fm_only = action["filemanager"] and not action["reader"]
|
||||
local ui = require("apps/reader/readerui").instance
|
||||
local context = ui and (ui.paging and "paging" or "rolling")
|
||||
if context == "paging" then
|
||||
disabled = action["rolling"] or for_fm_only
|
||||
disabled = action["rolling"]
|
||||
elseif context == "rolling" then
|
||||
disabled = action["paging"] or for_fm_only
|
||||
disabled = action["paging"]
|
||||
else -- FM
|
||||
disabled = (action["reader"] or action["rolling"] or action["paging"]) and not action["filemanager"]
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user