mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
ReaderSearch: fix wait button position, code cleanup (#7973)
This commit is contained in:
@@ -12,6 +12,7 @@ local UIManager = require("ui/uimanager")
|
||||
local VerticalGroup = require("ui/widget/verticalgroup")
|
||||
local logger = require("logger")
|
||||
local _ = require("gettext")
|
||||
local T = require("ffi/util").template
|
||||
|
||||
local ReaderSearch = InputContainer:new{
|
||||
direction = 0, -- 0 for search forward, 1 for search backward
|
||||
@@ -78,6 +79,28 @@ function ReaderSearch:addToMainMenu(menu_items)
|
||||
}
|
||||
end
|
||||
|
||||
-- if reverse ~= 0 search backwards
|
||||
function ReaderSearch:searchCallback(reverse)
|
||||
if self.input_dialog:getInputText() == "" then return end
|
||||
self.last_search_text = self.input_dialog:getInputText()
|
||||
self.use_regex = self.check_button_regex.checked
|
||||
self.case_insensitive = not self.check_button_case.checked
|
||||
local regex_error = self.use_regex and self.ui.document:checkRegex(self.input_dialog:getInputText())
|
||||
if self.use_regex and regex_error ~= 0 then
|
||||
logger.dbg("ReaderSearch: regex error", regex_error, SRELL_ERROR_CODES[regex_error])
|
||||
local error_message
|
||||
if SRELL_ERROR_CODES[regex_error] then
|
||||
error_message = T(_("Invalid regular expression:\n%1"), SRELL_ERROR_CODES[regex_error])
|
||||
else
|
||||
error_message = _("Invalid regular expression.")
|
||||
end
|
||||
UIManager:show(InfoMessage:new{ text = error_message })
|
||||
else
|
||||
UIManager:close(self.input_dialog)
|
||||
self:onShowSearchDialog(self.input_dialog:getInputText(), reverse, self.use_regex, self.case_insensitive)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderSearch:onShowFulltextSearchInput()
|
||||
local backward_text = "◁"
|
||||
local forward_text = "▷"
|
||||
@@ -87,8 +110,6 @@ function ReaderSearch:onShowFulltextSearchInput()
|
||||
self.input_dialog = InputDialog:new{
|
||||
title = _("Enter text to search for"),
|
||||
input = self.last_search_text,
|
||||
use_regex_checked = self.use_regex,
|
||||
case_insensitive_checked = not self.case_insensitive,
|
||||
buttons = {
|
||||
{
|
||||
{
|
||||
@@ -100,48 +121,14 @@ function ReaderSearch:onShowFulltextSearchInput()
|
||||
{
|
||||
text = backward_text,
|
||||
callback = function()
|
||||
if self.input_dialog:getInputText() == "" then return end
|
||||
self.last_search_text = self.input_dialog:getInputText()
|
||||
self.use_regex = self.check_button_regex.checked
|
||||
self.case_insensitive = not self.check_button_case.checked
|
||||
local regex_error = self.use_regex and self.ui.document:checkRegex(self.input_dialog:getInputText())
|
||||
if self.use_regex and regex_error ~= 0 then
|
||||
logger.dbg("ReaderSearch: regex error", regex_error, SRELL_ERROR_CODES[regex_error])
|
||||
local error_message = _("Invalid regular expression")
|
||||
if SRELL_ERROR_CODES[regex_error] then
|
||||
error_message = error_message .. ":\n" .. SRELL_ERROR_CODES[regex_error]
|
||||
else
|
||||
error_message = error_message .. "."
|
||||
end
|
||||
UIManager:show(InfoMessage:new{ text = error_message })
|
||||
else
|
||||
UIManager:close(self.input_dialog)
|
||||
self:onShowSearchDialog(self.input_dialog:getInputText(), 1, self.use_regex, self.case_insensitive)
|
||||
end
|
||||
self:searchCallback(1)
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = forward_text,
|
||||
is_enter_default = true,
|
||||
callback = function()
|
||||
if self.input_dialog:getInputText() == "" then return end
|
||||
self.last_search_text = self.input_dialog:getInputText()
|
||||
self.use_regex = self.check_button_regex.checked
|
||||
self.case_insensitive = not self.check_button_case.checked
|
||||
local regex_error = self.use_regex and self.ui.document:checkRegex(self.input_dialog:getInputText())
|
||||
if self.use_regex and regex_error ~= 0 then
|
||||
logger.dbg("ReaderSearch: regex error", regex_error, SRELL_ERROR_CODES[regex_error])
|
||||
local error_message = _("Invalid regular expression")
|
||||
if SRELL_ERROR_CODES[regex_error] then
|
||||
error_message = error_message .. ":\n" .. SRELL_ERROR_CODES[regex_error]
|
||||
else
|
||||
error_message = error_message .. "."
|
||||
end
|
||||
UIManager:show(InfoMessage:new{ text = error_message })
|
||||
else
|
||||
UIManager:close(self.input_dialog)
|
||||
self:onShowSearchDialog(self.input_dialog:getInputText(), 0, self.use_regex, self.case_insensitive)
|
||||
end
|
||||
self:searchCallback(0)
|
||||
end,
|
||||
},
|
||||
},
|
||||
@@ -311,6 +298,7 @@ function ReaderSearch:onShowSearchDialog(text, direction, regex, case_insensitiv
|
||||
if regex and isSlowRegex(pattern) then
|
||||
return function()
|
||||
self.wait_button.alpha = 0.75
|
||||
self.wait_button.movable:setMovedOffset(self.search_dialog.movable:getMovedOffset())
|
||||
UIManager:show(self.wait_button)
|
||||
UIManager:tickAfterNext(function()
|
||||
do_search(func, pattern, param, regex, case_insensitive)()
|
||||
@@ -355,6 +343,7 @@ function ReaderSearch:onShowSearchDialog(text, direction, regex, case_insensitiv
|
||||
}
|
||||
if regex and isSlowRegex(text) then
|
||||
self.wait_button.alpha = nil
|
||||
-- initial position: center of the screen
|
||||
UIManager:show(self.wait_button)
|
||||
UIManager:tickAfterNext(function()
|
||||
do_search(self.searchFromCurrent, text, direction, regex, case_insensitive)()
|
||||
|
||||
Reference in New Issue
Block a user