mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Truncate path in filemanager (#3565)
This commit is contained in:
@@ -21,6 +21,7 @@ local PluginLoader = require("pluginloader")
|
||||
local ReaderDictionary = require("apps/reader/modules/readerdictionary")
|
||||
local ReaderUI = require("apps/reader/readerui")
|
||||
local ReaderWikipedia = require("apps/reader/modules/readerwikipedia")
|
||||
local RenderText = require("ui/rendertext")
|
||||
local Screenshoter = require("ui/widget/screenshoter")
|
||||
local Size = require("ui/size")
|
||||
local TextWidget = require("ui/widget/textwidget")
|
||||
@@ -41,6 +42,20 @@ local function restoreScreenMode()
|
||||
end
|
||||
end
|
||||
|
||||
local function truncatePath(text)
|
||||
local screen_width = Screen:getWidth()
|
||||
local face = Font:getFace("xx_smallinfofont")
|
||||
local reversed_text = string.reverse(text)
|
||||
local txt_width = RenderText:sizeUtf8Text(0, screen_width, face, reversed_text, nil, false).x
|
||||
if screen_width - 2 * Size.padding.small < txt_width then
|
||||
reversed_text = RenderText:truncateTextByWidth(reversed_text, face, screen_width - 2 * Size.padding.small, nil, false)
|
||||
-- string.reverse() breaks "…" so we delete it
|
||||
reversed_text = reversed_text:sub(1, -5)
|
||||
text = "…" .. string.reverse(reversed_text)
|
||||
end
|
||||
return text
|
||||
end
|
||||
|
||||
local FileManager = InputContainer:extend{
|
||||
title = _("KOReader File Browser"),
|
||||
root_path = lfs.currentdir(),
|
||||
@@ -67,7 +82,7 @@ function FileManager:init()
|
||||
|
||||
self.path_text = TextWidget:new{
|
||||
face = Font:getFace("xx_smallinfofont"),
|
||||
text = filemanagerutil.abbreviate(self.root_path),
|
||||
text = truncatePath(filemanagerutil.abbreviate(self.root_path)),
|
||||
}
|
||||
|
||||
self.banner = FrameContainer:new{
|
||||
@@ -117,7 +132,7 @@ function FileManager:init()
|
||||
self.focused_file = nil -- use it only once
|
||||
|
||||
function file_chooser:onPathChanged(path) -- luacheck: ignore
|
||||
FileManager.instance.path_text:setText(filemanagerutil.abbreviate(path))
|
||||
FileManager.instance.path_text:setText(truncatePath(filemanagerutil.abbreviate(path)))
|
||||
UIManager:setDirty(FileManager.instance, function()
|
||||
return "ui", FileManager.instance.path_text.dimen
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user