Bump base to bring in a few fixes & cleanups (#6753)

* Bump base

https://github.com/koreader/koreader-base/pull/1205
https://github.com/koreader/koreader-base/pull/1206
https://github.com/koreader/koreader-base/pull/1207

* The strcoll shenanigans have been moved to ffi/util
reviewable/pr6754/r1
NiLuJe 4 years ago committed by GitHub
parent e17a0d4068
commit d6cecc9ee3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1 +1 @@
Subproject commit fc7946516b6c80394458a037af2dcec7caa3cfb6
Subproject commit 5cc289e53927edd736585eec58fc0c1b3fbd6f18

@ -11,7 +11,6 @@ local ffi = require("ffi")
local lfs = require("libs/libkoreader-lfs")
local ffiUtil = require("ffi/util")
local T = ffiUtil.template
local C = ffi.C
local _ = require("gettext")
local N_ = _.ngettext
local Screen = Device.screen
@ -19,19 +18,6 @@ local util = require("util")
local getFileNameSuffix = util.getFileNameSuffix
local getFriendlySize = util.getFriendlySize
ffi.cdef[[
int strcoll (const char *str1, const char *str2);
]]
-- string sort function respecting LC_COLLATE
local function strcoll(str1, str2)
return C.strcoll(str1, str2) < 0
end
local function kobostrcoll(str1, str2)
return str1 < str2
end
local FileChooser = Menu:extend{
cface = Font:getFace("smallinfofont"),
no_title = true,
@ -129,24 +115,6 @@ function FileChooser:init()
end
end
local strcoll_func = strcoll
-- circumvent string collating in Kobo devices. See issue koreader/koreader#686
if Device:isKobo() then
strcoll_func = kobostrcoll
end
self.strcoll = function(a, b)
if a == nil and b == nil then
return false
elseif a == nil then
return true
elseif b == nil then
return false
elseif DALPHA_SORT_CASE_INSENSITIVE then
return strcoll_func(string.lower(a), string.lower(b))
else
return strcoll_func(a, b)
end
end
self.item_table = self:genItemTableFromPath(self.path)
Menu.init(self) -- call parent's init()
end
@ -161,7 +129,7 @@ function FileChooser:genItemTableFromPath(path)
local sorting
if self.collate == "strcoll" then
sorting = function(a, b)
return self.strcoll(a.name, b.name)
return ffiUtil.strcoll(a.name, b.name)
end
elseif self.collate == "access" then
sorting = function(a, b)
@ -188,9 +156,9 @@ function FileChooser:genItemTableFromPath(path)
elseif self.collate == "type" then
sorting = function(a, b)
if a.suffix == nil and b.suffix == nil then
return self.strcoll(a.name, b.name)
return ffiUtil.strcoll(a.name, b.name)
else
return self.strcoll(a.suffix, b.suffix)
return ffiUtil.strcoll(a.suffix, b.suffix)
end
end
elseif self.collate == "percent_unopened_first" or self.collate == "percent_unopened_last" then
@ -304,7 +272,7 @@ function FileChooser:genItemTableFromPath(path)
if self.collate == "strcoll_mixed" then
sorting = function(a, b)
if b.text == up_folder_arrow then return false end
return self.strcoll(a.text, b.text)
return ffiUtil.strcoll(a.text, b.text)
end
if self.reverse_collate then
local sorting_unreversed = sorting

Loading…
Cancel
Save