From 2ba480b41d5ca5511fae625e8cf4e5217265354a Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Sun, 3 Mar 2019 12:43:09 +0100 Subject: [PATCH] [UX] Gesture manager: add action - file search (#4720) Also makes it callable from the reader. Fixes #4717. --- frontend/apps/filemanager/filemanager.lua | 2 ++ .../filemanager/filemanagerfilesearcher.lua | 2 +- frontend/apps/filemanager/filemanagermenu.lua | 4 ++-- frontend/apps/reader/modules/readergesture.lua | 11 ++++++++++- frontend/apps/reader/readerui.lua | 17 +++++++++++++++-- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index cf04ce733..185cbcd55 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -10,6 +10,7 @@ local Event = require("ui/event") local FileChooser = require("ui/widget/filechooser") local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo") local FileManagerConverter = require("apps/filemanager/filemanagerconverter") +local FileManagerFileSearcher = require("apps/filemanager/filemanagerfilesearcher") local FileManagerHistory = require("apps/filemanager/filemanagerhistory") local FileManagerMenu = require("apps/filemanager/filemanagermenu") local FileManagerShortcuts = require("apps/filemanager/filemanagershortcuts") @@ -343,6 +344,7 @@ function FileManager:init() table.insert(self, FileManagerHistory:new{ ui = self, }) + table.insert(self, FileManagerFileSearcher:new{ ui = self }) table.insert(self, ReaderDictionary:new{ ui = self }) table.insert(self, ReaderWikipedia:new{ ui = self }) table.insert(self, ReaderDeviceStatus:new{ ui = self }) diff --git a/frontend/apps/filemanager/filemanagerfilesearcher.lua b/frontend/apps/filemanager/filemanagerfilesearcher.lua index 82e942fef..d4fb94230 100644 --- a/frontend/apps/filemanager/filemanagerfilesearcher.lua +++ b/frontend/apps/filemanager/filemanagerfilesearcher.lua @@ -102,7 +102,7 @@ function FileSearcher:close() end end -function FileSearcher:showSearch(search_path) +function FileSearcher:onShowFileSearch(search_path) local dummy = self.search_value local enabled_search_home_dir = true if not G_reader_settings:readSetting("home_dir") then diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index de5db89ab..97115e8ac 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -2,7 +2,7 @@ local CenterContainer = require("ui/widget/container/centercontainer") local CloudStorage = require("apps/cloudstorage/cloudstorage") local ConfirmBox = require("ui/widget/confirmbox") local Device = require("device") -local FileSearcher = require("apps/filemanager/filemanagerfilesearcher") +local Event = require("ui/event") local InputContainer = require("ui/widget/container/inputcontainer") local PluginLoader = require("pluginloader") local Search = require("apps/filemanager/filemanagersearch") @@ -287,7 +287,7 @@ function FileManagerMenu:setUpdateItemTable() self.menu_items.find_file = { text = _("Find a file"), callback = function() - FileSearcher:showSearch(self.ui.file_chooser.path) + self.ui:handleEvent(Event:new("ShowFileSearch", self.ui.file_chooser.path)) end } diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index b5b5221e7..50d5522a9 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -44,6 +44,7 @@ local action_strings = { dictionary_lookup = _("Dictionary lookup"), wikipedia_lookup = _("Wikipedia lookup"), fulltext_search = _("Fulltext search"), + file_search = _("File search"), full_refresh = _("Full screen refresh"), night_mode = _("Night mode"), @@ -285,7 +286,8 @@ function ReaderGesture:buildMenu(ges, default) {"dictionary_lookup", true}, {"wikipedia_lookup", true, true}, - {"fulltext_search", not self.is_docless, true}, + {"fulltext_search", not self.is_docless}, + {"file_search", true, true}, {"full_refresh", true}, {"night_mode", true}, @@ -559,6 +561,13 @@ function ReaderGesture:gestureAction(action, ges) elseif action == "filemanager" then self.ui:onClose() self.ui:showFileManager() + elseif action == "file_search" then + if self.ges_mode == "gesture_fm" then + self.ui:handleEvent(Event:new("ShowFileSearch", self.ui.file_chooser.path)) + else + local last_dir = self.ui:getLastDirFile() + self.ui:handleEvent(Event:new("ShowFileSearch", last_dir)) + end elseif action == "folder_up" then self.ui.file_chooser:changeToPath(string.format("%s/..", self.ui.file_chooser.path)) elseif action == "open_previous_document" then diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 9377662ca..d1d8893c1 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -12,6 +12,7 @@ local DocumentRegistry = require("document/documentregistry") local Event = require("ui/event") local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo") local FileManagerHistory = require("apps/filemanager/filemanagerhistory") +local FileManagerFileSearcher = require("apps/filemanager/filemanagerfilesearcher") local InfoMessage = require("ui/widget/infomessage") local InputContainer = require("ui/widget/container/inputcontainer") local InputDialog = require("ui/widget/inputdialog") @@ -330,6 +331,11 @@ function ReaderUI:init() document = self.document, view = self.view, }) + -- file searcher + self:registerModule("filesearcher", FileManagerFileSearcher:new{ + dialog = self.dialog, + ui = self, + }) -- history view self:registerModule("history", FileManagerHistory:new{ dialog = self.dialog, @@ -390,8 +396,7 @@ function ReaderUI:init() self.postReaderCallback = nil end -function ReaderUI:showFileManager() - local FileManager = require("apps/filemanager/filemanager") +function ReaderUI:getLastDirFile() local QuickStart = require("ui/quickstart") local last_dir local last_file = G_reader_settings:readSetting("lastfile") @@ -399,6 +404,14 @@ function ReaderUI:showFileManager() if last_file and last_file ~= QuickStart.quickstart_filename then last_dir = last_file:match("(.*)/") end + return last_dir, last_file +end + +function ReaderUI:showFileManager() + local FileManager = require("apps/filemanager/filemanager") + + local last_dir, last_file = self:getLastDirFile() + if FileManager.instance then FileManager.instance:reinit(last_dir, last_file) else