package Ġcom . example . sm kc covid Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . example . sm kc covid . activity . Login Activity Ċ import Ġcom . example . sm kc covid . activity . MainActivity Ċ import Ġcom . example . sm kc covid . model . Settings DataModel Ċ import Ġcom . example . sm kc covid . view model . Dashboard ViewModel Ċ import Ġcom . example . sm kc covid . view model . Settings ViewModel Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġid . vo ela . act rans . Ac Trans Ċ import Ġkotlinx . android . synt hetic . main . fragment _ settings .* Ċ import Ġrender . animations . Fade Ċ import Ġrender . animations . Render Ċ import Ġutil . goTo Ċ import Ġutil . update Settings Ċ import Ġjava . util .* ĊĊ Ċ class ĠSettings Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġvar Ġlocale Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Settings ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ settings , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . on Resume (); Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( locale Has Changed ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġchange Language () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . init ( require Context ()) ĊĠĠĠĠĠĠĠ Ġbt _ country . setOnClickListener Ġ{ Ġbutton Country () Ġ} ĊĠĠĠĠĠĠĠ Ġbt _ language . setOnClickListener Ġ{ Ġbutton Country () Ġ} ĊĠĠĠĠĠĠĠ Ġbt _ sign _ in . setOnClickListener Ġ{ Ġbutton SignIn () Ġ} ĊĠĠĠĠĠĠĠ Ġbt _ sign _ out . setOnClickListener Ġ{ Ġbutton Sign Out () Ġ} ĊĠĠĠĠĠĠĠ Ġswitch 1 . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> Ġbutton Notification (" notification ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠ Ġswitch _ global . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> Ġbutton Notification (" global ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠ Ġswitch _ country . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> Ġbutton Notification (" country ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠ Ġset Settings () ĊĠĠĠĠĠĠĠ Ġset Account Information () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton Notification ( type : ĠString , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġrequire Context (). get SharedPreferences (" test ", Ġ 0 ). edit () ĊĠĠĠĠĠĠĠ Ġedit . put Boolean ( type , Ġis Checked ) ĊĠĠĠĠĠĠĠ Ġedit . apply () Ċ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġsettings : ĠSettings DataModel ? Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Firebase Auth . getInstance (). currentUser Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠFirebase Auth . getInstance (). currentUser !! Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġuser . uid Ġ} Ġ== Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= ĠSettings DataModel ( user . uid , Ġ" en ", Ġtrue , Ġtrue , Ġtrue ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert ( settings ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= ĠviewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġuser . uid Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġ" offline " Ġ} Ġ== Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert ( Settings DataModel (" offline ", Ġ" en ", Ġtrue , Ġtrue , Ġtrue )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= ĠviewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġ" offline " Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" notification " Ġ-> Ġsettings !!. notification Ġ= Ġis Checked Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" global " Ġ-> Ġsettings !!. global Ġ= Ġis Checked Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" bo untry " Ġ-> Ġsettings !!. country Ġ= Ġis Checked Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ ĠviewModel . update ( settings !! ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ" notification ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrender Ġ= ĠRender ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender . set Duration ( 5 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender . set Animation ( Fade (). In Down ( ll _ notification )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġll _ notification . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender . set Animation ( Fade (). Out ( ll _ notification )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġll _ notification . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton SignIn () Ġ{ ĊĠĠĠĠĠĠĠ Ġgo To ( require Context (), ĠLogin Activity (), Ġfalse , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton Sign Out () Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). sign Out () ĊĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġrequire Context (). get SharedPreferences (" test ", Ġ 0 ). edit () ĊĠĠĠĠĠĠĠ Ġedit . putString (" slug ", Ġ" ind onesia ") ĊĠĠĠĠĠĠĠ Ġedit . apply () ĊĠĠĠĠĠĠĠ Ġgo To ( require Context (), ĠMainActivity (), Ġtrue , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Account Information () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ name _ settings . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ email _ settings . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrl _ sign _ in . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrl _ sign _ out . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ name _ settings . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ email _ settings . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrl _ sign _ in . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrl _ sign _ out . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( require Context ()). load ( user . photoUrl ). into ( iv _ account _ settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ name _ settings . text Ġ= Ġuser . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ email _ settings . text Ġ= Ġuser . email ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Settings () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġlocale Ġ= ĠLocale . getDefault (). language ĊĊĠĠĠĠĠĠĠ Ġvar Ġsettings Ġ: ĠSettings DataModel ? ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Firebase Auth . getInstance (). currentUser Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠFirebase Auth . getInstance (). currentUser !! Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġuser . uid Ġ} Ġ== Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert ( Settings DataModel ( user . uid , Ġ" en ", Ġtrue , Ġtrue , Ġtrue )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= ĠviewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġuser . uid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= ĠSettings DataModel ( user . uid , Ġ" en ", Ġtrue , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Settings ( settings , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġ" offline " Ġ} Ġ== Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . insert ( Settings DataModel (" offline ", Ġ" en ", Ġtrue , Ġtrue , Ġtrue )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= ĠviewModel . all Settings Datas . value ?. find Ġ{ Ġit . id Ġ== Ġ" offline " Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġrequire Context (). get SharedPreferences (" test ", Ġ 0 ). getString (" lang ", Ġ" in ") ĊĠĠĠĠĠĠĠ Ġval Ġis Notification On Ġ= Ġrequire Context (). get SharedPreferences (" test ", Ġ 0 ). getBoolean (" notification ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġis Global On Ġ= Ġrequire Context (). get SharedPreferences (" test ", Ġ 0 ). getBoolean (" global ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġis Country On Ġ= Ġrequire Context (). get SharedPreferences (" test ", Ġ 0 ). getBoolean (" country ", Ġtrue ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġis Notification On Ġ= Ġsettings . notification Ċ // ĠĠĠĠĠĠĠ Ġval Ġis Global On Ġ= Ġsettings . global Ċ // ĠĠĠĠĠĠĠ Ġval Ġis Country On Ġ= Ġsettings . country ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( language ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" in " Ġ-> Ġib _ language . setImage Resource ( R . drawable . ind onesia ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en " Ġ-> Ġib _ language . setImage Resource ( R . drawable . usa ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fil " Ġ-> Ġib _ language . setImage Resource ( R . drawable . phil ipp ines ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Notification On ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġll _ notification . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġll _ notification . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswitch 1 . isChecked Ġ= Ġis Notification On ĊĠĠĠĠĠĠĠ Ġswitch _ global . isChecked Ġ= Ġis Global On ĊĠĠĠĠĠĠĠ Ġswitch _ country . isChecked Ġ= Ġis Country On ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton Country () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Language Change Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlocale Has Changed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlocale Ġ!= ĠLocale . getDefault (). language ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Language Change Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlanguages Ġ= ĠarrayOf (" English ", Ġ" Ba has a ĠInd onesia ", Ġ" Fil ip ino ") ĊĠĠĠĠĠĠĠ Ġval Ġm Builder Ġ= ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠ Ġm Builder . setTitle ( getString ( R . string . select _ language )) ĊĠĠĠĠĠĠĠ Ġm Builder . set Single Choice Items ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages , Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( which Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġrequire Activity (). base Context . get SharedPreferences (" test ", Ġ 0 ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . putString (" lang ", Ġ" in ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( which Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġrequire Activity (). base Context . get SharedPreferences (" test ", Ġ 0 ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . putString (" lang ", Ġ" en ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġrequire Activity (). base Context . get SharedPreferences (" test ", Ġ 0 ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . putString (" lang ", Ġ" fil ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Language () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġm Dialog Ġ= Ġm Builder . create () ĊĠĠĠĠĠĠĠ Ġm Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Language () Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler (). post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity () :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAc Trans . Builder ( require Context ()). perform Fade () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ