package Ġcom . ste phen light cap . clin ic . view Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Floating ActionButton Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . view . View Ċ import Ġandroid . support . design . widget . Navigation View Ċ import Ġandroid . support . v 4 . view . Gravity Compat Ċ 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 . support . v 7 . widget . Toolbar Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . Window Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġcom . ste phen light cap . clin ic . R Ċ Ċ import Ġkotlinx . android . synt hetic . main . content _ main .* Ċ import Ġkotlinx . android . synt hetic . main . dialog _ edit _ user . view . edit text _ dialog _ name Ċ Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġcom . github . sun deep k . compact calendar view . Compact Calendar View Ċ import Ġcom . github . sun deep k . compact calendar view . domain . Event Ċ import Ġcom . ste phen light cap . clin ic . model . User Interactor Ċ import Ġcom . ste phen light cap . clin ic . model . model _ schema . App ointments Ċ import Ġcom . ste phen light cap . clin ic . model . model _ schema . Doctor Ċ import Ġcom . ste phen light cap . clin ic . model . model _ schema . User Ċ import Ġcom . ste phen light cap . clin ic . presenter . Main Presenter Ċ import Ġkotlinx . android . synt hetic . main . app _ bar _ main .* Ċ import Ġkotlinx . android . synt hetic . main . dialog _ edit _ user .* Ċ import Ġkotlinx . android . synt hetic . main . dialog _ add _ appointment .* Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠI _ Main View , ĠView . OnClickListener , ĠNavigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġpresenter : ĠMain Presenter ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById ( R . id . toolbar ) Ġas ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġfab Ġ= ĠfindViewById ( R . id . fab ) Ġas ĠFloating ActionButton Ċ // ĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Update Ġuser ", ĠSn ackbar . LENGTH _ LONG ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= ĠfindViewById ( R . id . drawer _ layout ) Ġas ĠDraw er Layout ĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġdrawer , Ġtoolbar , ĠR . string . navigation _ drawer _ open , ĠR . string . navigation _ drawer _ close ) ĊĠĠĠĠĠĠĠ Ġdrawer . set Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĊĠĠĠĠĠĠĠ Ġval Ġnavigation View Ġ= ĠfindViewById ( R . id . nav _ view ) Ġas ĠNavigation View ĊĠĠĠĠĠĠĠ Ġnavigation View . set Navigation ItemSelected Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠMain Presenter ( this , ĠUser Interactor ()) ĊĊĠĠĠĠĠĠĠ Ġ// Set Ġlisteners ĊĠĠĠĠĠĠĠ Ġmenu _ item . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġmenu _ item _ 2 . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġupdate UserInfo ( presenter !!. getUser ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate UserInfo ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext view _ home _ name . text Ġ= Ġuser . name ĊĠĠĠĠĠĠĠ Ġtext view _ home _ b mi . text Ġ= Ġuser . b mi . toString () ĊĠĠĠĠĠĠĠ Ġtext view _ home _ height . text Ġ= Ġuser . height . toString () ĊĠĠĠĠĠĠĠ Ġtext view _ home _ weight . text Ġ= Ġuser . weight . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user . app ointments Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . app ointments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠEvent ( Color . WHITE , Ġit . date , Ġit . reason For Visit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġcompact calendar _ view . add Event ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompact calendar _ view . invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġon Ġclicks Ġfor Ġeach Ġview Ġin Ġactivity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( p 0 !!. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ item Ġ-> Ġopen Edit User Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ item _ 2 Ġ-> Ġopen Add Appointment Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOpen s Ġa Ġdialog Ġto Ġsave Ġapp ointments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġopen Add Appointment Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . request Window Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠ Ġdialog . set Cancel able ( true ) ĊĠĠĠĠĠĠĠ Ġdialog . set ContentView ( R . layout . dialog _ add _ appointment ) ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġcreate Ġreal Ġdo ctors ĊĠĠĠĠĠĠĠ Ġ// Fake Ġfor Ġnow ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠDoctor (" Dr . ĠSteve ", Ġ" Heart ", Ġ" image / path ", Ġ" Working Ġhere Ġfor ĠX Ġyears ") ĊĠĠĠĠĠĠĠ Ġvar Ġdate : ĠLong Ġ= Ġ 0 ĊĊĊĠĠĠĠĠĠĠ Ġdialog . compact calendar _ view _ add . set Listener ( object Ġ: ĠComp act Calendar View . Compact Calendar View Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Day Click ( date Clicked : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġdialog . compact calendar _ view _ add . get Events ( date Clicked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Calendar :", Ġ" Day Ġwas Ġclicked : Ġ" Ġ+ Ġdate Clicked Ġ+ Ġ" Ġwith Ġevents Ġ" Ġ+ Ġevents ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġdate Clicked . time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Month Scroll ( first Day Of New Month : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG , Ġ" Month Ġwas Ġsc rolled Ġto : Ġ" Ġ+ Ġfirst Day Of New Month ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġdialog . button _ dialog _ appointment _ submit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Date Ġdate , ĠDoctor Ġdoctor , ĠString Ġreason For Visit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġappointment Ġ= ĠApp ointments ( date , Ġdoc , Ġdialog . edit text _ dialog _ appointment _ reason . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter !!. add Appointment ( appointment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . button _ dialog _ appointment _ cancel . setOnClickListener Ġ{ Ġdialog . dismiss () Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠI 'm Ġnot Ġsure Ġif ĠDialog s Ġshould Ġbe Ġopen Ġin Ġpresenter Ġor Ġview Ġas Ġit Ġis Ġa Ġview , Ġbut ĊĠĠĠĠ Ġ* Ġcontains Ġbusiness Ġlogic Ġ- Ġto Ġan Ġextent , Ġit Ġstill Ġcalls Ġpresenter Ġto Ġdo ĠDB Ġwork . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġopen Edit User Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdialog Ġ= ĠDialog ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . request Window Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠ Ġdialog . set Cancel able ( true ) ĊĠĠĠĠĠĠĠ Ġdialog . set ContentView ( R . layout . dialog _ edit _ user ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġuser Ġ= Ġpresenter !!. getUser () ĊĊĠĠĠĠĠĠĠ ĠLog . d (" Dialog :: ", Ġ" User Ġname Ġ- Ġ" Ġ+ Ġuser . name ) ĊĊĠĠĠĠĠĠĠ Ġdialog . edit text _ dialog _ name . setText ( user . name . toString ()) ĊĠĠĠĠĠĠĠ Ġdialog . edit ext _ dialog _ weight . setText ( user . weight . toString ()) ĊĠĠĠĠĠĠĠ Ġdialog . edit text _ dialog _ height . setText ( user . height . toString ()) ĊĠĠĠĠĠĠĠ Ġdialog . edit text _ dialog _ b mi . setText ( user . b mi . toString ()) ĊĊĠĠĠĠĠĠĠ Ġdialog . button _ dialog _ cancel . setOnClickListener Ġ{ Ġdialog . dismiss () Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . button _ dialog _ edit User . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠUser ( 0 , Ġdialog . edit text _ dialog _ name . text . toString (), Ġdialog . edit ext _ dialog _ weight . text . toString (). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . edit text _ dialog _ height . text . toString (). toDouble (), Ġdialog . edit text _ dialog _ b mi . text . toString (). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter !!. save User ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= ĠfindViewById ( R . id . drawer _ layout ) Ġas ĠDraw er Layout ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer . is Drawer Open ( Gravity Compat . START )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMenu Ġbuttons . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġnavigation Ġview Ġitem Ġclicks Ġhere . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . nav _ history ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġthe Ġcamera Ġaction ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . nav _ med ication ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . nav _ do ctors ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . nav _ settings ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . nav _ profile ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= ĠfindViewById ( R . id . drawer _ layout ) Ġas ĠDraw er Layout ĊĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ