ToolbarManager.kt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.ted.weather.ui.activity
  2. import android.support.v7.graphics.drawable.DrawerArrowDrawable
  3. import android.support.v7.widget.RecyclerView
  4. import android.support.v7.widget.Toolbar
  5. import com.ted.weather.ui.App
  6. import com.ted.weather.R
  7. import com.ted.weather.extensions.ctx
  8. import com.ted.weather.extensions.slideEnter
  9. import com.ted.weather.extensions.slideExit
  10. import org.jetbrains.anko.startActivity
  11. import org.jetbrains.anko.toast
  12. interface ToolbarManager {
  13. val toolbar: Toolbar
  14. var toolbarTitle: String
  15. get() = toolbar.title.toString()
  16. set(value) {
  17. toolbar.title = value
  18. }
  19. fun initToolbar() {
  20. toolbar.inflateMenu(R.menu.menu_main)
  21. toolbar.setOnMenuItemClickListener {
  22. when (it.itemId) {
  23. R.id.action_settings -> toolbar.ctx.startActivity<SettingsActivity>()
  24. else -> App.instance.toast("Unknown option")
  25. }
  26. true
  27. }
  28. }
  29. fun enableHomeAsUp(up: () -> Unit) {
  30. toolbar.navigationIcon = createUpDrawable()
  31. toolbar.setNavigationOnClickListener { up() }
  32. }
  33. private fun createUpDrawable() = DrawerArrowDrawable(toolbar.ctx).apply { progress = 1f }
  34. fun attachToScroll(recyclerView: RecyclerView) {
  35. recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
  36. override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
  37. if (dy > 0) toolbar.slideExit() else toolbar.slideEnter()
  38. }
  39. })
  40. }
  41. }