Use current locale when sorting library "alphabetically" (closes #5281)
This _should_ handle things like Chinese that aren't actually alphabetical.
This commit is contained in:
parent
d645507eeb
commit
568c4d8c8e
@ -29,8 +29,10 @@ import rx.android.schedulers.AndroidSchedulers
|
|||||||
import rx.schedulers.Schedulers
|
import rx.schedulers.Schedulers
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import java.text.Collator
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
import java.util.Comparator
|
import java.util.Comparator
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class containing library information.
|
* Class containing library information.
|
||||||
@ -256,11 +258,17 @@ class LibraryPresenter(
|
|||||||
(category.id ?: 0) to SortDirectionSetting.get(preferences, category)
|
(category.id ?: 0) to SortDirectionSetting.get(preferences, category)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val locale = Locale.getDefault()
|
||||||
|
val collator = Collator.getInstance(locale).apply {
|
||||||
|
strength = Collator.PRIMARY
|
||||||
|
}
|
||||||
val sortFn: (LibraryItem, LibraryItem) -> Int = { i1, i2 ->
|
val sortFn: (LibraryItem, LibraryItem) -> Int = { i1, i2 ->
|
||||||
val sortingMode = sortingModes[i1.manga.category]!!
|
val sortingMode = sortingModes[i1.manga.category]!!
|
||||||
val sortAscending = sortAscending[i1.manga.category]!! == SortDirectionSetting.ASCENDING
|
val sortAscending = sortAscending[i1.manga.category]!! == SortDirectionSetting.ASCENDING
|
||||||
when (sortingMode) {
|
when (sortingMode) {
|
||||||
SortModeSetting.ALPHABETICAL -> i1.manga.title.compareTo(i2.manga.title, true)
|
SortModeSetting.ALPHABETICAL -> {
|
||||||
|
collator.compare(i1.manga.title.lowercase(locale), i2.manga.title.lowercase(locale))
|
||||||
|
}
|
||||||
SortModeSetting.LAST_READ -> {
|
SortModeSetting.LAST_READ -> {
|
||||||
// Get index of manga, set equal to list if size unknown.
|
// Get index of manga, set equal to list if size unknown.
|
||||||
val manga1LastRead = lastReadManga[i1.manga.id!!] ?: lastReadManga.size
|
val manga1LastRead = lastReadManga[i1.manga.id!!] ?: lastReadManga.size
|
||||||
|
@ -125,7 +125,7 @@ object LocaleHelper {
|
|||||||
val resources = app.resources
|
val resources = app.resources
|
||||||
resources.updateConfiguration(newConfig, resources.displayMetrics)
|
resources.updateConfiguration(newConfig, resources.displayMetrics)
|
||||||
|
|
||||||
Locale.setDefault(currentLocale)
|
Locale.setDefault(currentLocale!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user