aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/web
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-06-03 15:51:36 -0700
committerAllan Wang <me@allanwang.ca>2017-06-03 15:51:36 -0700
commit8ec65f55f85c730e97d5521c1443819435b98208 (patch)
tree6bd4350b3f6e5eda03c95c4a13fd7b7c7f50f2ac /app/src/main/kotlin/com/pitchedapps/frost/web
parenta5aa87bbaef7d2c937cc89295942882d050c3b5c (diff)
downloadfrost-8ec65f55f85c730e97d5521c1443819435b98208.tar.gz
frost-8ec65f55f85c730e97d5521c1443819435b98208.tar.bz2
frost-8ec65f55f85c730e97d5521c1443819435b98208.zip
Add toolbar title listeners
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/web')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt13
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebView.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt20
3 files changed, 26 insertions, 9 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt
index fe3c92e8..ff8637b1 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostChromeClient.kt
@@ -4,20 +4,25 @@ import android.webkit.ConsoleMessage
import android.webkit.WebChromeClient
import android.webkit.WebView
import com.pitchedapps.frost.utils.L
+import io.reactivex.subjects.BehaviorSubject
import io.reactivex.subjects.Subject
/**
* Created by Allan Wang on 2017-05-31.
*/
-class FrostChromeClient(val progressObservable: Subject<Int>) : WebChromeClient() {
+class FrostChromeClient(val progressObservable: Subject<Int>, val titleObservable: BehaviorSubject<String>) : WebChromeClient() {
+
+
override fun onConsoleMessage(consoleMessage: ConsoleMessage): Boolean {
- L.d("Console ${consoleMessage.lineNumber()}: ${consoleMessage.message()}")
+ L.d("Chrome Console ${consoleMessage.lineNumber()}: ${consoleMessage.message()}")
return super.onConsoleMessage(consoleMessage)
}
- override fun onReceivedTitle(view: WebView?, title: String?) {
+ override fun onReceivedTitle(view: WebView, title: String) {
super.onReceivedTitle(view, title)
- L.v("Title $title")
+ if (title.contains("http") || titleObservable.value == title) return
+// L.v("Title $title")
+ titleObservable.onNext(title)
}
override fun onProgressChanged(view: WebView, newProgress: Int) {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebView.kt
index 087e9174..d5fd6391 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebView.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebView.kt
@@ -10,7 +10,9 @@ import android.widget.ProgressBar
import butterknife.ButterKnife
import com.pitchedapps.frost.R
import com.pitchedapps.frost.utils.bindView
+import io.reactivex.Scheduler
import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
/**
* Created by Allan Wang on 2017-06-01.
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt
index b2260b6f..eaee60bc 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt
@@ -11,7 +11,9 @@ import android.view.MotionEvent
import android.view.View
import android.webkit.WebView
import com.pitchedapps.frost.events.FbAccountEvent
-import com.pitchedapps.frost.utils.ObservableContainer
+import io.reactivex.Scheduler
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
import io.reactivex.subjects.BehaviorSubject
import io.reactivex.subjects.Subject
import org.greenrobot.eventbus.EventBus
@@ -27,20 +29,25 @@ import org.greenrobot.eventbus.ThreadMode
*/
class FrostWebViewCore @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
-) : WebView(context, attrs, defStyleAttr), NestedScrollingChild, ObservableContainer<Int> {
+) : WebView(context, attrs, defStyleAttr), NestedScrollingChild {
private val childHelper = NestedScrollingChildHelper(this)
private var lastY: Int = 0
private val scrollOffset = IntArray(2)
private val scrollConsumed = IntArray(2)
private var nestedOffsetY: Int = 0
- override val progressObservable: Subject<Int> //TODO see if we need this
+ val progressObservable: Subject<Int>
+ val titleObservable: Subject<String>
+
+ private val chromeClient: FrostChromeClient
var baseUrl: String? = null
var position: Int = -1
init {
isNestedScrollingEnabled = true
progressObservable = BehaviorSubject.create<Int>()
+ titleObservable = BehaviorSubject.create<String>()
+ chromeClient = FrostChromeClient(progressObservable, titleObservable)
setupWebview()
}
@@ -49,8 +56,8 @@ class FrostWebViewCore @JvmOverloads constructor(
settings.javaScriptEnabled = true
settings.domStorageEnabled = true
setLayerType(View.LAYER_TYPE_HARDWARE, null)
- setWebViewClient(FrostWebViewClient({position}))
- setWebChromeClient(FrostChromeClient(progressObservable))
+ setWebViewClient(FrostWebViewClient({ position }))
+ setWebChromeClient(chromeClient)
}
override fun loadUrl(url: String?) {
@@ -60,6 +67,9 @@ class FrostWebViewCore @JvmOverloads constructor(
fun loadBaseUrl() = loadUrl(baseUrl)
+ fun addTitleListener(subscriber: (title: String) -> Unit, scheduler: Scheduler = AndroidSchedulers.mainThread()): Disposable
+ = titleObservable.observeOn(scheduler).subscribe(subscriber)
+
override fun onTouchEvent(ev: MotionEvent): Boolean {
val event = MotionEvent.obtain(ev)
val action = MotionEventCompat.getActionMasked(event)