/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 8 ĠK eval ĠP ate l . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġcom . stand up . app . settings . notifications Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . annotation . Visible ForTesting Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġcom . ke val p ate l . ring tone picker . Ring tone Picker Dialog Ċ import Ġcom . ke val p ate l 2 1 0 6 . common . base . Base Application Ċ import Ġcom . ke val p ate l 2 1 0 6 . common . base . arch . Base ViewModel Ċ import Ġcom . ke val p ate l 2 1 0 6 . common . prefs . User Settings Manager Ċ import Ġcom . ke val p ate l 2 1 0 6 . utils . Shared Prefs Provider Ċ import Ġcom . ke val p ate l 2 1 0 6 . utils . annotations . Only ForTesting Ċ import Ġcom . stand up . app . settings . R Ċ import Ġcom . stand up . app . settings . di . D agger Settings Component Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠK eval Ġon Ġ 1 4 / 0 1 / 1 8 . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ< a Ġhref =" https :// github . com / ke val p ate l 2 1 0 6 "> ke val p ate l 2 1 0 6 </ a > Ċ Ġ*/ Ċ internal Ġclass ĠNotifications Settings ViewModel Ġ: ĠBase ViewModel Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġshared Prefs Provider : ĠShared Prefs Provider ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġuser Settings Manager : ĠUser Settings Manager ĊĊĠĠĠ Ġinternal Ġval Ġreminder Tone Name Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġ@ Only ForTesting ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Prefs Provider : ĠShared Prefs Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Settings Manager : ĠUser Settings Manager ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . shared Prefs Provider Ġ= Ġshared Prefs Provider ĊĠĠĠĠĠĠĠ Ġthis . user Settings Manager Ġ= Ġuser Settings Manager ĊĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ ĠD agger Settings Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. app Component ( Base Application . getApplication Component ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this @ Notifications Settings ViewModel ) ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġreminder Tone Name . value Ġ= Ġuser Settings Manager . get Reminder Tone Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Ring tone Picker ( context : ĠContext , Ġsupport FragmentManager : ĠFragment Manager ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Display Ġthe Ġring tone Ġpicker Ġdialog . ĊĠĠĠĠĠĠĠ ĠRing tone Picker Dialog . Builder ( context , Ġsupport FragmentManager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Ring tone Type ( Ring tone Picker Dialog . Builder . TYPE _ RING T ONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Ring tone Type ( Ring tone Picker Dialog . Builder . TYPE _ ALARM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Ring tone Type ( Ring tone Picker Dialog . Builder . TYPE _ NOTIFICATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( context . getString ( R . string . reminder _ ring tone _ picker _ dialog _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Play Sample While Selection ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive ButtonText ( android . R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Listener Ġ{ Ġring tone Name , Ġring tone Uri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Settings Manager . set Reminder Tone ( ring tone Name , Ġring tone Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreminder Tone Name . value Ġ= Ġring tone Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} Ċ } Ċ