Status: setting status of current book in History and Collections (#10946)

reviewable/pr10941/r3
hius07 8 months ago committed by GitHub
parent 4875f63f09
commit 40e2a838ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -56,8 +56,9 @@ function FileManagerCollection:onMenuHold(item)
local is_currently_opened = item.file == (self.ui.document and self.ui.document.file)
local buttons = {}
if not (item.dim or is_currently_opened) then
table.insert(buttons, filemanagerutil.genStatusButtonsRow(item.file, status_button_callback))
if not item.dim then
local doc_settings_or_file = is_currently_opened and self.ui.doc_settings or item.file
table.insert(buttons, filemanagerutil.genStatusButtonsRow(doc_settings_or_file, status_button_callback))
table.insert(buttons, {}) -- separator
end
table.insert(buttons, {

@ -38,13 +38,18 @@ end
function FileManagerHistory:fetchStatuses(count)
for _, v in ipairs(require("readhistory").hist) do
v.status = v.dim and "deleted" or filemanagerutil.getStatus(v.file)
if v.status == "new" and v.file == (self.ui.document and self.ui.document.file) then
v.status = "reading" -- file currently opened for the first time
local status
if v.dim then -- deleted file
status = "deleted"
elseif v.file == (self.ui.document and self.ui.document.file) then -- currently opened file
status = self.ui.doc_settings:readSetting("summary").status
else
status = filemanagerutil.getStatus(v.file)
end
if count then
self.count[v.status] = self.count[v.status] + 1
self.count[status] = self.count[status] + 1
end
v.status = status
end
self.statuses_fetched = true
end
@ -103,8 +108,9 @@ function FileManagerHistory:onMenuHold(item)
local is_currently_opened = item.file == (self.ui.document and self.ui.document.file)
local buttons = {}
if not (item.dim or is_currently_opened) then
table.insert(buttons, filemanagerutil.genStatusButtonsRow(item.file, status_button_callback))
if not item.dim then
local doc_settings_or_file = is_currently_opened and self.ui.doc_settings or item.file
table.insert(buttons, filemanagerutil.genStatusButtonsRow(doc_settings_or_file, status_button_callback))
table.insert(buttons, {}) -- separator
end
table.insert(buttons, {

@ -89,10 +89,9 @@ end
function filemanagerutil.setStatus(file, status)
-- In case the book doesn't have a sidecar file, this'll create it
local doc_settings = DocSettings:open(file)
local summary = doc_settings:readSetting("summary") or {}
local summary = doc_settings:readSetting("summary", {})
summary.status = status
summary.modified = os.date("%Y-%m-%d", os.time())
doc_settings:saveSetting("summary", summary)
doc_settings:flush()
end
@ -108,15 +107,25 @@ function filemanagerutil.statusToString(status)
end
-- Generate all book status file dialog buttons in a row
function filemanagerutil.genStatusButtonsRow(file, caller_callback, current_status)
local status = current_status or filemanagerutil.getStatus(file)
function filemanagerutil.genStatusButtonsRow(doc_settings_or_file, caller_callback)
local summary, status
if type(doc_settings_or_file) == "table" then -- currently opened file
summary = doc_settings_or_file:readSetting("summary")
status = summary.status
else
status = filemanagerutil.getStatus(doc_settings_or_file)
end
local function genStatusButton(to_status)
return {
text = filemanagerutil.statusToString(to_status) .. (status == to_status and "" or ""),
id = to_status, -- used by covermenu
enabled = status ~= to_status,
callback = function()
filemanagerutil.setStatus(file, to_status)
if summary then -- currently opened file
summary.status = to_status
else
filemanagerutil.setStatus(doc_settings_or_file, to_status)
end
caller_callback()
end,
}

Loading…
Cancel
Save