FileChooser: fix reverse sorting of folders (#11093)

Do not apply "reverse sorting" to folders in sorting modes "type", "size", "percentage".
In that modes folders are sorted by name.
reviewable/pr11103/r1
hius07 6 months ago committed by GitHub
parent 894cb3190d
commit 082ef9b545
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -446,18 +446,11 @@ To:
text = _("Folders and files mixed"),
enabled_func = function()
local collate = G_reader_settings:readSetting("collate")
return collate ~= "size" and
collate ~= "type" and
collate ~= "percent_unopened_first" and
collate ~= "percent_unopened_last"
return not FileChooser.isCollateNotForMixed(collate)
end,
checked_func = function()
local collate = G_reader_settings:readSetting("collate")
return G_reader_settings:isTrue("collate_mixed") and
collate ~= "size" and
collate ~= "type" and
collate ~= "percent_unopened_first" and
collate ~= "percent_unopened_last"
return not FileChooser.isCollateNotForMixed(collate) and G_reader_settings:isTrue("collate_mixed")
end,
callback = function()
G_reader_settings:flipNilOrFalse("collate_mixed")

@ -242,19 +242,21 @@ function FileChooser:genItemTableFromPath(path)
return self:genItemTable(dirs, files, path)
end
function FileChooser.isCollateNotForMixed(collate)
return collate == "size" or collate == "type"
or collate == "percent_unopened_first" or collate == "percent_unopened_last"
end
function FileChooser:genItemTable(dirs, files, path)
local collate = G_reader_settings:readSetting("collate")
local collate_not_for_mixed = collate == "size" or
collate == "type" or
collate == "percent_unopened_first" or
collate == "percent_unopened_last"
local collate_mixed = G_reader_settings:isTrue("collate_mixed")
local reverse_collate = G_reader_settings:isTrue("reverse_collate")
local sorting = self:getSortingFunction(collate, reverse_collate)
local collate_not_for_mixed = self.isCollateNotForMixed(collate)
if collate_not_for_mixed or not collate_mixed then
table.sort(files, sorting)
if collate_not_for_mixed then
sorting = self:getSortingFunction("strcoll", reverse_collate)
if collate_not_for_mixed then -- keep folders sorted by name not reversed
sorting = self:getSortingFunction("strcoll")
end
table.sort(dirs, sorting)
end

Loading…
Cancel
Save