aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt108
1 files changed, 82 insertions, 26 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
index c167dfdb..8b01e0c3 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt
@@ -1,5 +1,7 @@
package com.pitchedapps.frost
+import android.app.Activity
+import android.content.Intent
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
@@ -11,15 +13,29 @@ import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.Menu
import android.view.MenuItem
-import android.view.ViewTreeObserver
import butterknife.ButterKnife
+import co.zsmb.materialdrawerkt.builders.Builder
+import co.zsmb.materialdrawerkt.builders.accountHeader
+import co.zsmb.materialdrawerkt.builders.drawer
+import co.zsmb.materialdrawerkt.draweritems.badgeable.primaryItem
+import co.zsmb.materialdrawerkt.draweritems.profile.profile
+import com.mikepenz.materialdrawer.AccountHeader
import com.mikepenz.materialdrawer.Drawer
+import com.pitchedapps.frost.dbflow.CookieModel
import com.pitchedapps.frost.dbflow.loadFbTabs
import com.pitchedapps.frost.dbflow.saveAsync
+import com.pitchedapps.frost.events.FbAccountEvent
+import com.pitchedapps.frost.facebook.FbCookie.switchUser
import com.pitchedapps.frost.facebook.FbTab
+import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL
import com.pitchedapps.frost.fragments.BaseFragment
import com.pitchedapps.frost.fragments.WebFragment
-import com.pitchedapps.frost.utils.*
+import com.pitchedapps.frost.utils.Changelog
+import com.pitchedapps.frost.utils.bindView
+import com.pitchedapps.frost.utils.toDrawable
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
class MainActivity : AppCompatActivity() {
@@ -29,15 +45,25 @@ class MainActivity : AppCompatActivity() {
val fab: FloatingActionButton by bindView(R.id.fab)
val tabs: TabLayout by bindView(R.id.tabs)
lateinit var drawer: Drawer
+ lateinit var drawerHeader: AccountHeader
+ lateinit var cookies: ArrayList<CookieModel>
+
+ companion object {
+ const val EXTRA_COOKIES = "extra_cookies"
+ fun launch(activity: Activity, cookies: List<CookieModel>) {
+ val intent = (Intent(activity, MainActivity::class.java))
+ intent.putParcelableArrayListExtra(EXTRA_COOKIES, ArrayList(cookies))
+ activity.startActivity(intent)
+ activity.finish()
+ }
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
-// SwipeBackHelper.onCreate(this)
-// SwipeBackHelper.getCurrentPage(this).setSwipeBackEnable(false)
setContentView(R.layout.activity_main)
ButterKnife.bind(this)
setSupportActionBar(toolbar)
-
+ cookies = intent.extras.getParcelableArrayList<CookieModel>(EXTRA_COOKIES)
adapter = SectionsPagerAdapter(supportFragmentManager, loadFbTabs())
viewPager.adapter = adapter
viewPager.offscreenPageLimit = 5
@@ -56,42 +82,63 @@ class MainActivity : AppCompatActivity() {
}
})
setupTabs()
+ setupDrawer(savedInstanceState)
fab.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
}
-
- override fun onPostCreate(savedInstanceState: Bundle?) {
- super.onPostCreate(savedInstanceState)
-// SwipeBackHelper.onPostCreate(this)
- }
-
- override fun onDestroy() {
- super.onDestroy()
-// SwipeBackHelper.onDestroy(this)
- }
-
fun setupTabs() {
-
viewPager.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabs))
tabs.addOnTabSelectedListener(TabLayout.ViewPagerOnTabSelectedListener(viewPager))
-// tabs.setupWithViewPager(viewPager)
adapter.pages.forEach { tabs.addTab(tabs.newTab().setIcon(it.icon.toDrawable(this))) }
}
+ fun setupDrawer(savedInstanceState: Bundle?) {
+ drawer = drawer {
+ toolbar = this@MainActivity.toolbar
+ savedInstance = savedInstanceState
+ translucentStatusBar = false
+ drawerHeader = accountHeader {
+ cookies.forEach {
+ profile(name = it.name ?: "") {
+ iconUrl = PROFILE_PICTURE_URL(it.id)
+ }
+ }
+ onProfileChanged { _, profile, current ->
+ if (current) WebOverlayActivity.newInstance(this@MainActivity, FbTab.PROFILE)
+ else switchUser(profile.name.text, -1)
+ false
+ }
+ }
+// profile("a") {
+//
+// }
+// if (Prefs.userId != Prefs.userIdDefault) {
+// profile("a")
+// }
+ primaryItem(FbTab.ACTIVITY_LOG)
+ primaryItem(FbTab.PHOTOS)
+ primaryItem(FbTab.GROUPS)
+ }
+ }
+
+ fun Builder.primaryItem(item: FbTab) = this.primaryItem(item.titleId) {
+ iicon = item.icon
+ identifier = item.titleId.toLong()
+ onClick { _ ->
+ WebOverlayActivity.newInstance(this@MainActivity, item.url)
+ false
+ }
+ }
override fun onCreateOptionsMenu(menu: Menu): Boolean {
- // Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
when (item.itemId) {
R.id.action_settings -> {
// startActivity(Intent(this, LoginActivity::class.java))
@@ -119,10 +166,6 @@ class MainActivity : AppCompatActivity() {
val currentFragment: BaseFragment
get() = supportFragmentManager.findFragmentByTag("android:switcher:${R.id.container}:${viewPager.currentItem}") as BaseFragment
- /**
- * A [FragmentPagerAdapter] that returns a fragment corresponding to
- * one of the sections/tabs/pages.
- */
inner class SectionsPagerAdapter(fm: FragmentManager, val pages: List<FbTab>) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int) = WebFragment.newInstance(position, pages[position].url)
@@ -131,4 +174,17 @@ class MainActivity : AppCompatActivity() {
override fun getPageTitle(position: Int): CharSequence = getString(pages[position].titleId)
}
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun accountEvent(event: FbAccountEvent) = event.execute(drawerHeader)
+
+ override fun onStart() {
+ super.onStart();
+ EventBus.getDefault().register(this);
+ }
+
+ override fun onStop() {
+ EventBus.getDefault().unregister(this);
+ super.onStop();
+ }
}