package Ġcom . all at . m bo ych enko . silver thread . presentation . views . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Number Picker Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . widget . Switch Compat Ċ import Ġandroidx . constraint layout . widget . Group Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . all at . m bo ych enko . silver thread . R Ċ import Ġcom . all at . m bo ych enko . silver thread . presentation . models . Pract ice Stage Ċ import Ġcom . all at . m bo ych enko . silver thread . presentation . present ers . Pract ice Timer Presenter Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ class ĠPract ice Timer Fragment Ġ: ĠBase All at Ra Fragment (), ĠI Pract ice Timer Fragment View Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpresenter : ĠPract ice Timer Presenter Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaction Fab : ĠFloating ActionButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġall at Picker : ĠNumber Picker ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġminutes Picker : ĠNumber Picker ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġseconds Picker : ĠNumber Picker ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstage Name : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstage Rem an ing : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġall at Length Switch : ĠSwitch Compat ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhalf All at Text : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfull All at Text : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġactive Stage Group : ĠGroup ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsetup Remaining Group : ĠGroup ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdesc Dialog : ĠAlertDialog ĊĊĠĠĠ Ġprivate Ġval ĠtextColor Active Ġby Ġlazy Ġ{ ĠContext Compat . getColor ( context !! , ĠR . color . color Active ) Ġ} ĊĠĠĠ Ġprivate Ġval ĠtextColor Default Ġby Ġlazy Ġ{ Ġhalf All at Text . text Colors Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġdesc Dialog Ġ= Ġ ĠAlertDialog . Builder ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . practice _ desk ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . hide ) Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . dismiss ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . practice _ timer _ fragment , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Fab Ġ= ĠfindViewById ( R . id . action _ fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Picker Ġ= ĠfindViewById ( R . id . minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds Picker Ġ= ĠfindViewById ( R . id . seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall at Picker Ġ= ĠfindViewById ( R . id . all ats ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage Name Ġ= ĠfindViewById ( R . id . stage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage Rem an ing Ġ= ĠfindViewById ( R . id . stage Remaining ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Stage Group Ġ= ĠfindViewById ( R . id . active Stage Group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Remaining Group Ġ= ĠfindViewById ( R . id . setup Remaining Group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall at Length Switch Ġ= ĠfindViewById ( R . id . switch All at ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhalf All at Text Ġ= ĠfindViewById ( R . id . short All at ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull All at Text Ġ= ĠfindViewById ( R . id . full All at ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġall at Picker . min Value Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall at Picker . max Value Ġ= Ġ 1 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Picker . min Value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Picker . max Value Ġ= Ġ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds Picker . min Value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds Picker . max Value Ġ= Ġ 5 9 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage Rem an ing . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . start Stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġaction Fab . setImage Resource ( R . drawable . ic _ play ) ĊĠĠĠĠĠĠĠ Ġinit Stage () ĊĠĠĠĠĠĠĠ Ġpresenter . attach View ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġpresenter . detach View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . chet ver ik _ menu _ item , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Fragment Tag () Ġ= ĠPR ACT ICE _ FRAGMENT _ TAG ĊĊĠĠĠ Ġoverride Ġfun Ġtoolbar Title () Ġ= ĠR . string . practice _ timer ĊĊĠĠĠ Ġoverride Ġfun Ġstage Changed ( stage : ĠPract ice Stage , Ġcur All at : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( stage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPract ice Stage . INIT Ġ-> Ġinit Stage () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPract ice Stage . START Ġ-> Ġactive Stage ( stage . get Stage Desc ( context !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPract ice Stage . ALL AT Ġ-> Ġactive Stage ( stage . get Stage Desc ( context !! , Ġcur All at )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Stage () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Fab . setImage Resource ( R . drawable . ic _ play ) ĊĠĠĠĠĠĠĠ Ġactive Stage Group . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġsetup Remaining Group . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġstage Rem an ing . text Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactive Stage ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Stage Group . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġsetup Remaining Group . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġstage Name . text Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġaction Fab . setImage Resource ( R . drawable . ic _ stop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Offset (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmins Ġ= Ġminutes Picker . value ĊĠĠĠĠĠĠĠ Ġval Ġsec Ġ= Ġseconds Picker . value ĊĠĠĠĠĠĠĠ Ġreturn Ġsec Ġ+ Ġmins Ġ* Ġ 6 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll ats Num () Ġ= Ġall at Picker . value ĊĊĠĠĠ Ġoverride Ġfun Ġset M ins View Offset ( min : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġminutes Picker . value Ġ= Ġmin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset All at Length Short ( short : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġall at Length Switch . isChecked Ġ= Ġshort . not () ĊĠĠĠĠĠĠĠ Ġswitch TextColor Update ( short . not ()) ĊĊĠĠĠĠĠĠĠ Ġall at Length Switch . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set All at Length Short (! isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch TextColor Update ( isChecked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll at Length Short (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġall at Length Switch . isChecked . not () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch TextColor Update ( isChecked : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull All at Text . setTextColor ( textColor Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhalf All at Text . setTextColor ( textColor Default ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull All at Text . setTextColor ( textColor Default ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhalf All at Text . setTextColor ( textColor Active ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Seconds View Offset ( sec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġseconds Picker . value Ġ= Ġsec ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstage Time Remaining ( mins : ĠInt , Ġsec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstage Rem an ing . text Ġ= ĠString . format ("% 0 2 d Ġ: Ġ% 0 2 d ", Ġmins , Ġsec ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPR ACT ICE _ FRAGMENT _ TAG Ġ= Ġ" PR ACT ICE _ FRAGMENT _ TAG " ĊĠĠĠ Ġ} Ċ Ċ }