/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . office u if abric . popup menu Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . v 4 . view . Accessibility Delegate Compat Ċ import Ġandroid . support . v 4 . view . View Compat Ċ import Ġandroid . support . v 4 . view . accessibility . Accessibility NodeInfo Compat Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . accessibility . Accessibility NodeInfo Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroid . widget . TextView Ċ import Ġcom . microsoft . office u if abric . R Ċ import Ġcom . microsoft . office u if abric . popup menu . PopupMenu . Companion . DEFAULT _ ITEM _ CHECK ABLE _ BE HAV IOR Ċ import Ġcom . microsoft . office u if abric . util . Theme Util Ċ import Ġcom . microsoft . office u if abric . util . isVisible Ċ import Ġcom . microsoft . office u if abric . view . Template View Ċ Ċ internal Ġclass ĠPopup MenuItem View Ġ: ĠTemplate View Ġ{ ĊĠĠĠ Ġvar Ġitem Check able Behavior : ĠPopup Menu . Item Check able Behavior Ġ= ĠDEFAULT _ ITEM _ CHECK ABLE _ BE HAV IOR ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item Check able Behavior ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPopup Menu . Item Check able Behavior . SINGLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow RadioButton Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow CheckBox Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPopup Menu . Item Check able Behavior . ALL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow RadioButton Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow CheckBox Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPopup Menu . Item Check able Behavior . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow RadioButton Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow CheckBox Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Views () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġinternal Ġvar Ġicon ResourceId : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Checked : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġshow Divider Below : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġshow RadioButton : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġshow CheckBox : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) ĊĊĠĠĠ Ġfun Ġset MenuItem ( popup MenuItem : ĠPopup MenuItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġpopup MenuItem . title ĊĠĠĠĠĠĠĠ Ġicon ResourceId Ġ= Ġpopup MenuItem . icon ResourceId ĊĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġpopup MenuItem . isChecked ĊĠĠĠĠĠĠĠ Ġshow Divider Below Ġ= Ġpopup MenuItem . show Divider Below ĊĊĠĠĠĠĠĠĠ Ġupdate Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Intercept Touch Event ( ev : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ?. action Mask ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Pressed State ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Pressed State ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ CANCEL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Pressed State ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTemplate ĊĊĠĠĠ Ġoverride Ġval Ġtemplate Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . view _ popup _ menu _ item ĊĊĠĠĠ Ġprivate Ġvar Ġicon ImageView : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtitle View : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġradio Button : ĠRadio Button ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠcheckBox : ĠCheckBox ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdivider View : ĠView ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Template Loaded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Template Loaded () ĊĊĠĠĠĠĠĠĠ Ġicon ImageView Ġ= Ġfind View In Template ById ( R . id . icon ) ĊĠĠĠĠĠĠĠ Ġtitle View Ġ= Ġfind View In Template ById ( R . id . title ) ĊĠĠĠĠĠĠĠ Ġradio Button Ġ= Ġfind View In Template ById ( R . id . radio _ button ) ĊĠĠĠĠĠĠĠ ĠcheckBox Ġ= Ġfind View In Template ById ( R . id . check _ box ) ĊĠĠĠĠĠĠĠ Ġdivider View Ġ= Ġfind View In Template ById ( R . id . divider ) ĊĊĠĠĠĠĠĠĠ Ġupdate Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle View ?. text Ġ= Ġtitle ĊĊĠĠĠĠĠĠĠ Ġicon ResourceId ?. let Ġ{ Ġicon ImageView ?. setImage Resource ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġicon ImageView ?. isVisible Ġ= Ġicon ResourceId Ġ!= Ġnull ĊĊĠĠĠĠĠĠĠ Ġradio Button ?. isVisible Ġ= Ġshow RadioButton ĊĠĠĠĠĠĠĠ ĠcheckBox ?. isVisible Ġ= Ġshow CheckBox ĊĠĠĠĠĠĠĠ Ġdivider View ?. isVisible Ġ= Ġshow Divider Below ĊĊĠĠĠĠĠĠĠ Ġupdate Checked State ( isChecked ) ĊĠĠĠĠĠĠĠ Ġupdate Accessibility Click Action () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Pressed State ( is Pressed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Pressed Ġ= Ġis Pressed ĊĠĠĠĠĠĠĠ Ġradio Button ?. is Pressed Ġ= Ġis Pressed ĊĠĠĠĠĠĠĠ ĠcheckBox ?. is Pressed Ġ= Ġis Pressed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Checked State ( isChecked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġradio Button ?. isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ ĠcheckBox ?. isChecked Ġ= Ġis Checked ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġtext Ġand Ġicon Ġcolor ĊĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforeground Selected Color Ġ= ĠTheme Util . get Theme Attr Color ( context , ĠR . attr . u if abric Popup MenuItem Foreground Selected Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle View ?. setTextColor ( foreground Selected Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUsing Ġpost Ġhelps Ġensure Ġthat Ġthe Ġcolor Ġfilter Ġis Ġapplied Ġto Ġthe Ġcorrect Ġimage Ġin ĠAPI Ġ<= ĠL ol lip op . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ImageView ?. post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon ImageView ?. setColor Filter ( foreground Selected Color , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon ImageView ?. invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle View ?. setTextColor ( Theme Util . get Theme Attr Color ( context , ĠR . attr . u if abric Popup MenuItem Title Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ImageView ?. post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon ImageView ?. clear Color Filter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon ImageView ?. invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġcontent Ġdescription ĊĊĠĠĠĠĠĠĠ Ġval Ġcheck ViewType Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow RadioButton Ġ-> Ġcontext . getString ( R . string . popup _ menu _ accessibility _ item _ radio _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow CheckBox Ġ-> Ġcontext . getString ( R . string . popup _ menu _ accessibility _ item _ check _ box ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchecked State Ġ= Ġif Ġ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . popup _ menu _ accessibility _ item _ state _ checked ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . popup _ menu _ accessibility _ item _ state _ not _ checked ) ĊĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġif Ġ( show RadioButton Ġ|| Ġshow CheckBox ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ title , Ġ$ check ViewType Ġ$ checked State " ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Accessibility Click Action () Ġ{ ĊĠĠĠĠĠĠĠ ĠView Compat . set Accessibility Delegate ( this , Ġobject Ġ: ĠAccessibility Delegate Compat () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Initialize Accessibility NodeInfo ( host : ĠView , Ġinfo : ĠAccessibility NodeInfo Compat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Initialize Accessibility NodeInfo ( host , Ġinfo ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclick Label Ġ= Ġif Ġ( item Check able Behavior Ġ== ĠPopup Menu . Item Check able Behavior . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . popup _ menu _ accessibility _ item _ select ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . popup _ menu _ accessibility _ item _ toggle ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . addAction ( Accessibility NodeInfo Compat . Accessibility Action Compat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccessibility NodeInfo . ACTION _ CLICK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( click Label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }