Kotlin M11 updates

Looking forward to incorporating some of these things...
This commit is contained in:
Bradlee Speice
2015-04-02 19:09:06 -04:00
parent e552d4d5a6
commit cbfd09ab66
16 changed files with 105 additions and 113 deletions

View File

@ -2,6 +2,9 @@ buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
apply plugin: 'com.android.application'

View File

@ -1,19 +1,14 @@
package org.bspeice.minimalbible.activity.downloader.manager
import org.crosswire.common.progress.JobManager;
import org.crosswire.common.progress.WorkEvent;
import org.crosswire.common.progress.WorkListener;
import org.crosswire.jsword.book.Book;
import org.crosswire.jsword.book.Books;
import org.crosswire.jsword.book.BooksEvent;
import org.crosswire.jsword.book.BooksListener;
import rx.Observable;
import rx.schedulers.Schedulers;
import rx.subjects.PublishSubject;
import org.crosswire.jsword.book.BookException
import org.crosswire.common.progress.Progress
import org.bspeice.minimalbible.activity.search.MBIndexManager
import org.crosswire.common.progress.JobManager
import org.crosswire.common.progress.Progress
import org.crosswire.common.progress.WorkEvent
import org.crosswire.common.progress.WorkListener
import org.crosswire.jsword.book.*
import rx.Observable
import rx.schedulers.Schedulers
import rx.subjects.PublishSubject
/**
* Single point of authority for what is being downloaded and its progress
@ -27,7 +22,6 @@ class BookManager(private val installedBooks: Books,
WorkListener, BooksListener {
private val bookJobNamePrefix = Progress.INSTALL_BOOK.substringBeforeLast("%s")
private val indexJobNamePrefix = Progress.DOWNLOAD_SEARCH_INDEX.substringBeforeLast("%s")
/**
* List of jobs currently active by their job name
@ -42,9 +36,9 @@ class BookManager(private val installedBooks: Books,
/**
* A list of books that is locally maintained - installedBooks isn't always up-to-date
*/
val installedBooksList: MutableList<Book> = installedBooks.getBooks() ?: linkedListOf();
val installedBooksList: MutableList<Book> = installedBooks.getBooks() ?: linkedListOf()
{
init {
JobManager.addWorkListener(this)
installedBooks.addBooksListener(this)
downloadEvents.subscribe { this.inProgressDownloads[it.b] = it }

View File

@ -7,7 +7,7 @@ import org.crosswire.jsword.book.Book
*/
data class DLProgressEvent(val progress: Int,
val b: Book) {
class object {
companion object {
val PROGRESS_COMPLETE = 100
val PROGRESS_BEGINNING = 0

View File

@ -1,8 +1,8 @@
package org.bspeice.minimalbible.activity.downloader.manager
import org.crosswire.common.util.Language
import rx.Observable
import org.crosswire.jsword.book.BookCategory
import rx.Observable
import kotlin.platform.platformStatic
/**
@ -38,7 +38,7 @@ class LocaleManager(val rM: RefreshManager) {
// And flatten this into the actual List needed
.toBlocking().first()
class object {
companion object {
platformStatic
fun compareLanguages(left: Language, right: Language, current: Language) =
if (left == right)

View File

@ -1,17 +1,17 @@
package org.bspeice.minimalbible.activity.search
import android.content.Context
import android.util.AttributeSet
import android.widget.LinearLayout
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.util.AttributeSet
import android.view.LayoutInflater
import org.bspeice.minimalbible.R
import org.crosswire.jsword.passage.Verse
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import org.bspeice.minimalbible.R
import org.bspeice.minimalbible.service.format.osisparser.OsisParser
import org.crosswire.jsword.book.Book
import android.view.ViewGroup
import org.crosswire.jsword.passage.Verse
/**
* Created by bspeice on 2/26/15.
@ -21,9 +21,9 @@ class SearchResultsListView(val ctx: Context, val attrs: AttributeSet) : LinearL
val layoutManager = LinearLayoutManager(ctx)
val inflater = ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val contentView = inflater.inflate(R.layout.view_search_results_list, this, true)
val searchResults = contentView.findViewById(R.id.search_results) as RecyclerView;
val searchResults = contentView.findViewById(R.id.search_results) as RecyclerView
{
init {
searchResults setLayoutManager layoutManager
}
@ -69,7 +69,7 @@ class ResultViewHolder(val view: SearchResultView) : RecyclerView.ViewHolder(vie
* A custom view to wrap showing a search result
*/
class SearchResultView(val group: ViewGroup?) {
val inflater = LayoutInflater.from(group?.getContext())
val inflater = LayoutInflater.from(group!!.getContext())
val contentView = inflater.inflate(R.layout.view_search_result, group, false)
val verseName = contentView.findViewById(R.id.verseName) as TextView

View File

@ -1,17 +1,17 @@
package org.bspeice.minimalbible.activity.settings
import android.content.Context
import android.util.AttributeSet
import android.preference.Preference
import android.content.Intent
import org.bspeice.minimalbible.R
import android.os.Build
import android.net.Uri
import android.os.Build
import android.preference.Preference
import android.util.AttributeSet
import org.bspeice.minimalbible.R
class ContactPreference(val ctx: Context, val attrs: AttributeSet)
: Preference(ctx, attrs), Preference.OnPreferenceClickListener {
{
init {
setOnPreferenceClickListener(this);
}

View File

@ -1,29 +1,27 @@
package org.bspeice.minimalbible.activity.viewer
import android.widget.BaseExpandableListAdapter
import android.content.Context
import android.content.res.Resources
import android.support.annotation.LayoutRes
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.crosswire.jsword.book.Book
import org.crosswire.jsword.book.getVersification
import org.crosswire.jsword.versification.getBooks
import org.crosswire.jsword.book.bookName
import android.widget.BaseExpandableListAdapter
import android.widget.ExpandableListView
import android.widget.LinearLayout
import android.widget.TextView
import org.bspeice.minimalbible.R
import android.content.Context
import android.view.LayoutInflater
import android.content.res.Resources
import android.widget.ExpandableListView
import rx.subjects.PublishSubject
import android.widget.LinearLayout
import android.app.Activity
import android.util.AttributeSet
import org.bspeice.minimalbible.activity.setInset
import android.support.annotation.LayoutRes
import org.crosswire.jsword.book.Book
import org.crosswire.jsword.book.bookName
import org.crosswire.jsword.book.getVersification
import org.crosswire.jsword.versification.BibleBook
import org.crosswire.jsword.versification.getBooks
import rx.subjects.PublishSubject
class BibleMenu(val ctx: Context, val attrs: AttributeSet) : LinearLayout(ctx, attrs) {
val inflater = ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val contentView = inflater.inflate(R.layout.view_bible_menu, this, true)
// val inflater = ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
// val contentView = inflater.inflate(R.layout.view_bible_menu, this, true)
val menuContent = findViewById(R.id._bible_menu) as ExpandableListView
fun doInitialize(b: Book, publisher: PublishSubject<BookScrollEvent>) {
@ -33,8 +31,6 @@ class BibleMenu(val ctx: Context, val attrs: AttributeSet) : LinearLayout(ctx, a
menuContent.collapseGroup(adapter.getGroupIdForBook(it.b))
}
}
fun placeInset(a: Activity) = setInset(a)
}
/**
@ -62,7 +58,6 @@ class BibleAdapter(val b: Book, val scrollPublisher: PublishSubject<BookScrollEv
)
var groupHighlighted: Int = 0
var childHighlighted: Int = 0
override fun getGroupCount(): Int = menuMappings.count()
@ -135,7 +130,7 @@ class GroupItemHolder(val bindTo: View) {
val content = bindTo.findViewById(R.id.content) as TextView
val resources = bindTo.getResources(): Resources
class object {
companion object {
fun init(v: View, obj: Any, highlighted: Boolean): View {
val holder =
if (v.getTag() != null) v.getTag() as GroupItemHolder
@ -166,7 +161,7 @@ class ChildItemHolder(val bindTo: View, val book: BibleBook,
val content2 = bindTo.findViewById(R.id.content2) as TextView
val content3 = bindTo.findViewById(R.id.content3) as TextView
class object {
companion object {
fun init(v: View, obj: IntRange, book: BibleBook,
scrollPublisher: PublishSubject<BookScrollEvent>): View {
val holder =

View File

@ -1,25 +1,25 @@
package org.bspeice.minimalbible.activity.viewer
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import org.crosswire.jsword.book.Book
import android.view.LayoutInflater
import org.bspeice.minimalbible.R
import android.widget.TextView
import org.crosswire.jsword.book.getVersification
import org.crosswire.jsword.versification.getBooks
import org.crosswire.jsword.versification.BibleBook
import org.bspeice.minimalbible.activity.viewer.BookAdapter.ChapterInfo
import rx.subjects.PublishSubject
import android.text.SpannableStringBuilder
import android.util.TypedValue
import android.util.Log
import android.content.Context
import android.util.AttributeSet
import android.support.v7.widget.LinearLayoutManager
import android.widget.LinearLayout
import android.support.v7.widget.RecyclerView
import android.text.SpannableStringBuilder
import android.util.AttributeSet
import android.util.Log
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import org.bspeice.minimalbible.R
import org.bspeice.minimalbible.activity.viewer.BookAdapter.ChapterInfo
import org.bspeice.minimalbible.service.format.osisparser.OsisParser
import org.crosswire.jsword.book.Book
import org.crosswire.jsword.book.getVersification
import org.crosswire.jsword.versification.BibleBook
import org.crosswire.jsword.versification.getBooks
import rx.subjects.PublishSubject
class BibleView(val ctx: Context, val attrs: AttributeSet) : LinearLayout(ctx, attrs) {
@ -28,7 +28,7 @@ class BibleView(val ctx: Context, val attrs: AttributeSet) : LinearLayout(ctx, a
val contentView: View = inflater.inflate(R.layout.view_bible, this, true)
val bibleContent = contentView.findViewById(R.id.bible_content) as RecyclerView
{
init {
bibleContent setLayoutManager layoutManager
}
@ -96,7 +96,7 @@ class BookAdapter(val b: Book, val prefs: BibleViewerPreferences)
*/
override fun onCreateViewHolder(parent: ViewGroup?,
position: Int): PassageView {
val emptyView = LayoutInflater.from(parent?.getContext())
val emptyView = LayoutInflater.from(parent!!.getContext())
.inflate(R.layout.viewer_passage_view, parent, false) as TextView
// TODO: Listen for changes to the text size?
@ -125,14 +125,14 @@ class BookAdapter(val b: Book, val prefs: BibleViewerPreferences)
val event = it
lM scrollToPosition
// Get all objects in the form (index, object)
chapterList.withIndices()
// Get one that matches our book and chapter
chapterList.withIndex()
// get one that matches our book and chapter
.first {
event.b == it.second.bibleBook &&
event.chapter == it.second.chapter
event.b == it.value.bibleBook &&
event.chapter == it.value.chapter
}
// And get that index value to scroll to
.first
// and get that index value to scroll to
.index
}
}
}

View File

@ -1,11 +1,11 @@
package org.bspeice.minimalbible.service.manager
import rx.Observable
import org.crosswire.jsword.book.Books
import rx.functions.Action1
import org.crosswire.jsword.book.Book
import rx.functions.Action0
import org.bspeice.minimalbible.exception.NoBooksInstalledException
import org.crosswire.jsword.book.Book
import org.crosswire.jsword.book.Books
import rx.Observable
import rx.functions.Action0
import rx.functions.Action1
import javax.inject.Singleton
/**
@ -21,9 +21,9 @@ open class BookManager(val ignore: List<String>) {
?.filter { !ignore.contains(it!!.getInitials()) }
?.cache() ?: throw NoBooksInstalledException()
var refreshComplete = false;
var refreshComplete = false
{
init {
// TODO: Cleaner way of expressing this?
installedBooks.subscribe(Action1<Book> { result -> },
Action1<Throwable> { error -> },