mirror of
https://github.com/MinimalBible/MinimalBible
synced 2025-07-05 07:44:43 -04:00
Add a language spinner
It doesn't do much yet...
This commit is contained in:
@ -0,0 +1,22 @@
|
||||
package org.bspeice.minimalbible.activity.downloader.manager
|
||||
|
||||
import org.crosswire.common.util.Language
|
||||
|
||||
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 availableLanguages = languageModuleMap.map { it.getKey() }
|
||||
val availableLanguagesList = availableLanguages.toSortedList {(left, right) ->
|
||||
// Prioritize our current language first
|
||||
if (left == currentLanguage)
|
||||
-1
|
||||
else if (right == currentLanguage)
|
||||
1
|
||||
else
|
||||
left.compareTo(right)
|
||||
}.toBlocking().first()
|
||||
}
|
@ -8,6 +8,7 @@ import rx.schedulers.Schedulers
|
||||
import java.util.Calendar
|
||||
import org.bspeice.minimalbible.activity.downloader.DownloadPrefs
|
||||
import android.net.ConnectivityManager
|
||||
import org.crosswire.jsword.book.BookComparators
|
||||
|
||||
/**
|
||||
* Created by bspeice on 10/22/14.
|
||||
@ -21,19 +22,23 @@ class RefreshManager(val installers: Collection<Installer>,
|
||||
Observable.from(installers)
|
||||
.map {
|
||||
if (doReload()) {
|
||||
it.reloadBookList()
|
||||
it.reloadBookList() // TODO: Handle InstallException
|
||||
}
|
||||
mapOf(Pair(it, it.getBooks()))
|
||||
}
|
||||
.subscribeOn(Schedulers.io())
|
||||
.cache();
|
||||
|
||||
val availableModulesFlat: Observable<Book>
|
||||
get() = availableModules
|
||||
val flatModules: Observable<Book> =
|
||||
availableModules
|
||||
// Map -> Lists
|
||||
.flatMap { Observable.from(it.values()) }
|
||||
// Lists -> Single list
|
||||
.flatMap { Observable.from(it) };
|
||||
.flatMap { Observable.from(it) }
|
||||
|
||||
val flatModulesSorted = flatModules.toSortedList {(book1, book2) ->
|
||||
BookComparators.getInitialComparator().compare(book1, book2)
|
||||
};
|
||||
|
||||
// Constructor - Split from the value creation because `subscribe` returns
|
||||
// the subscriber object, not the underlying value
|
||||
@ -43,8 +48,9 @@ class RefreshManager(val installers: Collection<Installer>,
|
||||
|
||||
val fifteenDaysAgo = Calendar.getInstance().getTime().getTime() - 1296000
|
||||
|
||||
fun doReload(enabledDownload: Boolean, lastUpdated: Long, onWifi: Boolean): Boolean =
|
||||
if (!enabledDownload || !onWifi)
|
||||
fun doReload(enabledDownload: Boolean, lastUpdated: Long,
|
||||
networkState: Int? = ConnectivityManager.TYPE_DUMMY): Boolean =
|
||||
if (!enabledDownload || networkState == ConnectivityManager.TYPE_WIFI)
|
||||
false
|
||||
else if (lastUpdated < fifteenDaysAgo)
|
||||
true
|
||||
@ -53,12 +59,7 @@ class RefreshManager(val installers: Collection<Installer>,
|
||||
|
||||
fun doReload(): Boolean = doReload(prefs.hasEnabledDownload(),
|
||||
prefs.downloadRefreshedOn(),
|
||||
// TODO: Functional is awesome, but this might be a bit ridiculous
|
||||
(if (connManager?.getActiveNetworkInfo() != null)
|
||||
connManager!!.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI
|
||||
else
|
||||
false)
|
||||
)
|
||||
connManager?.getActiveNetworkInfo()?.getType())
|
||||
|
||||
fun installerFromBook(b: Book): Observable<Installer> = Observable.just(
|
||||
availableModules.filter {
|
||||
|
Reference in New Issue
Block a user