RefreshManager going functional!

This commit is contained in:
Bradlee Speice
2014-10-22 22:21:42 -04:00
parent 6d15167100
commit 22fd32b26d
13 changed files with 205 additions and 281 deletions

View File

@ -0,0 +1,46 @@
package org.bspeice.minimalbible.activity.downloader.manager
import org.crosswire.jsword.book.install.Installer
import java.util.concurrent.atomic.AtomicBoolean
import rx.Observable
import org.crosswire.jsword.book.Book
import rx.schedulers.Schedulers
/**
* Created by bspeice on 10/22/14.
*/
class RefreshManager(val installers: Collection<Installer>) {
val refreshComplete = AtomicBoolean()
val availableModules: Observable<Map<Installer, List<Book>>> =
Observable.from(installers)
.map {
if (doReload()) {
it.reloadBookList()
}
mapOf(Pair(it, it.getBooks()))
}
.subscribeOn(Schedulers.io())
.cache();
val availableModulesFlat: Observable<Book>
get() = availableModules
// Map -> Lists
.flatMap { Observable.from(it.values()) }
// Lists -> Single list
.flatMap { Observable.from(it) };
// Constructor - Split from the value creation because `subscribe` returns
// the subscriber object, not the underlying value
{
availableModules.subscribe({}, {}, { refreshComplete set true })
}
fun doReload(): Boolean = true
fun installerFromBook(b: Book): Observable<Installer> = Observable.just(
availableModules.filter {
it.flatMap { it.value } contains b
}
.toBlocking().first().entrySet().first().getKey())
}

View File

@ -22,7 +22,7 @@ class BibleViewClient(val b: Book, val lookup: VerseLookupService,
val v = Verse(b.getVersification(), ordinal)
// TODO: WebView should notify us what verse it's on
subject?.onNext(v.getBook().toString() + " " + v.getChapter() + ":" + v.getVerse())
return lookup.getJsonVerse(v) as String
return lookup.getJsonVerse(v)
}
JavascriptInterface fun getVerses(first: Int, count: Int): String {

View File

@ -33,7 +33,7 @@ class OsisParser(v: Verse) : DefaultHandler() {
doWrite.pop()
}
override fun characters(ch: CharArray?, start: Int, length: Int) {
if (doWrite.peek() as Boolean)
if (doWrite.peek())
verseContent.appendContent(String(ch as CharArray))
}
}

View File

@ -21,7 +21,7 @@ class VerseContent(v: Verse) {
public fun toJson(): String {
// Lazy load Gson - not likely that we'll call this method multiple times, so
// don't have to worry about a penalty there.
return Gson().toJson(this) as String
return Gson().toJson(this)
}
public fun appendContent(content: String) {