package Ġcom . map swith me . maps . widget Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . map swith me . maps . R Ċ import Ġcom . map swith me . maps . widget . Stack ed Buttons Dialog Ċ import Ġcom . map swith me . util . Config Ċ import Ġcom . map swith me . util . Network Policy Ċ import Ġcom . map swith me . util . Network Policy . Network Policy Listener Ċ import Ġcom . map swith me . util . statistics . Statistics Ċ Ċ class ĠStack ed Button Dialog Fragment Ġ: ĠDialog Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Listener : ĠNetwork Policy Listener ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStack ed Buttons Dialog . Builder ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . mobile _ data _ dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . mobile _ data _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . mobile _ data _ option _ always , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . OnClickListener Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Dialog Btn Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Policy . Type . ALWAYS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . mobile _ data _ option _ not _ today , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . OnClickListener { Ġdialog : ĠDialog Interface ?, Ġwhich : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Mobile Data Impact Btn Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Policy . Type . NOT _ TO DAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Neutral Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . mobile _ data _ option _ today , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Interface . OnClickListener Ġ{ Ġdialog : ĠDialog Interface ?, Ġwhich : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Mobile Data Impact Btn Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Policy . Type . TO DAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Mobile Data Impact Btn Clicked ( ĊĠĠĠĠĠĠĠ Ġtoday : ĠNetwork Policy . Type , ĊĠĠĠĠĠĠĠ Ġcan Use : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠConfig . set Mobile Data TimeStamp ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġon Dialog Btn Clicked ( today , Ġcan Use ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Dialog Btn Clicked ( type : ĠNetwork Policy . Type , Ġcan Use : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠStatistics . INSTANCE . track Network Usage Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatistics . Event Name . MOB ILE _ INTER NET _ ALERT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . to Statistic Value () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠConfig . set Use Mobile Data Settings ( type ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Listener Ġ!= Ġnull ) Ġm Listener !!. on Result ( Network Policy . newInstance ( can Use )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ( ĊĠĠĠĠĠĠĠ Ġmanager : ĠFragment Manager , ĊĠĠĠĠĠĠĠ Ġtag : ĠString ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġft Ġ= Ġmanager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġft . add ( this , Ġtag ) ĊĠĠĠĠĠĠĠ Ġft . commit Allow ing State Loss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Listener ( listener : ĠNetwork Policy Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġlistener ĊĠĠĠ Ġ} Ċ }