mirror of
https://github.com/MinimalBible/MinimalBible
synced 2025-07-05 07:44:43 -04:00
Some slight refactoring, test filtering books
This commit is contained in:
@ -1,23 +1,31 @@
|
||||
package org.bspeice.minimalbible.activity.downloader.manager
|
||||
|
||||
import org.crosswire.common.util.Language
|
||||
import rx.Observable
|
||||
|
||||
class LocaleManager(val rM: RefreshManager) {
|
||||
|
||||
val currentLanguage = Language.DEFAULT_LANG.getName()
|
||||
val languageModuleMap = rM.flatModules
|
||||
.map { it.getLanguage() ?: Language(Language.UNKNOWN_LANG_CODE) }
|
||||
.groupBy { it.getName() }
|
||||
val currentLanguage = Language.DEFAULT_LANG
|
||||
|
||||
val availableLanguages = languageModuleMap.map { it.getKey() }
|
||||
val sortedLanguagesList: List<String> =
|
||||
val languageModuleMap = rM.flatModules
|
||||
// Language doesn't have hashCode(), so we actually group by its String
|
||||
.groupBy { FixedLanguage(it.getLanguage()) }
|
||||
|
||||
// Cast back to the original Language implementation
|
||||
val availableLanguages: Observable<Language> = languageModuleMap.map { it.getKey() }
|
||||
val sortedLanguagesList =
|
||||
availableLanguages.toSortedList {(left, right) ->
|
||||
// Prioritize our current language first
|
||||
if (left == currentLanguage)
|
||||
if (left.getName() == currentLanguage.getName())
|
||||
-1
|
||||
else if (right == currentLanguage)
|
||||
else if (right.getName() == currentLanguage.getName())
|
||||
1
|
||||
else
|
||||
left.compareTo(right)
|
||||
left.getName().compareTo(right.getName())
|
||||
}.toBlocking().first()
|
||||
}
|
||||
|
||||
class FixedLanguage(language: Language?) :
|
||||
Language(language?.getCode() ?: Language.UNKNOWN_LANG_CODE) {
|
||||
override fun hashCode() = this.getName().hashCode()
|
||||
}
|
Reference in New Issue
Block a user