package Ġcom . cy bers h ark . j okes . ui . settings Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompat Delegate .* Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . preference . Preference Ċ import Ġandroidx . preference . Preference Fragment Compat Ċ import Ġandroidx . preference . Switch Preference Compat Ċ import Ġcom . cy bers h ark . j okes . Build Config Ċ import Ġcom . cy bers h ark . j okes . R Ċ import Ġcom . cy bers h ark . j okes . data . App Constants Ċ import Ġcom . cy bers h ark . j okes . data . SharedPreferences Keys Ċ import Ġcom . cy bers h ark . j okes . util .* Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠSettings Fragment Ġ: ĠPreference Fragment Compat () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsettings ViewModel Ġby Ġview Models < Settings ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Preferences From Resource ( R . xml . root _ preferences , Ġroot Key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup Data () ĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĠĠĠĠĠĠĠ Ġsetup Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ Ġobserve ( settings ViewModel . ui State ) Ġ{ Ġui State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ui State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUI State . Success Ġ-> Ġview ?. short Sn ackBar ( ui State . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUI State . Error Ġ-> Ġview ?. short Sn ackBar ( ui State . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabout Info Ġ= Ġfind Preference < Preference >( SharedPreferences Keys . AB OUT _ INFO _ KEY ) ĊĠĠĠĠĠĠĠ Ġval Ġshare App Ġ= Ġfind Preference < Preference >( SharedPreferences Keys . SHARE _ APP _ KEY ) ĊĠĠĠĠĠĠĠ Ġabout Info ?. summary Ġ= ĠBuild Config . VERSION _ NAME ĊĠĠĠĠĠĠĠ Ġabout Info ?. setOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" About ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" A ĠSimple Ġj okes Ġapp Ġmade Ġto Ġte ach Ġstudents Ġin ĠAndroid ĠStudy J ams ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" Ok ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Neutral Button (" Github ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Github Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshare App ?. setOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare App () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtheme Option Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Preference < Switch Preference Compat >( SharedPreferences Keys . THEME _ OPTION _ KEY ) ĊĠĠĠĠĠĠĠ Ġtheme Option ?. setOn Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Night Mode ( if Ġ( newValue Ġas ĠBoolean ) ĠMODE _ N IGHT _ YES Ġelse ĠMODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfind Preference < Preference >( SharedPreferences Keys . DELETE _ FA V OR ITES _ KEY )?. setOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Remove Ġall Ġfavor ites ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" This Ġis Ġan Ġir re vers ible Ġaction ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" Confirm ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings ViewModel . delete All J okes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Github Page () Ġ= Ġopen Link ( App Constants . GITHUB _ LINK ) ĊĊĠĠĠ Ġprivate Ġfun Ġshare App () Ġ= ĊĠĠĠĠĠĠĠ Ġopen Share Chooser (" H ey ĠCheck Ġout Ġthis ĠGreat Ġapp : Ġ${ App Constants . GITHUB _ LINK }") Ċ }