package Ġcom . element ary . tasks . navigation . fragments Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . element ary . tasks . core . arch . Binding Fragment Ċ import Ġcom . element ary . tasks . core . arch . Current State Holder Ċ import Ġcom . element ary . tasks . core . utils . Dialog ues Ċ import Ġcom . element ary . tasks . navigation . Fragment Callback Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ abstract Ġclass ĠBase Fragment < B Ġ: ĠView Binding > Ġ: ĠBinding Fragment < B >() Ġ{ ĊĊĠ Ġvar Ġcallback : ĠFragment Callback ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġset ĊĊĠ Ġprotected Ġval Ġcurrent State Holder Ġby Ġinject < Current State Holder >() ĊĠ Ġprotected Ġval Ġprefs Ġ= Ġcurrent State Holder . preferences ĊĠ Ġprotected Ġval Ġdialog ues Ġby Ġinject < Dialog ues >() ĊĠ Ġprotected Ġval Ġis Dark Ġ= Ġcurrent State Holder . theme . is Dark ĊĠ Ġprivate Ġvar Ġm Last Alpha : ĠFloat Ġ= Ġ 0 f ĊĊĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠ Ġif Ġ( callback Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Ġ= Ġcontext Ġas ĠFragment Callback ? ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġto Alpha ( scroll : ĠFloat , Ġmax : ĠFloat Ġ= Ġ 2 5 5 f ): ĠFloat Ġ= Ġscroll Ġ/ Ġmax ĊĊĠ Ġprotected Ġfun Ġset Toolbar Alpha ( alpha : ĠFloat ) Ġ{ ĊĠĠĠ Ġif Ġ( is Removing ) Ġreturn ĊĠĠĠ Ġthis . m Last Alpha Ġ= Ġalpha ĊĠĠĠ Ġcallback ?. on Alpha Update ( alpha ) ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġmove Back () Ġ{ ĊĠĠĠ Ġactivity ?. on Back Pressed () ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġwith Activity ( action : Ġ( Activity ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠ Ġaction . invoke ( it ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġwith Context ( action : Ġ( Context ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠ Ġaction . invoke ( it ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġcan Go Back (): ĠBoolean Ġ= Ġtrue ĊĊĠ Ġopen Ġfun Ġon Back Stack Resume () Ġ{ ĊĠĠĠ Ġcallback ?. setCurrent Fragment ( this ) ĊĠĠĠ Ġcallback ?. on Title Change ( getTitle ()) ĊĠĠĠ Ġset Toolbar Alpha ( m Last Alpha ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġon Back Stack Resume () ĊĠ Ġ} ĊĊĠ Ġabstract Ġfun Ġget Title (): ĠString ĊĊĠ Ġprotected Ġfun Ġnavigate ( function : Ġ() Ġ-> ĠNav Directions ) Ġ{ ĊĠĠĠ Ġsafe Navigation ( function . invoke ()) ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġsafe Navigation ( nav Directions : ĠNav Directions ) Ġ{ ĊĠĠĠ Ġsafe Navigation Ġ{ ĊĠĠĠĠĠ Ġfind Nav Controller (). navigate ( nav Directions ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġsafe Navigation ( function : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġfunction . invoke () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠN EST ED _ SCROLL _ MAX Ġ= Ġ 2 5 5 f ĊĠ Ġ} Ċ } Ċ