package Ġcom . a em erse . qu an age . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . text . Html Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . a em erse . qu an age . R Ċ import Ġcom . a em erse . qu an age . activities . MainActivity Ċ import Ġcom . a em erse . qu an age . constants . QR NG Type Ċ import Ġcom . a em erse . qu an age . persistence . History DataManager Ċ import Ġcom . a em erse . qu an age . persistence . Preferences Manager Ċ import Ġcom . a em erse . qu an age . utils .* Ċ import Ġcom . a em erse . qu an age . utils . Sh ake Manager . Companion . get Ċ import Ġjava . util .* Ċ Ċ class ĠCoin s Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġf ocal Point : ĠView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnum Coins Input : ĠEditText ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġresults Container : ĠView ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġresults : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġresults Animation Length Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġsn ackbar Display : ĠSn ackbar Display Ġ= Ġobject Ġ: ĠSn ackbar Display Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Snackbar ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ?) !!. show Snackbar ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġsh ake Listener : ĠSh ake Manager . Listener Ġ= Ġobject : ĠSh ake Manager . Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sh ake Detected ( current Rng Page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Rng Page Ġ== ĠQR NG Type . CO INS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflip () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġhistory DataManager : ĠHistory DataManager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġsh ake Manager Ġ= Ġget () ĊĠĠĠ Ġprivate Ġvar Ġpreferences Manager : ĠPreferences Manager ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . coins _ page , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġf ocal Point Ġ= Ġroot View . findViewById ( R . id . focal _ point ) ĊĠĠĠĠĠĠĠ Ġnum Coins Input Ġ= Ġroot View . findViewById ( R . id . num _ coins ) ĊĠĠĠĠĠĠĠ Ġresults Container Ġ= Ġroot View . findViewById ( R . id . results _ container ) ĊĠĠĠĠĠĠĠ Ġresults Ġ= Ġroot View . findViewById ( R . id . results ) ĊĠĠĠĠĠĠĠ Ġresults Animation Length Ġ= Ġresources . getInteger ( R . integer . short er _ anim _ length ) ĊĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . flip ). setOnClickListener Ġ{ Ġflip () Ġ} ĊĠĠĠĠĠĠĠ Ġroot View . findViewById < View >( R . id . copy _ results ). setOnClickListener Ġ{ Ġcopy Numbers () Ġ} ĊĠĠĠĠĠĠĠ Ġsh ake Manager !!. register Listener ( shake Listener ) ĊĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġhistory DataManager Ġ= ĠHistory DataManager [ require Activity ()] ĊĠĠĠĠĠĠĠ Ġpreferences Manager Ġ= ĠPreferences Manager ( require Activity ()) ĊĠĠĠĠĠĠĠ Ġnum Coins Input !!. setText ( preferences Manager !!. num Coins . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġsave Settings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġflip () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( verify Form ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Activity Ġ= Ġactivity Ġas ĠMainActivity ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ?. play Sound ( QR NG Type . CO INS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Coins Ġ= Ġnum Coins Input !!. text . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf lips Ġ= Ġget Numbers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Coins , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Container !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflip Text Ġ= Ġget Coin Results ( f lips , Ġrequire Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory DataManager !!. add History Record ( QR NG Type . CO INS , Ġflip Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Results ( results !! , ĠHtml Compat . from Html ( flip Text , Html Compat . FROM _ HTML _ MODE _ LEG ACY ), Ġresults Animation Length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġverify Form (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard ( require Activity ()) ĊĠĠĠĠĠĠĠ Ġf ocal Point !!. request Focus () ĊĠĠĠĠĠĠĠ Ġval Ġnum Coins Ġ= Ġnum Coins Input !!. text . toString () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Coins . toInt () Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar Display . show Snackbar ( getString ( R . string . zero _ coins )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar Display . show Snackbar ( getString ( R . string . not _ a _ number )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy Numbers () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnumbers Text Ġ= Ġresults !!. text . toString () ĊĠĠĠĠĠĠĠ Ġcopy Results To Clipboard ( numbers Text , Ġsn ackbar Display , Ġrequire Activity ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġpreferences Manager !!. save Num Coins ( num Coins Input !!. text . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġsh ake Manager !!. unregister Listener ( shake Listener ) ĊĠĠĠĠĠĠĠ Ġsave Settings () ĊĠĠĠ Ġ} Ċ }