package Ġme . kal man b nc z . pi geon . presentation Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . widget . Drawer Layout Ċ import Ġandroid . support . v 7 . app . ActionBar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġandroid . view . View Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġme . kal man b nc z . pi geon . R ĊĊ Ċ /** Ċ Ġ* ĠThis Ġfragment Ġis Ġused Ġto Ġhold Ġgeneral Ġfragment Ġlogic , Ġthat Ġis Ġrelevant Ġin Ġall Ġscreens Ċ Ġ* ĠCreated Ġby Ġkal man . b enc ze Ġon Ġ 2 0 / 1 2 / 2 0 1 7 . Ċ Ġ*/ Ċ abstract Ġclass ĠBase Fragment Ġ: ĠD agger Fragment (), ĠFragment Manager . On Back Stack Changed Listener Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġaction Bar : ĠAction Bar ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġvar Ġdrawer Layout : ĠDraw er Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġvar Ġm Ui Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSn ackBar Ġreference Ġused Ġfor Ġhiding Ġprevious Ġsn ackbar Ġon Ġfrequent Ġcalls Ġon Ġshow Sn ackBar () Ġmethods ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġvar Ġm Sn ackBar : ĠSn ackbar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġretain Instance Ġ= Ġtrue // we Ġretain Ġall Ġfragments Ġby Ġdefault ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= Ġview . findViewById ( R . id . toolbar ) Ġas ĠToolbar ĊĠĠĠĠĠĠĠ Ġdrawer Layout Ġ= Ġview . findViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). set Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener ({ Ġv Ġ-> Ġactivity !!. on Back Pressed () Ġ}) ĊĠĠĠĠĠĠĠ Ġaction Bar Ġ= Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġfragment Manager !!. add On Back Stack Changed Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager !!. remove On Back Stack Changed Listener ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġwill Ġenable Ġor Ġdisable Ġback Ġbutton Ġfrom Ġevery Ġfragment Ġdepending Ġon Ġthe Ġback stack ĊĠĠĠĠ Ġ* Ġif Ġback stack <= 1 Ġthen Ġback Ġbutton Ġfrom Ġaction bar Ġwill Ġbe Ġdisabled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Back Stack Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnavigation Stack IsEmpty Ġ= Ġfragment Manager !!. back Stack Entry Count Ġ<= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( action Bar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar !!. set Display Home As Up Enabled (! navigation Stack IsEmpty ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer Layout Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout !!. set Drawer Lock Mode ( if Ġ( navigation Stack IsEmpty ) ĠDraw er Layout . LOCK _ MODE _ UNLOCK ED Ġelse ĠDraw er Layout . LOCK _ MODE _ LOCK ED _ CLOSED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġshow Sn ackBar ( res Id : ĠInt , Ġduration : ĠInt , Ġbutton : ĠString ? Ġ= Ġnull , ĠonClick : ĠRunnable ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Sn ackBar ( getText ( res Id ), Ġduration , Ġbutton , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Sn ackBar ( res Id : ĠInt , Ġduration : ĠInt , Ġbutton Res Id : ĠInt , ĠonClick : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Sn ackBar ( getText ( res Id ), Ġduration , ĠgetText ( button Res Id ), ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġshow Sn ackBar ( text : ĠCharSequence , Ġduration : ĠInt , Ġbutton : ĠCharSequence ? Ġ= Ġnull , ĠonClick : ĠRunnable ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Ui Handler . post ( object Ġ: ĠRunnable Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġvar Ġshould Go Up : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Sn ackBar Ġ!= Ġnull Ġ&& Ġm Sn ackBar !!. is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sn ackBar !!. setText ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sn ackBar !!. duration Ġ= Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Ġ!= Ġnull Ġ&& ĠonClick Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sn ackBar !!. setAction ( button ) Ġ{ Ġv Ġ-> ĠonClick . run () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sn ackBar Ġ= ĠSn ackbar . make ( view , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Ġ!= Ġnull Ġ&& ĠonClick Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sn ackBar !!. setAction ( button ) Ġ{ Ġv Ġ-> ĠonClick . run () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Go Up Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sn ackBar !!. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ