package Ġorg . fo ss as ia . open event . general . utils Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Intent Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġorg . fo ss as ia . open event . general . R Ċ import Ġtim ber . log . Tim ber Ċ Ċ object ĠUtils Ġ{ ĊĊĠĠĠ Ġfun Ġopen Url ( context : ĠContext , Ġlink : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġurl Ġ= Ġlink ĊĠĠĠĠĠĠĠ Ġif Ġ(! url . startsWith (" http :// ") Ġ&& Ġ! url . startsWith (" https :// ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" https :// $ url " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠCustom Tabs Intent . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( Context Compat . getColor ( context , ĠR . color . color Primary Dark )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Close Button Icon ( Bitmap Factory . decode Resource ( context . resources , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ arrow _ back _ white _ c ct _ 2 4 dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Animations ( context , ĠR . anim . slide _ in _ right , ĠR . anim . slide _ out _ left ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Exit Animations ( context , ĠR . anim . slide _ in _ left , ĠR . anim . slide _ out _ right ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch Url ( context , ĠUri . parse ( url )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow No Internet Dialog ( context : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( context ?. resources ?. getString ( R . string . no _ internet _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( context ?. resources ?. getString ( R . string . ok )) Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . cancel () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Soft Keyboard ( context : ĠContext ?, Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext ?. getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) ĊĠĠĠĠĠĠĠ Ġif Ġ( manager Ġis ĠInput Method Manager ) Ġmanager . show Soft Input ( view , ĠInput Method Manager . RESULT _ UN CHANGED _ SHO WN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Soft Keyboard ( context : ĠContext ?, Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Manager : ĠInput Method Manager Ġ= Ġcontext ?. getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġinput Manager . hide Soft Input From Window ( view . window Token , ĠInput Method Manager . SHOW _ FOR CED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck And Load Fragment ( ĊĠĠĠĠĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠĠĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġframe Layout : ĠInt , ĊĠĠĠĠĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsaved Fragment Ġ= Ġfragment Manager . find Fragment By Tag ( fragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( saved Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Fragment ( fragment Manager , Ġsaved Fragment , Ġframe Layout , ĠaddTo Back Stack ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Loading Ġfragment Ġfrom Ġstack Ġ${ fragment :: class . java }") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Fragment ( fragment Manager , Ġfragment , Ġframe Layout , ĠaddTo Back Stack ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Fragment ( ĊĠĠĠĠĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠĠĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġframe Layout : ĠInt , ĊĠĠĠĠĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Transaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( frame Layout , Ġfragment , Ġfragment :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( addTo Back Stack ) Ġfragment Transaction . addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠ Ġfragment Transaction . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequire Drawable (@ NonNull Ġcontext : ĠContext , Ġ@ Drawable Res Ġres Id : ĠInt ) Ġ= ĠAppCompat Resources ĊĠĠĠĠĠĠĠ Ġ. get Drawable ( context , Ġres Id ) Ġ?: Ġthrow ĠIllegalStateException (" Drawable Ġshould Ġnot Ġbe Ġnull ") ĊĊĠĠĠ Ġfun Ġget Anim Fade (): ĠNav Options Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNav Options . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . set Enter Anim ( R . anim . fade _ in ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Exit Anim ( R . anim . fade _ out ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Pop Enter Anim ( R . anim . fade _ in ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Pop Exit Anim ( R . anim . fade _ out ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Anim Slide (): ĠNav Options Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNav Options . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . set Enter Anim ( R . anim . slide _ in _ right ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Exit Anim ( R . anim . slide _ out _ left ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Pop Enter Anim ( R . anim . slide _ in _ left ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Pop Exit Anim ( R . anim . slide _ out _ right ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnav Anim Visible ( navigation : ĠBottom Navigation View ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( navigation ?. visibility Ġ== ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . animation Ġ= ĠAnimation Utils . load Animation ( context , ĠR . anim . slide _ up ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnav Anim G one ( navigation : ĠBottom Navigation View ?, Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( navigation ?. visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . animation Ġ= ĠAnimation Utils . load Animation ( context , ĠR . anim . slide _ down ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ