1
0
mirror of https://github.com/AllanWang/Frost-for-Facebook.git synced 2024-09-19 23:21:34 +02:00

Remove extra vars and reattach onBackPress

This commit is contained in:
Allan Wang 2019-12-26 17:04:17 -08:00
parent 6779b1118d
commit 454872d712
No known key found for this signature in database
GPG Key ID: C93E3F9C679D7A56
2 changed files with 76 additions and 68 deletions

View File

@ -118,18 +118,9 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
override val frameWrapper: FrameLayout get() = drawerWrapperBinding.mainContainer
lateinit var drawerWrapperBinding: ActivityMainDrawerWrapperBinding
lateinit var contentBinding: ActivityMainContentBinding
val viewPager: FrostViewPager get() = contentBinding.viewpager
val fab: FloatingActionButton get() =contentBinding.fab
val toolbar: Toolbar get() = contentBinding.toolbar
val cookieDao: CookieDao by inject()
val genericDao: GenericDao by inject()
/*
* Components with the same id in multiple layout files
*/
val tabs: TabLayout get() = contentBinding.tabs
val appBar: AppBarLayout get() = contentBinding.appbar
interface ActivityMainContentBinding {
val root: View
val toolbar: Toolbar
@ -142,8 +133,6 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
protected var lastPosition = -1
override var videoViewer: FrostVideoViewer? = null
// private lateinit var drawer: Drawer
// private lateinit var drawerHeader: AccountHeader
private var lastAccessTime = -1L
override var searchView: SearchView? = null
@ -180,15 +169,18 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
}
drawerWrapperBinding.mainContainer.addView(contentBinding.root)
setFrostColors {
toolbar(toolbar)
themeWindow = false
header(appBar)
background(viewPager)
with(contentBinding) {
setFrostColors {
toolbar(toolbar)
themeWindow = false
header(appbar)
background(viewpager)
}
setSupportActionBar(toolbar)
viewpager.adapter = adapter
tabs.setBackgroundColor(Prefs.mainActivityLayout.backgroundColor())
}
setSupportActionBar(toolbar)
viewPager.adapter = adapter
tabs.setBackgroundColor(Prefs.mainActivityLayout.backgroundColor())
onNestedCreate(savedInstanceState)
L.i { "Main finished loading UI in ${System.currentTimeMillis() - start} ms" }
launch {
@ -212,7 +204,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
// setupDrawer(savedInstanceState)
L.i { "Main started in ${System.currentTimeMillis() - start} ms" }
initFab()
contentBinding.initFab()
lastAccessTime = System.currentTimeMillis()
}
@ -224,46 +216,52 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
private var hasFab = false
private var shouldShow = false
private fun initFab() {
private fun ActivityMainContentBinding.initFab() {
hasFab = false
shouldShow = false
fab.backgroundTintList = ColorStateList.valueOf(Prefs.headerColor.withMinAlpha(200))
fab.hide()
appBar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
if (!hasFab) return@OnOffsetChangedListener
val percent = abs(verticalOffset.toFloat() / appBarLayout.totalScrollRange)
val shouldShow = percent < 0.2
if (this.shouldShow != shouldShow) {
this.shouldShow = shouldShow
if (this@BaseMainActivity.shouldShow != shouldShow) {
this@BaseMainActivity.shouldShow = shouldShow
fab.showIf(shouldShow)
}
})
}
override fun showFab(iicon: IIcon, clickEvent: () -> Unit) {
hasFab = true
fab.setOnClickListener { clickEvent() }
if (shouldShow) {
if (fab.isShown) {
fab.fadeScaleTransition {
setIcon(iicon, Prefs.iconColor)
with(contentBinding) {
hasFab = true
fab.setOnClickListener { clickEvent() }
if (shouldShow) {
if (fab.isShown) {
fab.fadeScaleTransition {
setIcon(iicon, Prefs.iconColor)
}
return
}
return
}
fab.setIcon(iicon, Prefs.iconColor)
fab.showIf(shouldShow)
}
fab.setIcon(iicon, Prefs.iconColor)
fab.showIf(shouldShow)
}
override fun hideFab() {
hasFab = false
fab.setOnClickListener(null)
fab.hide()
with(contentBinding) {
hasFab = false
fab.setOnClickListener(null)
fab.hide()
}
}
fun tabsForEachView(action: (position: Int, view: BadgedIcon) -> Unit) {
(0 until tabs.tabCount).asSequence().forEach { i ->
action(i, tabs.getTabAt(i)!!.customView as BadgedIcon)
with(contentBinding) {
(0 until tabs.tabCount).asSequence().forEach { i ->
action(i, tabs.getTabAt(i)!!.customView as BadgedIcon)
}
}
}
@ -407,7 +405,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
toolbar.tint(Prefs.iconColor)
contentBinding.toolbar.tint(Prefs.iconColor)
setMenuIcons(
menu, Prefs.iconColor,
R.id.action_settings to GoogleMaterial.Icon.gmd_settings,
@ -522,8 +520,6 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
}
private val STATE_FORCE_FALLBACK = "frost_state_force_fallback"
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
adapter.saveInstanceState(outState)
@ -563,14 +559,18 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
override fun collapseAppBar() {
appBar.post { appBar.setExpanded(false) }
with(contentBinding) {
appbar.post { appbar.setExpanded(false) }
}
}
override fun backConsumer(): Boolean {
// if (drawer.isDrawerOpen) {
// drawer.closeDrawer()
// return true
// }
with (drawerWrapperBinding) {
if (drawer.isDrawerOpen(navigation)) {
drawer.closeDrawer(navigation)
return true
}
}
if (currentFragment.onBackPressed()) return true
if (Prefs.exitConfirmation) {
materialDialog {
@ -588,7 +588,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
inline val currentFragment
get() = supportFragmentManager.findFragmentByTag("android:switcher:${R.id.container}:${viewPager.currentItem}") as BaseFragment
get() = supportFragmentManager.findFragmentByTag("android:switcher:${R.id.container}:${contentBinding.viewpager.currentItem}") as BaseFragment
override fun reloadFragment(fragment: BaseFragment) {
runOnUiThread { adapter.reloadFragment(fragment) }
@ -607,25 +607,27 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
this.pages.clear()
this.pages.addAll(pages)
notifyDataSetChanged()
tabs.removeAllTabs()
this.pages.forEachIndexed { index, fbItem ->
tabs.addTab(
tabs.newTab()
.setCustomView(BadgedIcon(this@BaseMainActivity).apply {
iicon = fbItem.icon
}.also {
it.setAllAlpha(if (index == 0) SELECTED_TAB_ALPHA else UNSELECTED_TAB_ALPHA)
})
)
}
lastPosition = 0
viewPager.setCurrentItem(0, false)
viewPager.offscreenPageLimit = pages.size
viewPager.post {
if (!fragmentChannel.isClosedForSend) {
fragmentChannel.offer(0)
with(contentBinding) {
tabs.removeAllTabs()
this@SectionsPagerAdapter.pages.forEachIndexed { index, fbItem ->
tabs.addTab(
tabs.newTab()
.setCustomView(BadgedIcon(this@BaseMainActivity).apply {
iicon = fbItem.icon
}.also {
it.setAllAlpha(if (index == 0) SELECTED_TAB_ALPHA else UNSELECTED_TAB_ALPHA)
})
)
}
} // trigger hook so title is set
lastPosition = 0
viewpager.setCurrentItem(0, false)
viewpager.offscreenPageLimit = pages.size
viewpager.post {
if (!fragmentChannel.isClosedForSend) {
fragmentChannel.offer(0)
}
} // trigger hook so title is set
}
}
fun saveInstanceState(outState: Bundle) {
@ -670,14 +672,19 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
}
private val lowerVideoPaddingPointF = PointF()
override val lowerVideoPadding: PointF
get() =
get() {
if (Prefs.mainActivityLayout == MainActivityLayout.BOTTOM_BAR)
PointF(0f, toolbar.height.toFloat())
lowerVideoPaddingPointF.set(0f, contentBinding.toolbar.height.toFloat())
else
PointF(0f, 0f)
lowerVideoPaddingPointF.set(0f, 0f)
return lowerVideoPaddingPointF
}
companion object {
private const val STATE_FORCE_FALLBACK = "frost_state_force_fallback"
const val SELECTED_TAB_ALPHA = 255f
const val UNSELECTED_TAB_ALPHA = 128f
}

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/drawer"
android:layout_height="match_parent"
android:fitsSystemWindows="true">