diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/MainActivity.kt | 108 |
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(); + } } |