ReaderSearch: fix wait button position, code cleanup (#7973)

pull/7980/head
zwim 3 years ago committed by GitHub
parent 5947085ba4
commit 26cc3df5c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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)()

Loading…
Cancel
Save