package Ġcom . kr ake . core . location . settings Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . location . Location Manager Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . kr ake . core . R Ċ import Ġcom . kr ake . core . extension . commit Sync Allow ing State Loss Ċ import Ġcom . kr ake . core . location . settings . presenter . G ps Settings Presenter Ċ import Ġcom . kr ake . core . location . settings . presenter . Snackbar G ps Settings Presenter Ċ Ċ /** Ċ Ġ* ĠManager Ġche Ġgest is ce Ġla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS Ġtr am ite Ġun Ġbuilder Ġpattern . Ċ Ġ* Ċ Ġ* Ġ@ param Ġactivity Ġ[ Activity ] Ġutilizz ata Ġper Ġmo str are Ġi Ġmess aggi Ġrel ativ i Ġalla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS . Ċ Ġ* Ġ@ param Ġfragment Manager Ġsupport Ġ[ FragmentManager ] Ġutilizz ato Ġper Ġinser ire Ġil Ġ[ Fragment ] Ġche Ġgest ir Ãł Ġla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS . Ċ Ġ* Ġ@ constructor Ġcre a Ġun Ġ[ G ps Settings Manager ] Ġper Ġil Ġcheck Ġe Ġla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS . Ċ Ġ*/ Ċ open Ġclass ĠG ps Settings Manager Ġconstructor ( protected Ġval Ġactivity : ĠActivity , Ġprotected Ġvar Ġfragment Manager : ĠFragment Manager ) Ġ: ĠG ps Settings Fragment . Callback Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCre a Ġun Ġ[ G ps Settings Manager ] Ġper Ġil Ġcheck Ġe Ġla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Ġ[ Activity ] Ġutilizz ata Ġper Ġmo str are Ġi Ġmess aggi Ġrel ativ i Ġalla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS Ġe ĊĠĠĠĠ Ġ* Ġd alla Ġqu ale Ġv err Ãł Ġr ic av ato Ġil Ġsupport Ġ[ FragmentManager ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( activity : ĠFragment Activity ) Ġ: Ġthis ( activity , Ġactivity . support FragmentManager ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCre a Ġun Ġ[ G ps Settings Manager ] Ġper Ġil Ġcheck Ġe Ġla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Ġ[ Fragment ] Ġdal Ġqu ale Ġveng ono Ġr ic av ati Ġl '[ Activity ] Ġutilizz ata Ġper Ġmo str are Ġi Ġmess aggi Ġrel ativ i ĊĠĠĠĠ Ġ* Ġalla Ġrich iest a Ġdi Ġatt iv azione Ġdel ĠGPS Ġe Ġil Ġchild Ġ[ FragmentManager ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( fragment : ĠFragment ) Ġ: Ġthis ( fragment . activity Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġactivity Ġmust n 't Ġbe Ġnull ."), Ġfragment . child FragmentManager ) ĊĊĠĠĠ Ġprotected Ġvar Ġgps Fragment : ĠG ps Settings Fragment ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprotected Ġvar Ġlisteners : ĠMutable Set < G ps Settings Listener > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprotected Ġvar Ġpresenter : ĠG ps Settings Presenter Ġ= ĠSn ackbar G ps Settings Presenter () ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprotected Ġvar Ġsettings Change Unavailable Msg : ĠString Ġ= Ġactivity . getString ( R . string . error _ gps _ blocked ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpec ifica Ġl ' og getto Ġche Ġsi Ġocc uper Ãł Ġdi Ġmo str are Ġi Ġper mess i Ġs ull a ĠUI . ĊĠĠĠĠ Ġ* ĠL ' og getto Ġdeve Ġimplement are Ġ[ G ps Settings Listener ]. ĊĠĠĠĠ Ġ* ĠDEFAULT : Ġ[ Snackbar G ps Settings Presenter ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpresenter Ġ[ G ps Settings Listener ] Ġche Ġmo stra Ġi Ġper mess i Ġs ull a ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpresenter ( presenter : ĠG ps Settings Presenter ) Ġ= Ġapply Ġ{ Ġthis . presenter Ġ= Ġpresenter Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpec ifica Ġil Ġmess aggio Ġche Ġdeve Ġessere Ġmo str ato Ġquando Ġnon ĠÃ¨ Ġpossibile Ġatt iv are Ġil ĠGPS . ĊĠĠĠĠ Ġ* ĠDEFAULT : Ġnull ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmsg Ġmess aggio Ġda Ġmo str are Ġopp ure Ġnull Ġper Ġnon Ġmo str are Ġnulla . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsettings Change Unavailable Msg ( msg : ĠString ) Ġ= Ġapply Ġ{ Ġsettings Change Unavailable Msg Ġ= Ġmsg Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAg gi unge Ġun Ġlistener Ġper Ġgli Ġevent i Ġs ull ' att iv azione Ġdel ĠGPS . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġ[ G ps Settings Listener ] Ġlistener Ġda Ġaggi ung ere . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Listener ( listener : ĠG ps Settings Listener ) Ġ= Ġapply Ġ{ Ġlisteners . add ( listener ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠR imu ove Ġun Ġlistener Ġregist r ato Ġper Ġgli Ġevent i Ġs ull ' att iv azione Ġdel ĠGPS . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġ[ G ps Settings Listener ] Ġlistener Ġda Ġri mu over e . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Listener ( listener : ĠG ps Settings Listener ) Ġ= Ġapply Ġ{ Ġlisteners . remove ( listener ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠR imu ove Ġtut ti Ġi Ġlistener Ġregist r ati Ġper Ġgli Ġevent i Ġs ull ' att iv azione Ġdel ĠGPS . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove All Listeners () Ġ= Ġapply Ġ{ Ġlisteners . clear () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCre a Ġil Ġ[ G ps Settings Fragment ] Ġe Ġlo Ġinser is ce Ġcon Ġil Ġ[ FragmentManager ] Ġpass ato Ġcome Ġparame tro . ĊĠĠĠĠ Ġ* ĠSuccess iv amente Ġrich ie de Ġl ' att iv azione Ġdel ĠGPS . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġforce Ġtrue Ġse Ġsi Ġv u ole Ġfor z are Ġla Ġrich iest a Ġdel ĠGPS Ġo gn i Ġvol ta , Ġal tri ment i , Ġla Ġrich iest a ĊĠĠĠĠ Ġ* Ġv err Ãł Ġsp edit a Ġsolo Ġuna Ġvol ta Ġper Ġtut ta Ġla Ġdur ata Ġdella Ġse zione . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Commit Transaction ") ĊĠĠĠ Ġopen Ġfun Ġrequest ( force : ĠBoolean , Ġshow Dialog Is Disabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= ĠG ps Settings Fragment . FRAGMENT _ TAG ĊĠĠĠĠĠĠĠ Ġgps Fragment Ġ= Ġfragment Manager . find Fragment By Tag ( tag ) Ġas ? ĠG ps Settings Fragment ĊĠĠĠĠĠĠĠ Ġif Ġ( gps Fragment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgps Fragment Ġ= ĠG ps Settings Fragment . newInstance ( settings Change Unavailable Msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( gps Fragment !! , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Sync Allow ing State Loss ( fragment Manager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgps Fragment ?. callback Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ// ĠRich ie de Ġil ĠGPS . ĊĠĠĠĠĠĠĠ Ġgps Fragment ?. avoid As king Dialog Ġ= Ġ! force Ġ&& Ġ! show Dialog Is Disabled ĊĠĠĠĠĠĠĠ Ġgps Fragment ?. require G ps ( force ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVer ifica Ġche Ġil ĠGPS Ġs ia Ġatt ivo Ġo Ġm eno . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġse Ġil ĠGPS ĠÃ¨ Ġatt ivo . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠisActive (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( activity . getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ). is Provider Enabled ( Location Manager . GPS _ PROVIDER ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon G ps Settings Acquire d () Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . forEach ( G ps Settings Listener :: on G ps Settings Acquire d ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Settings Change Unavailable Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . show Settings Change Unavailable Message ( activity , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon G ps Settings Unavailable () Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners . forEach ( G ps Settings Listener :: on G ps Settings Unavailable ) ĊĠĠĠ Ġ} Ċ }