package Ġcom . example . dj abe . sp let nat rg ov ina čĊč Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . support . design . widget . Navigation View č Ċ import Ġandroid . support . v 4 . widget . Drawer Layout č Ċ import Ġandroid . support . v 7 . app . ActionBar Drawer Toggle č Ċ import Ġandroid . support . v 7 . app . AppCompatActivity č Ċ import Ġandroid . util . Log č Ċ import Ġandroid . view . MenuItem č Ċ import Ġandroid . view . View č Ċ import Ġandroid . widget . Adapter View č Ċ import Ġandroid . widget . Toast č Ċ import Ġcom . example . dj abe . sp let nat rg ov ina . R . id . my profile č Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* č Ċ import Ġretrofit 2 . Call č Ċ import Ġretrofit 2 . Callback č Ċ import Ġretrofit 2 . Response č Ċ import Ġjava . io . IOException čĊč Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠCallback < List < Product >> Ġ{ čĊčĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠProduct Adapter ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġup or ab nik : ĠString ? Ġ= Ġ"" čĊčĊĠĠĠ Ġprivate Ġvar Ġdl : ĠDraw er Layout ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġab dt : ĠAction Bar Drawer Toggle ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġnv : ĠNavigation View ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġnav : ĠNavigation View ? Ġ= Ġnull čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġug ot ov imo Ġk ak sen Ġmenu Ġmor amo Ġdisplay ati čĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġintent ?. getString Extra (" ep . rest . user ") čĊĠĠĠĠĠĠĠ Ġup or ab nik Ġ= Ġuser čĊčĊĠĠĠĠĠĠĠ Ġ// ĠS pre min jan je Ġvisibility ja čĊĠĠĠĠĠĠĠ Ġval Ġnav View Ġ= ĠfindViewById < Navigation View >( R . id . nav _ view ) čĊĠĠĠĠĠĠĠ Ġval Ġlogout Ġ= Ġnav View . menu . find Item ( R . id . logout ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġce Ġje Ġup or ab nik Ġpri jav lj en čĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull Ġ&& Ġuser . length Ġ> Ġ 2 Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin Ġ= Ġnav View . menu . find Item ( R . id . login ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy profile Ġ= Ġnav View . menu . find Item ( R . id . my profile ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogout . isVisible Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy profile . isVisible Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin . isVisible Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// Ġce Ġse Ġje Ġup or ab nik Ġod jav il čĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġ"" Ġ&& Ġlogout . isVisible Ġ== Ġtrue ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin Ġ= Ġnav View . menu . find Item ( R . id . login ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy profile Ġ= Ġnav View . menu . find Item ( R . id . my profile ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogout . isVisible Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy profile . isVisible Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin . isVisible Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// ĠITE MS čĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠProduct Adapter ( this ) čĊĠĠĠĠĠĠĠ Ġitems . adapter Ġ= Ġadapter čĊĠĠĠĠĠĠĠ Ġitems . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġ_, Ġ_, Ġi , Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= Ġadapter ?. getItem ( i ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( product Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠProduct Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" ep . rest . id ", Ġproduct . id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" ep . rest . user ", Ġup or ab nik ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġcontainer . setOn Refresh Listener Ġ{ ĠProduct Service . instance . getAll (). enqueue ( this ) Ġ} čĊčĊĠĠĠĠĠĠĠ ĠProduct Service . instance . getAll (). enqueue ( this ) čĊčĊĠĠĠĠĠĠĠ Ġnav Ġ= ĠfindViewById ( R . id . nav _ view ) čĊĠĠĠĠĠĠĠ Ġnav ?. menu ?. set Group Visible ( my profile , Ġtrue ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠNAVBAR čĊĠĠĠĠĠĠĠ Ġdl Ġ= ĠfindViewById ( R . id . dl ) Ġas ĠDraw er Layout čĊĠĠĠĠĠĠĠ Ġab dt Ġ= ĠAction Bar Drawer Toggle ( this , Ġdl , ĠR . string . Open , ĠR . string . Close ) čĊčĊĠĠĠĠĠĠĠ Ġdl !!. add Drawer Listener ( ab dt !! ) čĊĠĠĠĠĠĠĠ Ġab dt !!. sync State () čĊčĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) čĊčĊĠĠĠĠĠĠĠ Ġnv Ġ= ĠfindViewById ( R . id . nav _ view ) čĊĠĠĠĠĠĠĠ Ġval Ġlogo Ġ= Ġnv ?. findViewById < View >( R . id . my profile ) čĊčĊĠĠĠĠĠĠĠ Ġlogo ?. visibility Ġ= ĠView . VISIBLE čĊĠĠĠĠĠĠĠ Ġnv !!. set Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . home Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" ep . rest . user ", Ġup or ab nik ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . login Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" ep . rest . user ", Ġup or ab nik ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . my profile Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠUserInfo Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" ep . rest . user ", Ġup or ab nik ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . logout Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// reset ir amo Ġuser ja čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" ep . rest . user ", Ġ"") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( ab dt !!. on Options ItemSelected ( item )) Ġtrue Ġelse Ġsuper . on Options ItemSelected ( item ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Product >>, Ġresponse : ĠResponse < List < Product >>) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġhits Ġ= Ġresponse . body () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Hits : Ġ" Ġ+ Ġhits . size ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. clear () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. addAll ( hits ) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" An Ġerror Ġoccurred : Ġ${ response . error Body (). string () }" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" An Ġerror Ġoccurred : Ġerror Ġwhile Ġdecoding Ġthe Ġerror Ġmessage ." čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠerrorMessage , ĠToast . LENGTH _ SHORT ). show () čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , ĠerrorMessage ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġcontainer . is Refresh ing Ġ= Ġfalse čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Product >>, Ġt : ĠThrowable ) Ġ{ čĊĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Error : Ġ${ t . message }", Ġt ) čĊĠĠĠĠĠĠĠ Ġcontainer . is Refresh ing Ġ= Ġfalse čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠMainActivity :: class . java . canonical Name čĊĠĠĠ Ġ} č Ċ } čĊ