diff options
author | Allan Wang <me@allanwang.ca> | 2017-06-25 23:04:43 -0700 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2017-06-25 23:04:43 -0700 |
commit | c4f936a8a43692cca387f00a25cd70bcad2764f2 (patch) | |
tree | 545478c2981252cf099336f2e8d515ed4da615de /app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt | |
parent | b6530cc36d049a292fe52ea21893c5362155a3b7 (diff) | |
download | frost-c4f936a8a43692cca387f00a25cd70bcad2764f2.tar.gz frost-c4f936a8a43692cca387f00a25cd70bcad2764f2.tar.bz2 frost-c4f936a8a43692cca387f00a25cd70bcad2764f2.zip |
Half framework of the search view
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt index b8feef0f..cccb3e0c 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt @@ -9,6 +9,7 @@ import android.support.design.widget.FloatingActionButton import android.support.design.widget.Snackbar import android.support.design.widget.TabLayout import android.support.v4.app.ActivityOptionsCompat +import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentPagerAdapter import android.support.v4.view.ViewPager @@ -39,13 +40,15 @@ import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL import com.pitchedapps.frost.fragments.WebFragment import com.pitchedapps.frost.utils.* import com.pitchedapps.frost.views.BadgedIcon +import com.pitchedapps.frost.web.FrostWebViewSearch import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import io.reactivex.subjects.PublishSubject import org.jsoup.Jsoup import java.util.concurrent.TimeUnit -class MainActivity : BaseActivity() { +class MainActivity : BaseActivity(), FrostWebViewSearch.SearchContract { lateinit var adapter: SectionsPagerAdapter val toolbar: Toolbar by bindView(R.id.toolbar) @@ -58,6 +61,16 @@ class MainActivity : BaseActivity() { var webFragmentObservable = PublishSubject.create<Int>()!! var lastPosition = -1 val headerBadgeObservable = PublishSubject.create<String>() + var hiddenSearchView: FrostWebViewSearch? = null + var firstLoadFinished = false + set(value) { + L.d("First fragment load has finished") + field = value + if (value && hiddenSearchView == null) { + hiddenSearchView = FrostWebViewSearch(this, this) + currentFragment.frostWebView.addView(hiddenSearchView) + } + } companion object { const val FRAGMENT_REFRESH = 99 @@ -283,6 +296,21 @@ class MainActivity : BaseActivity() { onClick { _ -> onClick(); false } } + + /** + * Something happened where the normal search function won't work + * Fallback to overlay style + */ + override fun searchOverlayError() { + hiddenSearchView = null + //todo remove true searchview and add contract + } + + //todo add args + override fun emitSearchResponse() { + + } + fun refreshAll() { webFragmentObservable.onNext(FRAGMENT_REFRESH) } @@ -331,7 +359,24 @@ class MainActivity : BaseActivity() { inner class SectionsPagerAdapter(fm: FragmentManager, val pages: List<FbTab>) : FragmentPagerAdapter(fm) { - override fun getItem(position: Int) = WebFragment(pages[position], position) + override fun getItem(position: Int): Fragment { + val fragment = WebFragment(pages[position], position) + //If first load hasn't occurred, add a listener + if (!firstLoadFinished) { + var disposable: Disposable? = null + fragment.post { + disposable = it.web.refreshObservable.subscribe { + if (!it) { + //Ensure first load finisher only happens once + if (!firstLoadFinished) firstLoadFinished = true + disposable?.dispose() + disposable = null + } + } + } + } + return fragment + } override fun getCount() = pages.size |