package Ġmot oc it izen . ui . menus Ċ Ċ import Ġandroid . support . v 4 . app . Fragment Activity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġmot oc it izen . content . acc ident . Acc ident Ċ import Ġmot oc it izen . main . R Ċ import Ġmot oc it izen . user . User Ċ import Ġmot oc it izen . utils . get Acc ident Text To Copy Ċ import Ġmot oc it izen . utils . get Ph ones FromText Ċ import Ġmot oc it izen . utils . g one Ċ import Ġmot oc it izen . utils . make Dial Ċ import Ġorg . jetbrains . ank o . send SMS Ċ import Ġorg . jetbrains . ank o . share Ċ Ċ // todo Ġrefactor Ċ class ĠDetails Menu Controller ( val Ġactivity : ĠFragment Activity , Ġval Ġaccident : ĠAcc ident ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSMS _ MENU _ MIN _ ID Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSMS _ MENU _ MAX _ ID Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCALL _ MENU _ MIN _ ID Ġ= Ġ 4 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCALL _ MENU _ MAX _ ID Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGENER AL _ INFORMATION _ VIEW Ġ= ĠR . id . acc _ details _ general ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMENU Ġ= ĠR . menu . menu _ acc ident _ details ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠMenu Action Ġ{ ĊĠĠĠĠĠĠĠ ĠTO _ MAP , ĠH IDE _ INFO , ĠSHARE , ĠS END _ HIDE _ REQUEST , ĠS END _ FIN ISH _ REQUEST , ĠNOT H ING ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġgeneral Layout : ĠView Ġ= Ġactivity . findViewById ( GENERAL _ INFORMATION _ VIEW ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Menu : ĠMenu ĊĊĠĠĠ Ġ// todo Ġy ob any j Ġp iz de ts !!! ĊĠĠĠ Ġfun Ġoptions Menu Created ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . menu Inflater . inflate ( MENU , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġm Menu Ġ= Ġmenu ĊĠĠĠĠĠĠĠ Ġ// TODO ĠÐļ Ð¾ÑģÑĤ Ñĭ Ð»ÑĮ ĊĠĠĠĠĠĠĠ Ġval Ġcontact Numbers Ġ= Ġaccident . description . get Ph ones FromText () ĊĠĠĠĠĠĠĠ Ġif Ġ( contact Numbers . isEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( contact Numbers . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Menu . add ( 0 , ĠSMS _ MENU _ MIN _ ID , Ġ 0 , Ġactivity . getString ( R . string . send _ sms ) Ġ+ Ġcontact Numbers [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Menu . add ( 0 , ĠCALL _ MENU _ MIN _ ID , Ġ 0 , Ġactivity . getString ( R . string . make _ call ) Ġ+ Ġcontact Numbers [ 0 ]) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsms Sub Ġ= Ġm Menu . add Sub Menu ( activity . getString ( R . string . send _ sms )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Sub Ġ= Ġm Menu . add Sub Menu ( activity . getString ( R . string . make _ call )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Numbers . indices . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Sub . add ( 0 , ĠSMS _ MENU _ MIN _ ID Ġ+ Ġit , Ġ 0 , Ġcontact Numbers [ it ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Sub . add ( 0 , ĠCALL _ MENU _ MIN _ ID Ġ+ Ġit , Ġ 0 , Ġcontact Numbers [ it ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// todo Ġblo ody Ġhe ll ĊĠĠĠ Ġfun Ġitem Selected ( item : ĠMenuItem ): ĠMenu Action Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġin ĠSMS _ MENU _ MIN _ ID .. ( SMS _ MENU _ MAX _ ID Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsms Prefix Ġ= Ġactivity . getString ( R . string . send _ sms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . send SMS ( item . title . toString (). substring After ( sms Prefix )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( item . itemId Ġin ĠCALL _ MENU _ MIN _ ID .. ( CALL _ MENU _ MAX _ ID Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Prefix Ġ= Ġactivity . getString ( R . string . make _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . make Dial ( item . title . toString (). substring After ( call Prefix )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ share ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġactivity . share ( acc ident . get Acc ident Text To Copy ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ hide _ info , ĠR . id . menu _ hide _ info Ġ-> Ġhide Menu Action () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ map , ĠR . id . action _ to _ map ĠĠĠĠĠĠĠ Ġ-> ĠMenu Action . TO _ MAP ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ share ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> ĠMenu Action . SHARE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ hide _ info , ĠR . id . menu _ hide _ info Ġ-> ĠMenu Action . HIDE _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ acc _ finish ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> ĠMenu Action . SEND _ FIN ISH _ REQUEST ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ acc _ hide ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> ĠMenu Action . SEND _ HIDE _ REQUEST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> ĠMenu Action . NOTH ING ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Menu Action () Ġ= Ġshow General Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( general Layout . visibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE Ġ-> ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠĠ Ġ-> ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġshow General Layout ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Item Action Hide Info Ġ= Ġm Menu . find Item ( R . id . action _ hide _ info ) ĊĠĠĠĠĠĠĠ Ġval Ġmenu Item Menu Hide Info Ġ= Ġm Menu . find Item ( R . id . menu _ hide _ info ) ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠView . IN VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgeneral Layout . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item Action Hide Info . setIcon ( R . drawable . ic _ panel _ down ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item Menu Hide Info . title Ġ= Ġactivity . getString ( R . string . show _ info _ details ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgeneral Layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item Action Hide Info . setIcon ( R . drawable . ic _ panel _ up ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item Menu Hide Info . title Ġ= Ġactivity . getString ( R . string . hide _ info _ details ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmenu Re construction () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Menu . find Item ( R . id . menu _ acc _ finish ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= ĠUser . is Mod erator () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( if Ġ( acc ident . is Ended ()) ĠR . string . finish Ġelse ĠR . string . un finish ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Menu . find Item ( R . id . menu _ acc _ hide ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= ĠUser . is Mod erator () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( if Ġ( acc ident . is Hidden ()) ĠR . string . show Ġelse ĠR . string . hide ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }