@@ -3,28 +3,45 @@ package jp.co.seesaa.geckour.picrossmaker.activity
33import android.content.DialogInterface
44import android.databinding.DataBindingUtil
55import android.os.Bundle
6+ import android.support.design.widget.AppBarLayout
67import android.support.design.widget.NavigationView
7- import android.support.v4.view.GravityCompat
88import android.util.Size
9+ import android.view.Gravity
10+ import android.view.LayoutInflater
911import android.view.Menu
1012import android.view.MenuItem
13+ import android.widget.Toolbar
1114import com.trello.rxlifecycle2.components.RxActivity
1215import jp.co.seesaa.geckour.picrossmaker.fragment.ProblemsFragment
1316import jp.co.seesaa.geckour.picrossmaker.R
1417import jp.co.seesaa.geckour.picrossmaker.databinding.ActivityMainBinding
1518import jp.co.seesaa.geckour.picrossmaker.fragment.DraftProblemsFragment
1619import jp.co.seesaa.geckour.picrossmaker.fragment.EditorFragment
20+ import jp.co.seesaa.geckour.picrossmaker.fragment.SearchFragment
1721import jp.co.seesaa.geckour.picrossmaker.util.MyAlertDialogFragment
18- import jp.co.seesaa.geckour.picrossmaker.util.MyAlertDialogFragment.Companion .showSnackbar
22+ import jp.co.seesaa.geckour.picrossmaker.util.ViewUtil .showSnackbar
1923
2024class MainActivity : RxActivity (), NavigationView.OnNavigationItemSelectedListener, EditorFragment.IListener, MyAlertDialogFragment.IListener {
2125
2226 lateinit var binding: ActivityMainBinding
27+ lateinit var toolbar: Toolbar
28+ val layoutListenerForClear by lazy { { (toolbar.layoutParams as AppBarLayout .LayoutParams ).scrollFlags = 0 } }
29+ val layoutListenerForSet by lazy { {
30+ (toolbar.layoutParams as AppBarLayout .LayoutParams ).scrollFlags =
31+ AppBarLayout .LayoutParams .SCROLL_FLAG_SCROLL or AppBarLayout .LayoutParams .SCROLL_FLAG_ENTER_ALWAYS
32+ } }
2333
2434 override fun onCreate (savedInstanceState : Bundle ? ) {
2535 super .onCreate(savedInstanceState)
2636 binding = DataBindingUtil .setContentView(this , R .layout.activity_main)
27- setActionBar(binding.appBarMain.toolbar)
37+ binding.appBarMain?.appBar?.apply {
38+ toolbar = (LayoutInflater .from(context).inflate(R .layout.toolbar_main, null ) as Toolbar ).apply {
39+ viewTreeObserver.addOnGlobalLayoutListener(layoutListenerForClear)
40+ }
41+ removeAllViews()
42+ addView(toolbar)
43+ setActionBar(toolbar)
44+ }
2845
2946 binding.navView.setNavigationItemSelectedListener(this )
3047
@@ -35,11 +52,9 @@ class MainActivity : RxActivity(), NavigationView.OnNavigationItemSelectedListen
3552 }
3653
3754 override fun onBackPressed () {
38- val drawer = binding.drawerLayout
39- if (drawer.isDrawerOpen(GravityCompat .START )) {
40- drawer.closeDrawer(GravityCompat .START )
41- } else {
42- super .onBackPressed()
55+ binding.drawerLayout.apply {
56+ if (isDrawerOpen(Gravity .START )) closeDrawer(Gravity .START )
57+ else super .onBackPressed()
4358 }
4459 }
4560
@@ -56,12 +71,12 @@ class MainActivity : RxActivity(), NavigationView.OnNavigationItemSelectedListen
5671 when (id) {
5772 R .id.nav_problem -> {
5873 val fragment = ProblemsFragment .newInstance()
59- fragmentManager.beginTransaction().replace(R .id.container, fragment).addToBackStack(null ).commit()
74+ fragmentManager.beginTransaction().replace(R .id.container, fragment).addToBackStack(ProblemsFragment . TAG ).commit()
6075 }
6176
6277 R .id.nav_draft -> {
6378 val fragment = DraftProblemsFragment .newInstance()
64- fragmentManager.beginTransaction().replace(R .id.container, fragment).addToBackStack(null ).commit()
79+ fragmentManager.beginTransaction().replace(R .id.container, fragment).addToBackStack(DraftProblemsFragment . TAG ).commit()
6580 }
6681
6782 R .id.nav_editor -> {
@@ -75,27 +90,25 @@ class MainActivity : RxActivity(), NavigationView.OnNavigationItemSelectedListen
7590 fragment.show(fragmentManager, MyAlertDialogFragment .getTag(requestCode))
7691 }
7792
78- R .id.nav_setting -> {
79-
80- }
81-
82- R .id.nav_share -> {
93+ R .id.nav_setting -> {}
8394
95+ R .id.nav_search -> {
96+ val fragment = SearchFragment .createInstance()
97+ fragmentManager.beginTransaction().replace(R .id.container, fragment).addToBackStack(SearchFragment .tag).commit()
8498 }
8599 }
86100
87- binding.drawerLayout.closeDrawer(GravityCompat .START )
101+ binding.drawerLayout.closeDrawer(Gravity .START )
88102 return true
89103 }
90104
91105 override fun onCanvasSizeError (size : Size ) {
92- showSnackbar( binding.appBarMain.contentMain.container, R .string.problem_fragment_error_invalid_size)
106+ binding.appBarMain? .contentMain? .container?. let { showSnackbar(it , R .string.problem_fragment_error_invalid_size) }
93107 }
94108
95109 override fun onResultAlertDialog (dialogInterface : DialogInterface , requestCode : MyAlertDialogFragment .RequestCode , resultCode : Int , result : Any? ) {
96110 when (resultCode) {
97- DialogInterface .BUTTON_POSITIVE ->
98- onPositive(requestCode, result)
111+ DialogInterface .BUTTON_POSITIVE -> onPositive(requestCode, result)
99112 }
100113 dialogInterface.dismiss()
101114 }
@@ -105,12 +118,7 @@ class MainActivity : RxActivity(), NavigationView.OnNavigationItemSelectedListen
105118 MyAlertDialogFragment .RequestCode .DEFINE_SIZE -> {
106119 (result as ? Size )?.let {
107120 val fragment = EditorFragment .newInstance(it, this @MainActivity)
108- if (fragment != null ) {
109- fragmentManager.beginTransaction()
110- .replace(R .id.container, fragment)
111- .addToBackStack(null )
112- .commit()
113- }
121+ if (fragment != null ) fragmentManager.beginTransaction().replace(R .id.container, fragment).addToBackStack(EditorFragment .TAG ).commit()
114122 }
115123 }
116124 else -> {}
0 commit comments