From d9b0785a96c63184f104afbc766ff6591e77c87d Mon Sep 17 00:00:00 2001 From: Melik <10296053+melyux@users.noreply.github.com> Date: Mon, 6 Feb 2023 18:46:09 -0800 Subject: [PATCH] Reset button gen to util, collections current file check - filemanagerutil.resetDocumentSettings()'s doc_settings:close() -> doc_settings:flush() - Remove current_status from filemanagerutil.getStatusButtonsRow() args, get it inside from file - Move genStatusButton() inside filemanagerutil.getStatusButtonsRow() - Move "Reset settings" button generation to filemanagerutil - Rename "Reset settings" button to "Reset" and update popup box text - Disable "Reset settings" for file if it's currently open in Collections (same as History) --- frontend/apps/filemanager/filemanager.lua | 21 +------- .../filemanager/filemanagercollection.lua | 25 ++------- .../apps/filemanager/filemanagerhistory.lua | 28 +--------- frontend/apps/filemanager/filemanagerutil.lua | 52 +++++++++++++++++-- plugins/coverbrowser.koplugin/covermenu.lua | 6 +-- 5 files changed, 58 insertions(+), 74 deletions(-) diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index 66afe502b..d5000991c 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -339,31 +339,14 @@ function FileManager:setupLayout() end if is_file then - local status = filemanagerutil.getStatus(file) local function status_button_callback() self:refreshPath() UIManager:close(self.file_dialog) end - table.insert(buttons, filemanagerutil.getStatusButtonsRow(status, file, status_button_callback)) + table.insert(buttons, filemanagerutil.getStatusButtonsRow(file, status_button_callback)) table.insert(buttons, {}) -- separator table.insert(buttons, { - { - text = _("Reset settings"), - id = "reset_settings", -- used by covermenu - enabled = DocSettings:hasSidecarFile(BaseUtil.realpath(file)), - callback = function() - UIManager:show(ConfirmBox:new{ - text = T(_("Reset settings for this document?\n\n%1\n\nAny highlights or bookmarks will be permanently lost."), BD.filepath(file)), - ok_text = _("Reset"), - ok_callback = function() - filemanagerutil.purgeSettings(file) - require("readhistory"):fileSettingsPurged(file) - self:refreshPath() - UIManager:close(self.file_dialog) - end, - }) - end, - }, + filemanagerutil.genResetSettingsButton(file, nil, status_button_callback), { text_func = function() if ReadCollection:checkItemExist(file) then diff --git a/frontend/apps/filemanager/filemanagercollection.lua b/frontend/apps/filemanager/filemanagercollection.lua index 893e87df6..dc0f18f74 100644 --- a/frontend/apps/filemanager/filemanagercollection.lua +++ b/frontend/apps/filemanager/filemanagercollection.lua @@ -1,8 +1,6 @@ local BD = require("ui/bidi") local ButtonDialogTitle = require("ui/widget/buttondialogtitle") -local ConfirmBox = require("ui/widget/confirmbox") local Device = require("device") -local DocSettings = require("docsettings") local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo") local InfoMessage = require("ui/widget/infomessage") local Menu = require("ui/widget/menu") @@ -44,33 +42,18 @@ function FileManagerCollection:updateItemTable() end function FileManagerCollection:onMenuHold(item) + local readerui_instance = require("apps/reader/readerui"):_getRunningInstance() + local currently_opened_file = readerui_instance and readerui_instance.document and readerui_instance.document.file self.collfile_dialog = nil - local status = filemanagerutil.getStatus(item.file) local function status_button_callback() self._manager:updateItemTable() UIManager:close(self.collfile_dialog) end local buttons = { - filemanagerutil.getStatusButtonsRow(status, item.file, status_button_callback), + filemanagerutil.getStatusButtonsRow(item.file, currently_opened_file, status_button_callback), {}, { - { - text = _("Reset settings"), - id = "reset_settings", -- used by covermenu - enabled = DocSettings:hasSidecarFile(BaseUtil.realpath(item.file)), - callback = function() - UIManager:show(ConfirmBox:new{ - text = T(_("Reset settings for this document?\n\n%1\n\nAny highlights or bookmarks will be permanently lost."), BD.filepath(item.file)), - ok_text = _("Reset"), - ok_callback = function() - filemanagerutil.purgeSettings(item.file) - require("readhistory"):fileSettingsPurged(item.file) - self._manager:updateItemTable() - UIManager:close(self.collfile_dialog) - end, - }) - end, - }, + filemanagerutil.genResetSettingsButton(item.file, nil, status_button_callback), { text = _("Remove from collection"), callback = function() diff --git a/frontend/apps/filemanager/filemanagerhistory.lua b/frontend/apps/filemanager/filemanagerhistory.lua index 88ec6d97b..7e0469476 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 DocSettings = require("docsettings") local FFIUtil = require("ffi/util") local FileManagerBookInfo = require("apps/filemanager/filemanagerbookinfo") local Menu = require("ui/widget/menu") @@ -89,7 +88,6 @@ function FileManagerHistory:onMenuHold(item) local readerui_instance = require("apps/reader/readerui"):_getRunningInstance() local currently_opened_file = readerui_instance and readerui_instance.document and readerui_instance.document.file self.histfile_dialog = nil - local status = filemanagerutil.getStatus(item.file) local function status_button_callback() if self._manager.filter ~= "all" then self._manager:fetchStatuses(false) @@ -101,29 +99,7 @@ function FileManagerHistory:onMenuHold(item) end local buttons = { { - { - text = _("Reset settings"), - id = "reset_settings", -- used by covermenu - enabled = item.file ~= currently_opened_file and DocSettings:hasSidecarFile(FFIUtil.realpath(item.file)), - callback = function() - UIManager:show(ConfirmBox:new{ - text = T(_("Reset settings for this document?\n\n%1\n\nAny highlights or bookmarks will be permanently lost."), - BD.filepath(item.file)), - ok_text = _("Reset"), - ok_callback = function() - filemanagerutil.purgeSettings(item.file) - require("readhistory"):fileSettingsPurged(item.file) - if self._manager.filter ~= "all" then - self._manager:fetchStatuses(false) - else - self._manager.statuses_fetched = false - end - self._manager:updateItemTable() - UIManager:close(self.histfile_dialog) - end, - }) - end, - }, + filemanagerutil.genResetSettingsButton(item.file, currently_opened_file, status_button_callback), { text = _("Remove from history"), callback = function() @@ -164,7 +140,7 @@ function FileManagerHistory:onMenuHold(item) }, } if not item.dim then - table.insert(buttons, 1, filemanagerutil.getStatusButtonsRow(status, item.file, status_button_callback)) + table.insert(buttons, 1, filemanagerutil.getStatusButtonsRow(item.file, status_button_callback)) table.insert(buttons, 2, {}) end self.histfile_dialog = ButtonDialogTitle:new{ diff --git a/frontend/apps/filemanager/filemanagerutil.lua b/frontend/apps/filemanager/filemanagerutil.lua index 0b842aacb..32de491ff 100644 --- a/frontend/apps/filemanager/filemanagerutil.lua +++ b/frontend/apps/filemanager/filemanagerutil.lua @@ -2,10 +2,14 @@ This module contains miscellaneous helper functions for FileManager ]] +local BD = require("ui/bidi") +local ConfirmBox = require("ui/widget/confirmbox") local Device = require("device") local DocSettings = require("docsettings") +local UIManager = require("ui/uimanager") local util = require("ffi/util") local _ = require("gettext") +local T = util.template local filemanagerutil = {} @@ -59,7 +63,7 @@ function filemanagerutil.resetDocumentSettings(file) end end doc_settings:makeTrue("docsettings_reset_done") -- for readertypeset block_rendering_mode - doc_settings:close() + doc_settings:flush() end end @@ -127,11 +131,49 @@ function filemanagerutil.genStatusButton(to_status, current_status, file, caller end -- Generate all book status file dialog buttons in a row -function filemanagerutil.getStatusButtonsRow(current_status, file, caller_callback) +function filemanagerutil.getStatusButtonsRow(file, caller_callback) + local function genStatusButton(to_status, current_status) + local status_text = { + reading = _("Reading"), + abandoned = _("On hold"), + complete = _("Finished"), + } + return { + text = status_text[to_status], + id = to_status, -- used by covermenu + enabled = current_status ~= to_status, + callback = function() + filemanagerutil.setStatus(file, to_status) + caller_callback() + end, + } + end + local status = filemanagerutil.getStatus(file) return { - filemanagerutil.genStatusButton("reading", current_status, file, caller_callback), - filemanagerutil.genStatusButton("abandoned", current_status, file, caller_callback), - filemanagerutil.genStatusButton("complete", current_status, file, caller_callback), + genStatusButton("reading", status, file, caller_callback), + genStatusButton("abandoned", status, file, caller_callback), + genStatusButton("complete", status, file, caller_callback), + } +end + +-- Generate a "Reset settings" file dialog button +function filemanagerutil.genResetSettingsButton(file, currently_opened_file, caller_callback) + return { + text = _("Reset"), + id = "reset", -- used by covermenu + enabled = file ~= currently_opened_file and DocSettings:hasSidecarFile(util.realpath(file)), + callback = function() + UIManager:show(ConfirmBox:new{ + text = T(_("Reset this document?\n\n%1\n\nAll document progress, settings, bookmarks, highlights, and notes will be permanently lost."), + BD.filepath(file)), + ok_text = _("Reset"), + ok_callback = function() + filemanagerutil.purgeSettings(file) + require("readhistory"):fileSettingsPurged(file) + caller_callback() + end, + }) + end, } end diff --git a/plugins/coverbrowser.koplugin/covermenu.lua b/plugins/coverbrowser.koplugin/covermenu.lua index f7ce078fa..0cfdf716b 100644 --- a/plugins/coverbrowser.koplugin/covermenu.lua +++ b/plugins/coverbrowser.koplugin/covermenu.lua @@ -330,7 +330,7 @@ function CoverMenu:updateItems(select_number) } -- Fudge the "Reset settings" button callback to also trash the cover_info_cache - local button = self.file_dialog.button_table:getButtonById("reset_settings") + local button = self.file_dialog.button_table:getButtonById("reset") local orig_purge_callback = button.callback button.callback = function() -- Wipe the cache @@ -507,7 +507,7 @@ function CoverMenu:onHistoryMenuHold(item) } -- Fudge the "Reset settings" button callback to also trash the cover_info_cache - local button = self.histfile_dialog.button_table:getButtonById("reset_settings") + local button = self.histfile_dialog.button_table:getButtonById("reset") local orig_purge_callback = button.callback button.callback = function() -- Wipe the cache @@ -682,7 +682,7 @@ function CoverMenu:onCollectionsMenuHold(item) } -- Fudge the "Reset settings" button callback to also trash the cover_info_cache - local button = self.collfile_dialog.button_table:getButtonById("reset_settings") + local button = self.collfile_dialog.button_table:getButtonById("reset") local orig_purge_callback = button.callback button.callback = function() -- Wipe the cache