package Ġn iger ia . network . us sd . bank . cod Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġn iger ia . network . us sd . bank . cod . databinding . Activity Main Binding Ċ import Ġn iger ia . network . us sd . bank . cod . ui . bank . Bank Details Adapter Ċ import Ġn iger ia . network . us sd . bank . cod . ui . check _ network . Check Network Fragment Ċ import Ġn iger ia . network . us sd . bank . cod . ui . network . Network Provider Details Adapter Ċ import Ġn iger ia . network . us sd . bank . cod . ui . new _ code . New Code Adapter Ċ import Ġn iger ia . network . us sd . bank . cod . ui . new _ code . New Code Fragment Ċ import Ġn iger ia . network . us sd . bank . cod . ui . on boarding . On boarding Activity Ċ Ċ @ Suppress (" WHEN _ ENUM _ CAN _ BE _ NULL _ IN _ JAVA ") Ċ @ Android EntryPoint Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠBank Details Adapter . Phone Dial Impl , ĊĠĠĠ ĠNetwork Provider Details Adapter . Phone Dial Impl , ĠNew Code Fragment . Bottom Navigation Impl , ĊĠĠĠ ĠCheck Network Fragment . Bottom Navigation Impl , ĊĠĠĠ ĠNew Code Adapter . Phone Dial Impl Ġ{ ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġmain Binding : ĠActivity Main Binding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġnight Mode Active Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMainActivity ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġvar Ġtoolbar : ĠToolbar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġmain Binding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( main Binding . root ) ĊĠĠĠĠĠĠĠ Ġinitialize Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbottom Navigation View : ĠBottom Navigation View ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠfindViewById ( R . id . nav _ view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Views () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġuser Ġhas Ġlaunched Ġapp Ġbefore , Ġif Ġnot Ġtake Ġthem Ġto ĠOn boarding ĠActivity ĊĠĠĠĠĠĠĠ ĠviewModel . first Time Launch . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠOn boarding Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġdark Ġmode Ġis Ġon Ġand Ġupdate Ġthe ĠOS ĊĠĠĠĠĠĠĠ ĠviewModel . dark Theme Enabled . observe ( this , ĠObserver Ġ{ night Mode Active Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . night Mode Active Ġ= Ġnight Mode Active ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Mode Ġ= Ġif Ġ( night Mode Active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . MODE _ N IGHT _ YES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . MODE _ N IGHT _ NO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( default Mode ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. hide () ĊĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . main _ nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġbottom Navigation View . setup With Nav Controller ( nav Controller ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater : ĠMenu Inflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . settings _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠ Ġreturn Ġwhen ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ ĠR . id . contact _ developer Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompose Email () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ ĠR . id . share _ app Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare App () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ ĠR . id . report _ bug Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Bug () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ ĠR . id . rate _ app Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrate App () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ ĠR . id . day _ night _ mode Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . toggle Night Mode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrate App () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Link Ġ= Ġ" https :// play . google . com / store / apps / details ? id =$ packageName " ĊĠĠĠĠĠĠĠ Ġval Ġrate Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse ( app Link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( rate Intent . resolve Activity ( package Manager ) Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( rate Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ Ġcreate Ġan Ġissue Ġin Ġthe Ġrepository Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreport Bug () Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠUri . parse (" https :// github . com / ug w ulo / U SSD _ Codes / issues ") ĊĊĠĠĠĠĠĠĠ Ġval Ġbug Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġurl ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bug Intent . resolve Activity ( package Manager ) Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( bug Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare App () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Link Ġ= Ġ" https :// play . google . com / store / apps / details ? id =$ packageName " ĊĠĠĠĠĠĠĠ Ġval Ġshare Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ"* /* " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġapp Link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( share Intent . resolve Activity ( package Manager ) Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( share Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġcontact Ġdeveloper Ġ**/ ĊĠĠĠ Ġprivate Ġfun Ġcompose Email () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠArray < String > Ġ= ĠarrayOf (" ug w ul on @ gmail . com ") ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġ" Type Ġyour Ġsubject Ġhere " ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" Compose Ġa Ġmessage ..." ĊĊĠĠĠĠĠĠĠ Ġval Ġemail Intent Ġ= ĠIntent ( Intent . ACTION _ SEND TO ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse (" mailto :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ EMAIL , Ġaddresses ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ SUBJECT , Ġsubject ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( email Intent . resolve Activity ( package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( email Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġinterface Ġimplementation Ġ[ handle Phone Dial ] Ġfor Ġhandling Ġ[ Network Provider Details Adapter . Phone Dial Impl ], ĊĠĠĠĠ Ġ* Ġ Ġ[ Bank Details Adapter . Phone Dial Impl ] Ġand Ġ[ New Code Adapter . Phone Dial Impl ] Ġphone Ġdial s ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġoverride Ġfun Ġhandle Phone Dial ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdial Intent Ġ= ĠIntent ( Intent . ACTION _ DI AL ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse (" tel :${ Uri . encode ( code )}" Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( dial Intent . resolve Activity ( package Manager ) Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( dial Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĠToast . makeText ( application Context , Ġ" an Ġerror Ġoccurred ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinterface Ġimplementation Ġfor Ġdisabling Ġ[ New Code Fragment . Bottom Navigation Impl ] Ġand ĊĠĠĠĠ Ġ* Ġ[ Check Network Fragment . Bottom Navigation Impl ] Ġbottom Ġnavig ations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdisable Bottom Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Navigation View . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinterface Ġimplementation Ġfor Ġenabling Ġ[ New Code Fragment . Bottom Navigation Impl ] Ġand ĊĠĠĠĠ Ġ* Ġ[ Check Network Fragment . Bottom Navigation Impl ] Ġbottom Ġnavig ations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġenable Bottom Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Navigation View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ }