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 7 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"), text = _("Folders and files mixed"),
enabled_func = function() enabled_func = function()
local collate = G_reader_settings:readSetting("collate") local collate = G_reader_settings:readSetting("collate")
return collate ~= "size" and return not FileChooser.isCollateNotForMixed(collate)
collate ~= "type" and
collate ~= "percent_unopened_first" and
collate ~= "percent_unopened_last"
end, end,
checked_func = function() checked_func = function()
local collate = G_reader_settings:readSetting("collate") local collate = G_reader_settings:readSetting("collate")
return G_reader_settings:isTrue("collate_mixed") and return not FileChooser.isCollateNotForMixed(collate) and G_reader_settings:isTrue("collate_mixed")
collate ~= "size" and
collate ~= "type" and
collate ~= "percent_unopened_first" and
collate ~= "percent_unopened_last"
end, end,
callback = function() callback = function()
G_reader_settings:flipNilOrFalse("collate_mixed") G_reader_settings:flipNilOrFalse("collate_mixed")

@ -242,19 +242,21 @@ function FileChooser:genItemTableFromPath(path)
return self:genItemTable(dirs, files, path) return self:genItemTable(dirs, files, path)
end 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) function FileChooser:genItemTable(dirs, files, path)
local collate = G_reader_settings:readSetting("collate") 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 collate_mixed = G_reader_settings:isTrue("collate_mixed")
local reverse_collate = G_reader_settings:isTrue("reverse_collate") local reverse_collate = G_reader_settings:isTrue("reverse_collate")
local sorting = self:getSortingFunction(collate, 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 if collate_not_for_mixed or not collate_mixed then
table.sort(files, sorting) table.sort(files, sorting)
if collate_not_for_mixed then if collate_not_for_mixed then -- keep folders sorted by name not reversed
sorting = self:getSortingFunction("strcoll", reverse_collate) sorting = self:getSortingFunction("strcoll")
end end
table.sort(dirs, sorting) table.sort(dirs, sorting)
end end

Loading…
Cancel
Save