From df9c2bcb7f9f1d3f60bfaad20996a2b029d5b584 Mon Sep 17 00:00:00 2001 From: hius07 <62179190+hius07@users.noreply.github.com> Date: Sun, 26 Mar 2023 21:11:19 +0300 Subject: [PATCH] History: fix book info buttons disable (#10244) --- .../apps/filemanager/filemanagerhistory.lua | 36 +++++-------------- frontend/apps/filemanager/filemanagerutil.lua | 36 +++++++++++++++++++ frontend/readhistory.lua | 17 ++------- 3 files changed, 47 insertions(+), 42 deletions(-) diff --git a/frontend/apps/filemanager/filemanagerhistory.lua b/frontend/apps/filemanager/filemanagerhistory.lua index 94605e38a..0c9e73b97 100644 --- a/frontend/apps/filemanager/filemanagerhistory.lua +++ b/frontend/apps/filemanager/filemanagerhistory.lua @@ -1,7 +1,6 @@ local BD = require("ui/bidi") local ButtonDialogTitle = require("ui/widget/buttondialogtitle") local ConfirmBox = require("ui/widget/confirmbox") -local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo") local Menu = require("ui/widget/menu") local UIManager = require("ui/uimanager") local WidgetContainer = require("ui/widget/container/widgetcontainer") @@ -78,6 +77,10 @@ function FileManagerHistory:onSetDimensions(dimen) self.dimen = dimen end +function FileManagerHistory:onMenuChoice(item) + require("apps/reader/readerui"):showReader(item.file) +end + function FileManagerHistory:onMenuHold(item) self.histfile_dialog = nil local function status_button_callback() @@ -122,33 +125,11 @@ function FileManagerHistory:onMenuHold(item) FileManager:showDeleteFileDialog(item.file, post_delete_callback) end, }, - { - text = _("Book information"), - id = "book_information", -- used by covermenu - enabled = not item.dim, - callback = function() - UIManager:close(self.histfile_dialog) - FileManagerBookInfo:show(item.file) - end, - }, + filemanagerutil.genBookInformationButton(item.file, self.histfile_dialog, item.dim), }) table.insert(buttons, { - { - text = _("Book cover"), - id = "book_cover", -- used by covermenu - callback = function() - UIManager:close(self.histfile_dialog) - FileManagerBookInfo:onShowBookCover(item.file) - end, - }, - { - text = _("Book description"), - id = "book_description", -- used by covermenu - callback = function() - UIManager:close(self.histfile_dialog) - FileManagerBookInfo:onShowBookDescription(nil, item.file) - end, - }, + filemanagerutil.genBookCoverButton(item.file, self.histfile_dialog, item.dim), + filemanagerutil.genBookDescriptionButton(item.file, self.histfile_dialog, item.dim), }) self.histfile_dialog = ButtonDialogTitle:new{ @@ -180,13 +161,12 @@ end function FileManagerHistory:onShowHist() self.hist_menu = Menu:new{ ui = self.ui, - width = Screen:getWidth(), - height = Screen:getHeight(), covers_fullscreen = true, -- hint for UIManager:_repaint() is_borderless = true, is_popout = false, title_bar_left_icon = "appbar.menu", onLeftButtonTap = function() self:showHistDialog() end, + onMenuChoice = self.onMenuChoice, onMenuHold = self.onMenuHold, onSetRotationMode = self.MenuSetRotationModeHandler, _manager = self, diff --git a/frontend/apps/filemanager/filemanagerutil.lua b/frontend/apps/filemanager/filemanagerutil.lua index db8c875ca..492006b12 100644 --- a/frontend/apps/filemanager/filemanagerutil.lua +++ b/frontend/apps/filemanager/filemanagerutil.lua @@ -140,6 +140,42 @@ function filemanagerutil.genResetSettingsButton(file, caller_callback, button_di } end +function filemanagerutil.genBookInformationButton(file, dialog, button_disabled) + return { + text = _("Book information"), + id = "book_information", -- used by covermenu + enabled = not button_disabled, + callback = function() + UIManager:close(dialog) + require("apps/filemanager/filemanagerbookinfo"):show(file) + end, + } +end + +function filemanagerutil.genBookDescriptionButton(file, dialog, button_disabled) + return { + text = _("Book description"), + id = "book_description", -- used by covermenu + enabled = not button_disabled, + callback = function() + UIManager:close(dialog) + require("apps/filemanager/filemanagerbookinfo"):onShowBookDescription(nil, file) + end, + } +end + +function filemanagerutil.genBookCoverButton(file, dialog, button_disabled) + return { + text = _("Book cover"), + id = "book_cover", -- used by covermenu + enabled = not button_disabled, + callback = function() + UIManager:close(dialog) + require("apps/filemanager/filemanagerbookinfo"):onShowBookCover(file) + end, + } +end + -- Generate "Execute script" file dialog button function filemanagerutil.genExecuteScriptButton(file, caller_callback) return { diff --git a/frontend/readhistory.lua b/frontend/readhistory.lua index cdafe2af3..6c3ef27ad 100644 --- a/frontend/readhistory.lua +++ b/frontend/readhistory.lua @@ -16,24 +16,16 @@ local ReadHistory = { last_read_time = 0, } -local function selectCallback(path) - local ReaderUI = require("apps/reader/readerui") - ReaderUI:showReader(path) -end - local function buildEntry(input_time, input_file) local file_path = realpath(input_file) or input_file -- keep orig file path of deleted files - local is_file_deleted = lfs.attributes(file_path, "mode") ~= "file" + local file_exists = lfs.attributes(file_path, "mode") == "file" return { time = input_time, file = file_path, text = input_file:gsub(".*/", ""), - dim = is_file_deleted, + dim = not file_exists, mandatory = datetime.secondsToDateTime(input_time), - select_enabled = not is_file_deleted, - callback = function() - selectCallback(input_file) - end, + select_enabled = file_exists, } end @@ -196,9 +188,6 @@ function ReadHistory:updateItemByPath(old_path, new_path) if index then self.hist[index].file = new_path self.hist[index].text = new_path:gsub(".*/", "") - self.hist[index].callback = function() - selectCallback(new_path) - end self:_flush() self:reload(true) end