diff --git a/base b/base index fc7946516..5cc289e53 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit fc7946516b6c80394458a037af2dcec7caa3cfb6 +Subproject commit 5cc289e53927edd736585eec58fc0c1b3fbd6f18 diff --git a/frontend/ui/widget/filechooser.lua b/frontend/ui/widget/filechooser.lua index 2443e4c84..fed8c3c9f 100644 --- a/frontend/ui/widget/filechooser.lua +++ b/frontend/ui/widget/filechooser.lua @@ -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