/* Ċ Ġ* ĠVo IP . ms ĠSMS Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 8 ĠMichael ĠK our las Ċ Ġ* Ċ Ġ* Ġ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 . k our las . vo ip ms _ sms . preferences . fragments Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 1 4 . preference . Switch Preference Ċ import Ġandroid . support . v 7 . widget . Switch Compat Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Compound Button Ċ import Ġcom . tak isoft . fix . support . v 7 . preference . Preference Fragment Compat Div iders Ċ import Ġnet . k our las . vo ip ms _ sms . R Ċ import Ġnet . k our las . vo ip ms _ sms . notifications . Notifications Ċ import Ġnet . k our las . vo ip ms _ sms . preferences .* Ċ import Ġnet . k our las . vo ip ms _ sms . sms . services . App Indexing Service Ċ import Ġnet . k our las . vo ip ms _ sms . utils . abort Activity Ċ import Ġnet . k our las . vo ip ms _ sms . utils . run On New Thread Ċ import Ġnet . k our las . vo ip ms _ sms . utils . safe Unregister Receiver Ċ import Ġnet . k our las . vo ip ms _ sms . utils . show Snackbar Ċ Ċ class ĠDid Preferences Fragment Ġ: ĠPreference Fragment Compat Div iders (), ĊĠĠĠ ĠCompound Button . On Checked ChangeListener Ġ{ ĊĊĠĠĠ Ġ// ĠBroadcast Ġreceiv ers ĊĠĠĠ Ġprivate Ġval Ġpush Notifications Registration Complete Receiver Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġerror Ġif Ġone Ġoccurred ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed D ids Ġ= Ġintent ?. getString ArrayList Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . push _ notifications _ reg _ complete _ vo ip _ ms _ api _ callback _ failed _ d ids )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( failed D ids Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUnknown Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar ( activity , ĠR . id . coordinator _ layout , ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . push _ notifications _ fail _ unknown )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! failed D ids . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSome ĠD IDs Ġfailed Ġregistration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar ( activity , ĠR . id . coordinator _ layout , ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . push _ notifications _ fail _ register )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReg ard less Ġof Ġwhether Ġan Ġerror Ġoccurred , Ġmark Ġsetup Ġas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcomplete ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Setup Completed For Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , Ġ 1 1 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon CheckedChanged ( button View : ĠCompound Button ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdid Ġ= Ġarguments ?. getString ( getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . preferences _ did _ fragment _ argument _ did )) ĊĠĠĠĠĠĠĠ Ġif Ġ( did Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabort Activity ( activity , ĠException (" Missing ĠD ID Ġargument ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġenabled Ġswitch Ġis Ġchecked Ġor Ġunchecked , Ġenable / disable Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġcheck / uncheck Ġthe Ġadditional Ġswitches Ġas Ġwell ĊĠĠĠĠĠĠĠ Ġval Ġd ids Ġ= Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget D ids ( context ). plus ( did ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget D ids ( context ). minus ( did ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset D ids ( activity , Ġd ids ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( d ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe - register Ġfor Ġpush Ġnotifications Ġwhen ĠD IDs Ġchange ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . getInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . application ). enable Push Notifications ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun On New Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Indexing Service . replace Index ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Preferences () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences Fix ( savedInstanceState : ĠBundle ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġpreferences ĊĠĠĠĠĠĠĠ Ġadd Preferences From Resource ( R . xml . preferences _ did ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġkeys Ġand Ġupdate Ġchecked Ġstatus Ġfor Ġeach Ġpreference ĊĠĠĠĠĠĠĠ Ġsetup Preferences () ĊĠĠĠĠĠĠĠ Ġupdate Preferences () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġlistener Ġfor Ġenabled Ġswitch ĊĠĠĠĠĠĠĠ Ġval Ġenabled Switch Ġ= Ġactivity . findViewById < Switch Compat >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . enabled _ switch ) ĊĠĠĠĠĠĠĠ Ġenabled Switch . setOn Checked ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠRegister Ġdynamic Ġreceiv ers Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġactivity . register Receiver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpush Notifications Registration Complete Receiver , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Filter ( getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . push _ notifications _ reg _ complete _ action ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġchecked Ġstatus Ġfor Ġeach Ġpreference ĊĠĠĠĠĠĠĠ Ġupdate Preferences () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠUn register Ġdynamic Ġreceiv ers Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġsafe Unregister Receiver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpush Notifications Registration Complete Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġkeys Ġfor Ġeach Ġpreference . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdid Ġ= Ġarguments ?. getString ( getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . preferences _ did _ fragment _ argument _ did )) ĊĠĠĠĠĠĠĠ Ġif Ġ( did Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabort Activity ( activity , ĠException (" Missing ĠD ID Ġargument ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġshow In Con versations View Preference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Screen . get Preference ( 0 ) Ġas ĠSwitch Preference ĊĠĠĠĠĠĠĠ Ġshow In Con versations View Preference . key Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . preferences _ did _ show _ in _ con versations _ view _ key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdid ) ĊĊĠĠĠĠĠĠĠ Ġval Ġretrieve Messages Preference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Screen . get Preference ( 1 ) Ġas ĠSwitch Preference ĊĠĠĠĠĠĠĠ Ġretrieve Messages Preference . key Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . preferences _ did _ retrieve _ messages _ key , Ġdid ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshow Notifications Preference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Screen . get Preference ( 2 ) Ġas ĠSwitch Preference ĊĠĠĠĠĠĠĠ Ġshow Notifications Preference . key Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . preferences _ did _ show _ notifications _ key , Ġdid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġchecked Ġstatus Ġfor Ġeach Ġpreference . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdid Ġ= Ġarguments ?. getString ( getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . preferences _ did _ fragment _ argument _ did )) ĊĠĠĠĠĠĠĠ Ġif Ġ( did Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabort Activity ( activity , ĠException (" Missing ĠD ID Ġargument ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġenabled Switch Ġ= Ġactivity . findViewById < Switch Compat >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . enabled _ switch ) ĊĠĠĠĠĠĠĠ Ġenabled Switch . isChecked Ġ= Ġdid Ġin Ġget D ids ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshow In Con versations View Preference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Screen . get Preference ( 0 ) Ġas ĠSwitch Preference ĊĠĠĠĠĠĠĠ Ġshow In Con versations View Preference . isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Switch . isChecked ĊĠĠĠĠĠĠĠ Ġshow In Con versations View Preference . isChecked Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Did Show In Con versations View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġdid ) ĊĊĠĠĠĠĠĠĠ Ġval Ġretrieve Messages Preference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Screen . get Preference ( 1 ) Ġas ĠSwitch Preference ĊĠĠĠĠĠĠĠ Ġretrieve Messages Preference . isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Switch . isChecked ĊĠĠĠĠĠĠĠ Ġretrieve Messages Preference . isChecked Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Did Retrieve Messages ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdid ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshow Notifications Preference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Screen . get Preference ( 2 ) Ġas ĠSwitch Preference ĊĠĠĠĠĠĠĠ Ġshow Notifications Preference . isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Switch . isChecked ĊĠĠĠĠĠĠĠ Ġshow Notifications Preference . isChecked Ġ= Ġget Did Show Notifications ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Divider Preferences ( DI VIDER _ NONE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ