mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
History: show last read date instead of file size
In classic and list display modes.
This commit is contained in:
committed by
Martín Fernández
parent
bafc52afd1
commit
cfa45f8d88
@@ -83,6 +83,13 @@ function DocSettings:getNameFromHistory(hist_name)
|
||||
return string.sub(hist_name, string.len(s)+2, -5)
|
||||
end
|
||||
|
||||
function DocSettings:getLastSaveTime(doc_path)
|
||||
local attr = lfs.attributes(self:getSidecarFile(doc_path))
|
||||
if attr and attr.mode == "file" then
|
||||
return attr.modification
|
||||
end
|
||||
end
|
||||
|
||||
function DocSettings:ensureSidecar(sidecar)
|
||||
if lfs.attributes(sidecar, "mode") ~= "directory" then
|
||||
lfs.mkdir(sidecar)
|
||||
|
||||
@@ -2,7 +2,7 @@ local DataStorage = require("datastorage")
|
||||
local DocSettings = require("docsettings")
|
||||
local dump = require("dump")
|
||||
local ffiutil = require("ffi/util")
|
||||
local getFriendlySize = require("util").getFriendlySize
|
||||
local util = require("util")
|
||||
local joinPath = ffiutil.joinPath
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
local realpath = ffiutil.realpath
|
||||
@@ -15,13 +15,30 @@ local ReadHistory = {
|
||||
}
|
||||
|
||||
local function buildEntry(input_time, input_file)
|
||||
local file_exists = lfs.attributes(input_file, "mode") == "file"
|
||||
local file_path = realpath(input_file) or input_file -- keep orig file path of deleted files
|
||||
local file_exists = lfs.attributes(file_path, "mode") == "file"
|
||||
return {
|
||||
time = input_time,
|
||||
text = input_file:gsub(".*/", ""),
|
||||
file = realpath(input_file) or input_file, -- keep orig file path of deleted files
|
||||
file = file_path,
|
||||
dim = not file_exists, -- "dim", as expected by Menu
|
||||
mandatory = file_exists and getFriendlySize(lfs.attributes(input_file, "size") or 0),
|
||||
-- mandatory = file_exists and require("util").getFriendlySize(lfs.attributes(input_file, "size") or 0),
|
||||
mandatory_func = function() -- Show the last read time (rather than file size)
|
||||
local readerui_instance = require("apps/reader/readerui"):_getRunningInstance()
|
||||
local currently_opened_file = readerui_instance and readerui_instance.document.file
|
||||
local last_read_ts
|
||||
if file_path == currently_opened_file then
|
||||
-- Don't use the sidecar file date which is updated regularly while
|
||||
-- reading: keep showing the opening time for the current document.
|
||||
last_read_ts = input_time
|
||||
else
|
||||
-- For past documents, the last save time of the settings is better
|
||||
-- as last read time than input_time (its last opening time, that
|
||||
-- we fallback to it no sidecar file)
|
||||
last_read_ts = DocSettings:getLastSaveTime(file_path) or input_time
|
||||
end
|
||||
return util.secondsToDate(last_read_ts, G_reader_settings:nilOrTrue("twelve_hour_clock"))
|
||||
end,
|
||||
callback = function()
|
||||
local ReaderUI = require("apps/reader/readerui")
|
||||
ReaderUI:showReader(input_file)
|
||||
|
||||
@@ -236,12 +236,13 @@ function MenuItem:init()
|
||||
-- Padding before mandatory
|
||||
local text_mandatory_padding = 0
|
||||
local text_ellipsis_mandatory_padding = 0
|
||||
if self.mandatory then
|
||||
local mandatory = self.mandatory_func and self.mandatory_func() or self.mandatory
|
||||
if mandatory then
|
||||
text_mandatory_padding = Size.span.horizontal_default
|
||||
-- Smaller padding when ellipsis for better visual feeling
|
||||
text_ellipsis_mandatory_padding = Size.span.horizontal_small
|
||||
end
|
||||
local mandatory = self.mandatory and ""..self.mandatory or ""
|
||||
mandatory = mandatory and ""..mandatory or ""
|
||||
local mandatory_widget = TextWidget:new{
|
||||
text = mandatory,
|
||||
face = self.info_face,
|
||||
@@ -1014,6 +1015,7 @@ function Menu:updateItems(select_number)
|
||||
text = Menu.getMenuText(self.item_table[i]),
|
||||
bidi_wrap_func = self.item_table[i].bidi_wrap_func,
|
||||
mandatory = self.item_table[i].mandatory,
|
||||
mandatory_func = self.item_table[i].mandatory_func,
|
||||
bold = self.item_table.current == i or self.item_table[i].bold == true,
|
||||
dim = self.item_table[i].dim,
|
||||
font = "smallinfofont",
|
||||
|
||||
@@ -224,7 +224,7 @@ function ListMenuItem:update()
|
||||
self.is_directory = true
|
||||
-- nb items on the right, directory name on the left
|
||||
local wright = TextWidget:new{
|
||||
text = self.mandatory,
|
||||
text = self.mandatory_func and self.mandatory_func() or self.mandatory,
|
||||
face = Font:getFace("infont", math.min(max_fontsize_fileinfo, _fontSize(15))),
|
||||
}
|
||||
local pad_width = Screen:scaleBySize(10) -- on the left, in between, and on the right
|
||||
@@ -357,15 +357,23 @@ function ListMenuItem:update()
|
||||
-- pages read / nb of pages (not available for crengine doc not opened)
|
||||
local directory, filename = util.splitFilePathName(self.filepath) -- luacheck: no unused
|
||||
local filename_without_suffix, filetype = util.splitFileNameSuffix(filename)
|
||||
local fileinfo_str = filetype
|
||||
if self.mandatory then
|
||||
fileinfo_str = self.mandatory .. " " .. BD.wrap(fileinfo_str)
|
||||
end
|
||||
if bookinfo._no_provider then
|
||||
-- for unspported files: don't show extension on the right,
|
||||
-- keep it in filename
|
||||
filename_without_suffix = filename
|
||||
fileinfo_str = self.mandatory
|
||||
local fileinfo_str
|
||||
if self.mandatory_func then
|
||||
-- Currently only provided by History, giving the last time read.
|
||||
-- Just show this date, without the file extension
|
||||
fileinfo_str = self.mandatory_func()
|
||||
else
|
||||
if self.mandatory then
|
||||
fileinfo_str = BD.wrap(self.mandatory) .. " " .. BD.wrap(filetype)
|
||||
else
|
||||
fileinfo_str = filetype
|
||||
end
|
||||
if bookinfo._no_provider then
|
||||
-- for unspported files: don't show extension on the right,
|
||||
-- keep it in filename
|
||||
filename_without_suffix = filename
|
||||
fileinfo_str = self.mandatory
|
||||
end
|
||||
end
|
||||
-- Current page / pages are available or more accurate in .sdr/metadata.lua
|
||||
-- We use a cache (cleaned at end of this browsing session) to store
|
||||
@@ -949,6 +957,7 @@ function ListMenu:_updateItemsBuildUI()
|
||||
text = getMenuText(entry),
|
||||
show_parent = self.show_parent,
|
||||
mandatory = entry.mandatory,
|
||||
mandatory_func = entry.mandatory_func,
|
||||
dimen = self.item_dimen:new(),
|
||||
shortcut = item_shortcut,
|
||||
shortcut_style = shortcut_style,
|
||||
|
||||
Reference in New Issue
Block a user