package Ġcom . app . kotlin mv ps ample . presentation . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . app . kotlin mv ps ample . R Ċ import Ġcom . app . kotlin mv ps ample . databinding . Layout Custom Toolbar Binding Ċ import Ġcom . app . kotlin mv ps ample . domain . model . ui . Custom Toolbar Model Ċ import Ġcom . app . kotlin mv ps ample . presentation . presentation Extension . visible Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠG eras imos Ġon Ġ 3 0 / 1 2 / 2 0 2 1 Ċ Ġ* Ċ Ġ* Ġ ĠCustom ĠToolbar Ġthat Ġim it ates Ġthe Ġnative ĠToolbar . Ċ Ġ* Ġ ĠThis Ġview Ġextends Ġthe ĠFrame Layout Ġand Ġinfl ates Ġa Ġcustom Ġlayout . Ċ Ġ*/ Ċ class ĠCustom Toolbar ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠFrame Layout ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtoolbar Binding : ĠLayout Custom Toolbar Binding Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLayout Custom Toolbar Binding . inflate ( LayoutInflater . from ( context ), Ġthis , Ġfalse ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠWeak Reference < Back Button Listener ?> ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġadd View ( toolbar Binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġattribute Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Custom Toolbar ) ĊĠĠĠĠĠĠĠ ĠsetTitle ( attribute Array . getString ( R . style able . Custom Toolbar _ title ) Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġattribute Array . recycle () ĊĠĠĠĠĠĠĠ Ġtoolbar Binding . back Button View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. get ()?. on Back Button CL ick Listener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġa Ġweak Ġreference Ġof ĠBack Button Listener Ġinterface ĠBack Button Listener ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġof Ġtype ĠWeak Reference < Back Button Listener > ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Listener ( listener : ĠWeak Reference < Back Button Listener ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvide Ġa ĠCustom Toolbar Model Ġto Ġset Ġthe Ġview Ġof ĠCustom Toolbar ĊĠĠĠĠ Ġ* Ġ@ param Ġcustom Toolbar Model Ġof Ġtype Ġ[ Custom Toolbar Model ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset View ( custom Toolbar Model : ĠCustom Toolbar Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar Binding . title TextView . text Ġ= Ġcontext ?. getString ( custom Toolbar Model . title ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġtoolbar Binding . back Button View . visible ( custom Toolbar Model . enable Back Button ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe ĠToolbar Ġtitle ĊĠĠĠĠ Ġ* Ġ@ param Ġtitle Ġof Ġtype ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetTitle ( title : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar Binding . title TextView . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġtoolbar Binding . title TextView . setText Appearance ( R . style . Toolbar _ TextStyle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom Ġtoolbar Ġinterface Ġfor Ġon Ġback Ġbutton Ġclick Ġlistener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠBack Button Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Back Button CL ick Listener () ĊĠĠĠ Ġ} Ċ }