package Ġcom . mm rx . gym rec . ui . framework Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . mm rx . gym rec . R Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ /** Ċ Ġ* Ġ ç®¡çĲĨ é¡µéĿ¢ éĺŁåĪĹ Ċ Ġ* ĠCreated Ġby Ġmm rx Ġon Ġ 1 7 / 1 2 / 1 6 . Ċ Ġ*/ Ċ class ĠPage Queue Ġconstructor ( val Ġcontext : ĠContext , val Ġroot View : ĠViewGroup ) Ġ: ĠI Page Manager Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext , root View : ĠViewGroup , float Listener : ĠI Floating Button Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, tool Bar : ĠToolbar Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: this ( context , Ġroot View ){ ĊĠĠĠĠĠĠĠ Ġthis . float Listener Ġ= Ġfloat Listener ĊĠĠĠĠĠĠĠ Ġthis . tool Bar Ġ= Ġtool Bar ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// é¡µéĿ¢ æłĪ ĊĠĠĠ Ġval Ġpage Queue : ĠStack < I Page > Ġ= ĠStack () ĊĠĠĠ Ġvar Ġfloat Listener : ĠI Floating Button Listener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtool Bar : ĠToolbar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġgo Back (): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġvar Ġtop Page : ĠI Page ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġshow Page : ĠI Page ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif ( page Queue . size Ġ Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtop Page Ġ= Ġpage Queue . peek (); ĊĠĠĠĠĠĠĠ Ġif ( top Page . inner Back ()) Ġreturn Ġtrue Ġelse Ġpage Queue . pop () ĊĊĠĠĠĠĠĠĠ Ġshow Page Ġ= Ġpage Queue . peek (); ĊĊĠĠĠĠĠĠĠ Ġtop Page . on Back Ground () ĊĠĠĠĠĠĠĠ Ġtop Page . on Remove () ĊĠĠĠĠĠĠĠ Ġroot View . removeAll Views () ĊĠĠĠĠĠĠĠ Ġif ( show Page . getContent View (). parent Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( show Page . getContent View (). parent Ġas ĠViewGroup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove View ( show Page . getContent View ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfloat Listener ?. set Vis iable ( show Page . floating Button Vis iable ()) ĊĠĠĠĠĠĠĠ Ġbuild Title Bar ( show Page . build Title Bar ()) ĊĠĠĠĠĠĠĠ Ġroot View . addView ( show Page . getContent View ()) ĊĠĠĠĠĠĠĠ Ġshow Page . on F org round () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgo Back To ( page Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgoto Page ( page Layout Id : ĠInt , Ġmap : ĠHashMap < String , Ġ*> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtop Page : ĠI Page ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġnew Page : ĠI Page Ġ= ĠPage ( context , Ġpage Layout Id ) ĊĠĠĠĠĠĠĠ Ġnew Page . set I Page Manager ( this ) ĊĠĠĠĠĠĠĠ Ġif ( page Queue . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Page Ġ= Ġpage Queue . peek () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtop Page ?. on Back Ground (); ĊĠĠĠĠĠĠĠ Ġval Ġtop Page Level Ġ= Ġtop Page ?. getPage Level () Ġ?: ĠPage . PAGE _ LEVEL _ INVALID ĊĠĠĠĠĠĠĠ Ġ// æĸ°å¢ŀ é¡µéĿ¢ çļĦ æłĪ çŃī çº§ å¤§äºİ æłĪ é¡¶ é¡µéĿ¢ ĊĠĠĠĠĠĠĠ Ġ// æĪĸèĢħ çĽ¸ çŃī ï¼Į æłĪ é¡¶ é¡µ å¼¹ æłĪ ĊĠĠĠĠĠĠĠ Ġif ( new Page . getPage Level () Ġ>= Ġtop Page Level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Page ?. on Back Ground () ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( page Queue . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Queue . pop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Page ?. on Remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıį å¤į å¼¹ æłĪ ï¼Į çĽ´ åĪ° æłĪ é¡¶ é¡µ çŃī çº§ å°ı äºİ å¾ħ åİĭ æłĪ é¡µ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( page Queue . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Queue . peek (). on Remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfloat Listener ?. set Vis iable ( new Page . floating Button Vis iable ()) ĊĠĠĠĠĠĠĠ Ġ// åİĭ æłĪ ĊĠĠĠĠĠĠĠ Ġpage Queue . push ( new Page ) ĊĠĠĠĠĠĠĠ Ġroot View . removeAll Views () ĊĠĠĠĠĠĠĠ Ġbuild Title Bar ( new Page . build Title Bar ()) ĊĠĠĠĠĠĠĠ Ġroot View . addView ( new Page . getContent View ()) ĊĠĠĠĠĠĠĠ Ġif ( map Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Page . receive Param ( map ) ĊĠĠĠĠĠĠĠ Ġnew Page . on F org round () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild Title Bar ( struct : ĠPage Title Struct ? ){ ĊĠĠĠĠĠĠĠ Ġstruct ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å·¦ ä¾§ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . left Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Page Title Type . LEFT _ BACK Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Bar ?. set Navigation Icon ( R . drawable . arrow _ white _ left _ 1 8 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Page Title Type . LEFT _ PERSON _ CENTER Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Bar ?. set Navigation Icon ( R . drawable . person _ center _ white _ 1 8 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Bar ?. set Navigation Icon ( R . drawable . person _ center _ white _ 1 8 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åı³ ä¾§ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . right Type ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! TextUtils . isEmpty ( it . title )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtool Bar ?. title Ġ= Ġit . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Title Bar Action ( action : ĠEnum Page Title Type ?): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġvar Ġtop Page : ĠI Page ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif ( page Queue . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Page Ġ= Ġpage Queue . peek () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġtop Page ?. on Title Bar Action ( action ) Ġ?: Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( action ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Page Title Action . PAGE _ TITLE _ ACTION _ GO _ BACK Ġ-> Ġgo Back () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Page Title Action . PAGE _ TITLE _ ACTION _ PERSON _ CENTER Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠI Floating Button Listener { ĊĠĠĠĠĠĠĠ Ġfun Ġset Vis iable ( vis iable : ĠBoolean ) ĊĠĠĠ Ġ} Ċ }