package Ġcom . example . k ale pa Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Navigation View Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . view . Gravity Compat Ċ import Ġandroid . support . v 7 . app . ActionBar Drawer Toggle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . example . k ale pa . Fragments . Search Fragment Ċ import Ġcom . example . k ale pa . Fragments . Settings Fragment Ċ import Ġcom . example . k ale pa . Fragments . Welcome Screen Fragment Ċ import Ġcom . example . k ale pa . Fragments . Wish List Fragment Ċ import Ġcom . example . k ale pa . Preferences . Shared App Ċ import Ġcom . example . k ale pa . common . load Image Ċ import Ġcom . github . kit tin un f . fuel . android . extension . response Json Ċ import Ġcom . github . kit tin un f . fuel . http Get Ċ import Ġcom . github . kit tin un f . fuel . http Post Ċ import Ġcom . github . kit tin un f . result . Result Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . app _ bar _ main .* Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠNavigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĠĠĠ Ġ// val Ġproject URL Ġ= Ġ" https :// kel pa - api . herokuapp . com " ĊĠĠĠ Ġval Ġproject URL Ġ= Ġ" https :// k ale pa . azure websites . net " ĊĠĠĠ Ġval Ġweb URL Ġ= Ġ" https :// change pop - fw . herokuapp . com " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcheck S es ion ( 0 , ĠMySql Helper ( this ). fetch Cookies ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck S es ion Ġ( index : ĠInt , Ġlist : ĠArrayList < Pair < Int , String >>) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . progress _ dialog , null ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġdialog View . findViewById < TextView >( R . id . message ) ĊĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" Comp rob ando Ġusuario ..." ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġlist . size Ġ- Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Activity . start ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( id , Ġcookie ) Ġ= Ġlist [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠMainActivity (). project URL Ġ+ Ġ"/ user " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġurl . http Get (). header ( Pair (" Cookie ", Ġcookie )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . response Json Ġ{ Ġrequest , Ġresponse , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMySql Helper ( this ). delete Cookie ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck S es ion ( index Ġ+ Ġ 1 , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared App . prefs . cookie Ġ= Ġcookie ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize ( result . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer _ layout . is Drawer Open ( Gravity Compat . START )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer _ layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġnavigation Ġview Ġitem Ġclicks Ġhere . ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ ex plor ar _ art iculos Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwelcome Screen Fragment Ġ= ĠWelcome Screen Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fragment ( welcome Screen Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ bus queda _ fil tr ada Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Fragment Ġ= ĠSearch Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fragment ( search Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ lista _ de _ de se os Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwish List Fragment Ġ= ĠW ish List Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fragment ( wish List Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ configur acion Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Fragment Ġ= ĠSettings Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fragment ( settings Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ sub ir _ art iculo Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpload Activity . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ chat Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat List Activity . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ log _ out Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Out () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdrawer _ layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Fragment ( fragment : ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . main _ fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Ġ( json User : ĠJSONObject ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġ/* val Ġban _ date Ġ= Ġjson User . get (" ban _ until "). toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! ban _ date . equals (" None ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbid Date Ġ= Ġnow . get ( Calendar . YEAR ). toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", Ġnow . get ( Calendar . MONTH )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d ", Ġnow . get ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġbid Date . toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprod Bid Date Ġ= Ġban _ date . replace ("- ", Ġ"") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġban One Ġ= Ġprod Bid Date . substring ( 0 , Ġ 8 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ban One Ġ> Ġactual ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Out () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġdrawer _ layout , Ġtoolbar , ĠR . string . navigation _ drawer _ open , ĠR . string . navigation _ drawer _ close ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdrawer _ layout . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĊĠĠĠĠĠĠĠ Ġval Ġwelcome Screen Fragment Ġ= ĠWelcome Screen Fragment . newInstance () ĊĠĠĠĠĠĠĠ Ġopen Fragment ( welcome Screen Fragment ) ĊĊĠĠĠĠĠĠĠ Ġnav _ view . set Navigation ItemSelected Listener ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġheader _ view Ġ= Ġnav _ view . getHeader View ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= Ġheader _ view . findViewById < ImageView >( R . id . navigation _ header _ profile _ image ) ĊĠĠĠĠĠĠĠ Ġval Ġun ame Ġ= Ġheader _ view . findViewById < TextView >( R . id . n _ nav Head _ uname ) ĊĠĠĠĠĠĠĠ Ġval Ġum ail Ġ= Ġheader _ view . findViewById < TextView >( R . id . n _ nav Head _ um ail ) ĊĊĠĠĠĠĠĠĠ Ġprofile . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSelf Profile Activity . start ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġun ame . setText ( json User . get (" nick "). toString ()) ĊĠĠĠĠĠĠĠ Ġum ail . setText ( json User . get (" mail "). toString ()) ĊĠĠĠĠĠĠĠ Ġprofile . load Image ( json User . get (" avatar "). toString ()) ĊĠĠĠĠĠĠĠ ĠShared App . prefs . user Place Ġ= Ġjson User . get (" place "). toString () ĊĠĠĠĠĠĠĠ ĠShared App . prefs . userId Ġ= Ġjson User . get (" id "). toString (). toInt () ĊĠĠĠĠĠĠĠ ĠShared App . prefs . is Mod Ġ= Ġjson User . get (" is _ mod "). toString (). to Boolean () ĊĠĠĠĠĠĠĠ ĠShared App . prefs . username Ġ= Ġjson User . get (" nick "). toString () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġlayout Inflater . inflate ( R . layout . progress _ dialog , null ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġdialog View . findViewById < TextView >( R . id . message ) ĊĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġ" C err ando ĠsesiÃ³n ..." ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠMainActivity (). project URL Ġ+ Ġ"/ logout " ĊĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġurl . http Get (). header ( Pair (" Cookie ", ĠShared App . prefs . cookie )) ĊĠĠĠĠĠĠĠ Ġreq . response Json Ġ{ Ġrequest , Ġresponse , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Error Ġal Ġcerr ar ĠsesiÃ³n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . start ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMySql Helper ( this ). clear Cookies () ĊĠĠĠ Ġ} Ċ Ċ } Ċ