package Ġcom . true ken yan . cock tail . ui . fragments Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . android . vol ley . Request Queue Ċ import Ġcom . android . vol ley . toolbox . Vol ley Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . rev os le ap . simple adapter . Simple Adapter Ċ import Ġcom . rev os le ap . simple adapter . Simple Callbacks Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . true ken yan . cock tail . R Ċ import Ġcom . true ken yan . cock tail . callbacks . Callbacks Ċ import Ġcom . true ken yan . cock tail . models . C ock tail Model Ċ import Ġcom . true ken yan . cock tail . request . APIClient Ċ import Ġcom . true ken yan . cock tail . request . API Service Ċ import Ġcom . true ken yan . cock tail . ui . activities . C ock tail Activity Ċ import Ġcom . true ken yan . cock tail . utils . Common s Ċ import Ġcom . true ken yan . cock tail . utils . Pref Manager Ċ import Ġkotlinx . android . synt hetic . main . item _ home _ list . view .* Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ Ċ class ĠFragment Home Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġapi Service : ĠAPI Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠprogressBar : ĠProgress Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhome List : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġc ock tail Adapter : ĠSimple Adapter ĊĠĠĠ Ġprivate Ġvar Ġc ock t ails Ġ= Ġmutable ListOf < C ock tail Model >() ĊĠĠĠ Ġprivate Ġvar Ġrequest Queue : ĠRequest Queue ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠCallback s ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpref Manager : ĠPref Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġsimple Callbacks : ĠSimple Callbacks Ġ= Ġobject Ġ: ĠSimple Callbacks Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind View ( view : ĠView , Ġitem : ĠAny , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġas ĠC ock tail Model ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġview . cock tail _ image ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc ock tail Name Ġ= Ġview . cock tail _ name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( item . str Dr ink Thumb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ock tail Name . text Ġ= Ġitem . str Dr ink ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Clicked ( view : ĠView , Ġitem : ĠAny , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġas ĠC ock tail Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( context , ĠC ock tail Activity :: class . java ). apply Ġ{ Ġput Extra ( Common s . DR INK _ ID , Ġitem . id Dr ink ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. startActivity ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Long Clicked ( it : ĠView ?, Ġitem : ĠAny , Ġposition : ĠInt ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ home , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠprogressBar Ġ= Ġroot View . findViewById ( R . id . progress _ bar ) ĊĠĠĠĠĠĠĠ Ġhome List Ġ= Ġroot View . findViewById ( R . id . home _ list ) ĊĠĠĠĠĠĠĠ Ġc ock tail Adapter Ġ= ĠSimple Adapter ( R . layout . item _ home _ list , Ġsimple Callbacks ) ĊĠĠĠĠĠĠĠ Ġrequest Queue Ġ= ĠVol ley . new Request Queue ( context ) ĊĠĠĠĠĠĠĠ Ġpref Manager Ġ= ĠPref Manager ( context !!. application Context ) ĊĊĠĠĠĠĠĠĠ Ġapi Service Ġ= ĠAP IC lient . get API Service () ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġfetch Dr inks () ĊĊĠĠĠĠĠĠĠ Ġhome List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġc ock tail Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Prepare Options Menu ( menu ) ĊĠĠĠĠĠĠĠ Ġval Ġrandom Item Ġ= Ġmenu . find Item ( R . id . random ) ĊĠĠĠĠĠĠĠ Ġval Ġasc Item Ġ= Ġmenu . find Item ( R . id . ascending ) ĊĠĠĠĠĠĠĠ Ġval Ġdesc Item Ġ= Ġmenu . find Item ( R . id . desc ending ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( pref Manager ?. getOrder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommons . RANDOM Ġ-> Ġrandom Item ?. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommons . ASC ENDING Ġ-> Ġasc Item ?. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommons . DESC ENDING Ġ-> Ġdesc Item ?. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġal co h olic Ġ= Ġmenu . find Item ( R . id . al co h olic ) ĊĠĠĠĠĠĠĠ Ġval Ġnon Al co h olic Ġ= Ġmenu . find Item ( R . id . non _ al co h olic ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( pref Manager ?. is Al co h olic ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġal co h olic ?. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnon Al co h olic ?. isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . home _ options , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . al co h olic Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Manager !!. set Al co h olic ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Dr inks () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . non _ al co h olic Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Manager !!. set Al co h olic ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Dr inks () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . ascending Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Manager !!. set Order ( Common s . ASC ENDING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . desc ending Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Manager !!. set Order ( Common s . DESC ENDING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . random Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Manager !!. set Order ( Common s . RANDOM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactivity ?. invalidate Options Menu () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġlistener Ġ= Ġcontext Ġas ĠCallback s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Manager !!. is Al co h olic () Ġ-> Ġlistener !!. on Title Found ( Common s . AL CO H OL IC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlistener !!. on Title Found ( Common s . NON _ AL CO H OL IC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Dr inks () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠCall < Any > Ġ= Ġif Ġ( pref Manager !!. is Al co h olic ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service ?. get Al co h olic () !! ĊĠĠĠĠĠĠĠ Ġelse Ġapi Service ?. get Non Al co h olic () !! ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġhome List . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġc ock t ails . clear () ĊĠĠĠĠĠĠĠ Ġget Title () ĊĊĠĠĠĠĠĠĠ Ġrequest . enqueue ( object Ġ: ĠCallback < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Any >, Ġresponse : Ġretrofit 2 . Response < Any >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome List . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠAny Ġ= response . body () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse Json ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Any >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" ERROR ", Ġt . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" O oo ops . ĠUnable Ġto Ġfetch Ġdr inks ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Json ( result : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠGson (). toJson ( result ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠJSONObject ( res ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġresponse . get JSONArray ( Common s . DR IN KS ) Ġas ĠJSONArray ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ( json Array . length () Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġjson Array [ i ] Ġas ĠJSONObject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc ock Tail Ġ= ĠGson (). fromJson ( o . toString (), ĠC ock tail Model :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cock t ails . contains ( cock Tail )) Ġc ock t ails . add ( cock Tail ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsort List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsort List () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( pref Manager ?. getOrder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommons . ASC ENDING Ġ-> Ġc ock t ails . sortBy Ġ{ Ġit . str Dr ink Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommons . DESC ENDING Ġ-> Ġc ock t ails . sortBy Descending Ġ{ Ġit . str Dr ink Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġc ock t ails Ġ= Ġc ock t ails . sh uffled () Ġas ĠMutable List < C ock tail Model > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc ock tail Adapter . change Items ( cock t ails Ġas ĠMutable List < Any >) ĊĠĠĠ Ġ} Ċ }