package Ġcom . cross bow ff s . sync shot . activity Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . n fc . N def Message Ċ import Ġandroid . n fc . N def Record Ċ import Ġandroid . n fc . N fc Adapter Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . cross bow ff s . sync shot . My App Ċ import Ġcom . cross bow ff s . sync shot . R Ċ import Ġcom . cross bow ff s . sync shot . adapter . Event Part icipation Array Adapter Ċ import Ġcom . cross bow ff s . sync shot . model . EventData Ċ import Ġcom . cross bow ff s . sync shot . model . Part icipation Data Ċ import Ġcom . cross bow ff s . sync shot . model . UserData Ċ import Ġcom . cross bow ff s . sync shot . util . get Re levant Photos Ċ import Ġcom . cross bow ff s . sync shot . util . upload Images Ċ import Ġcom . microsoft . windowsazure . mobile services . Mobile ServiceClient Ċ import Ġkotlinx . android . synt hetic . main . activity _ event _ details .* Ċ import Ġkotlinx . android . synt hetic . main . toolbar .* Ċ import Ġjava . nio . charset . Charset Ċ Ċ class ĠEvent Details Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġservice Client : ĠMobile ServiceClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġevent Part icipation ListAdapter : ĠEvent Part icipation Array Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġn fc Adapter : ĠN fc Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġevent : ĠEvent Data ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġevent Id : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠuserId To Obj Map : ĠMap < String , ĠUser Data > ĊĠĠĠ Ġprivate Ġvar Ġinitialized Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ event _ details ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġevent Ġ= Ġintent . get Parcelable Extra < EventData >(" event ") ĊĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġevent . id !! ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. title Ġ= Ġevent . name ĊĠĠĠĠĠĠĠ Ġtoolbar . subtitle Ġ= Ġ" Created Ġby Ġ< unknown >" ĊĊĠĠĠĠĠĠĠ Ġevent Participants List . setOn ItemClickListener Ġ{ Ġadapter View , Ġview , Ġi , Ġl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠUser Event Photos Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġevent Part icipation ListAdapter . getItem ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" event ", Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" participant ", Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" participant User ", ĠuserId To Obj Map [ item . userId ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! n fc Adapter . isEnabled Ġ|| Ġ! n fc Adapter . is N def Push Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġneed Ġto Ġdetect Ġwhen Ġthis Ġcondition Ġchanges Ġwhile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġactivity Ġis Ġactive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Tip Label . text Ġ= Ġ" Please Ġenable ĠN FC Ġto Ġshare Ġevents ." ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Adapter . set N def Push Message ( create N def Message ( eventId ), Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġservice Client Ġ= Ġ( application Ġas ĠMy App ). service Client ĊĠĠĠĠĠĠĠ Ġload UserId ToObject Map Async () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ event _ details , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ refresh _ details Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Event People Details Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . menu _ item _ upload _ images Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Images Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Images Async () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphotos Ġ= Ġget Re levant Photos ( this @ Event Details Activity , Ġevent . startTime , Ġevent . endTime ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . max Ġ= Ġphotos . size ĊĠĠĠĠĠĠĠ Ġdialog . isIn determinate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġdialog . setMessage (" Up loading Ġimages ...") ĊĠĠĠĠĠĠĠ Ġdialog . set Progress Style ( Progress Dialog . STYLE _ HORIZONTAL ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġobject Ġ: ĠAsync Task < Void , ĠInt , ĠPart icipation Data >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġp 0 : ĠVoid ?): ĠPart icipation Data Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġupload Images ( application Ġas ĠMy App , Ġevent , Ġphotos ) Ġ{ Ġdone , Ġtotal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Progress ( done , Ġtotal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Update ( var arg Ġvalues : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . progress Ġ= Ġvalues [ 0 ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠPart icipation Data ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . setOn Cancel Listener Ġ{ Ġdi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġtask . execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload UserId ToObject Map Async () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠThis Ġis Ġnot Ġscal able Ġat Ġall Ġ( also Ġa Ġsecurity Ġfl aw ), ĊĠĠĠĠĠĠĠ Ġ// Ġbut ĠI 'm Ġtoo Ġlazy Ġto Ġfind Ġa Ġproper Ġsolution Ġfor Ġthis ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġobject Ġ: ĠAsync Task < Void , ĠVoid , ĠMap < String , ĠUser Data >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġp 0 : ĠVoid ?): ĠMap < String , ĠUser Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġservice Client . getTable ( UserData :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser List Ġ= Ġtable . execute (). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġuser List . map Ġ{ Ġit . id !! Ġto Ġit Ġ}. toMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠMap < String , ĠUser Data >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId To Obj Map Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . subtitle Ġ= Ġ" Created Ġby Ġ${ result [ event . creator Id ] !!. name }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Part icipation ListAdapter Ġ= ĠEvent Part icipation Array Adapter ( this @ Event Details Activity , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Participants List . adapter Ġ= Ġevent Part icipation ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Event People Details Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . setMessage (" Loading Ġuser Ġinfo ...") ĊĠĠĠĠĠĠĠ Ġdialog . setOn Cancel Listener Ġ{ Ġdi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġtask . execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Event People Details Async () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġservice Client . getTable ( Part icipation Data :: class . java ). where (). field (" eventId "). eq ( eventId ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġobject Ġ: ĠAsync Task < Void , ĠVoid , ĠList < Part icipation Data >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġp 0 : ĠVoid ?): ĠList < Part icipation Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsync Context Ġ= Ġservice Client . sync Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Context . push (). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquery . execute (). get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠList < Part icipation Data >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Part icipation ListAdapter . replaceAll ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . setMessage (" Loading Ġevent Ġparticipants ...") ĊĠĠĠĠĠĠĠ Ġdialog . setOn Cancel Listener Ġ{ Ġdi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġtask . execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate N def Message ( id : ĠString ): ĠN def Message Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Bytes Ġ= Ġid . toByteArray ( Charset . forName (" utf - 8 ")) ĊĠĠĠĠĠĠĠ Ġval Ġmime Record Ġ= ĠN def Record . create Mime (" text / plain ", Ġid Bytes ) ĊĠĠĠĠĠĠĠ Ġval Ġa ar Ġ= ĠN def Record . create Application Record (" com . cross bow ff s . sync shot ") ĊĠĠĠĠĠĠĠ Ġreturn ĠN def Message ( mime Record , Ġa ar ) ĊĠĠĠ Ġ} Ċ } Ċ