/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 , ĠM os he ĠW ais berg Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġnet . sf . power . monitor . preference Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . format . Date Utils Ċ import Ġandroidx . annotation . Keep Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . preference . Preference Ċ import Ġandroidx . preference . Switch Preference Ċ import Ġcom . github . preference . Ring tone Preference Ċ import Ġnet . sf . power . monitor . Build Config Ċ import Ġnet . sf . power . monitor . R Ċ Ċ /** Ċ Ġ* ĠThis Ġfragment Ġshows Ġthe Ġpreferences Ġfor Ġthe ĠGeneral Ġheader . Ċ Ġ* Ġ@ author ĠM os he ĠW ais berg Ċ Ġ*/ Ċ @ Keep Ċ class ĠGeneral Preference Fragment Ġ: ĠPower Preference Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġreminder Ring tone Preference : ĠRing tone Preference ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsms Preference : ĠSwitch Preference ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġrecipient Preference : ĠRe cipient Preference ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget Preferences Xml (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . xml . general _ preferences ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Preferences ( savedInstanceState , Ġroot Key ) ĊĊĠĠĠĠĠĠĠ Ġinit List ( Power Preferences . KEY _ FAILURE _ DELAY ) ĊĊĠĠĠĠĠĠĠ Ġreminder Ring tone Preference Ġ= Ġinit Ring tone ( Power Preferences . KEY _ RING T ONE _ T ONE ) ĊĊĠĠĠĠĠĠĠ Ġsms Preference Ġ= Ġfind Preference ( Power Preferences . KEY _ SMS _ ENABLED ) ĊĠĠĠĠĠĠĠ Ġsms Preference ?. on Preference ChangeListener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġsms Preference ?. summary Provider Ġ= ĠPreference . Summary Provider < Switch Preference > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmillis Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateTime Ġ= ĠDate Utils . format DateTime ( context , Ġmillis , ĠDate Utils . FORMAT _ SHOW _ DATE Ġor ĠDate Utils . FORMAT _ SHOW _ TIME Ġor ĠDate Utils . FORMAT _ AB BRE V _ ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . sms _ message , ĠdateTime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrecipient Preference Ġ= Ġinit Sms Recipient ( Power Preferences . KEY _ SMS _ RE CI PI ENT ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! Build Config . FEATURE _ SMS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsms Preference ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecipient Preference ?. isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsms Preference ?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecipient Preference ?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Preference Change ( preference : ĠPreference , ĠnewValue : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( preference Ġ=== Ġsms Preference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newValue Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Sms Permission ( preference . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( preference Ġ=== Ġrecipient Preference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Recipient Summary ( preference , ĠnewValue ?. toString () Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Preference Change ( preference , ĠnewValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Sms Recipient ( key : ĠString ): ĠRe cipient Preference ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpreference Ġ= Ġfind Preference < Recipient Preference >( key ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġpreference . on Preference ChangeListener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġpreference . setOn Click ( this , ĠREQUEST _ RE CI PI ENT ) ĊĠĠĠĠĠĠĠ Ġupdate Recipient Summary ( preference , Ġpreference . recipient ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpreference ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Recipient Summary ( preference : ĠPreference , Ġrecipient : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpreference . summary Ġ= ĠgetString ( R . string . sms _ summary , Ġrecipient ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġrecipient Preference ?. on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Sms Permission ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( context , ĠManifest . permission . SEND _ SMS ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions ( array Of ( Manifest . permission . SEND _ SMS ), ĠREQUEST _ SMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ SMS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġ( grant Results [ 0 ] Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Preference ?. isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Display Preference Dialog ( preference : ĠPreference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġrequire FragmentManager () ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġdialog Ġis Ġalready Ġshowing ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Manager . find Fragment By Tag ( DIALOG _ FRAGMENT _ TAG ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġf : ĠDialog Fragment ĊĠĠĠĠĠĠĠ Ġif Ġ( preference Ġis ĠDelay Preference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Ġ= ĠDelay Preference Dialog . newInstance ( preference . getKey ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf . setTarget Fragment ( this , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf . show ( fragment Manager , ĠDIALOG _ FRAGMENT _ TAG ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Display Preference Dialog ( preference ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ SMS Ġ= Ġ 0 x 5 3 5 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ RE CI PI ENT Ġ= Ġ 0 x 7 3 C 1 ĊĠĠĠ Ġ} Ċ } Ċ