/* Ċ Copyright Ġ 2 0 1 9 ĠK yle ĠD ah lin Ċ Ċ Licensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ you Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ You Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ċ Unless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ distributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ WITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ See Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ limitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . k yle da h lin . animated navbar Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġorg . xml pull . v 1 . Xml Pull Parser Ċ Ċ private Ġconst Ġval ĠNAV _ BAR _ ITEM Ġ= Ġ" navbar item " Ċ private Ġconst Ġval ĠICON Ġ= Ġ" icon " Ċ private Ġconst Ġval ĠAN IM ATED _ ICON Ġ= Ġ" animated _ icon " Ċ private Ġconst Ġval ĠID Ġ= Ġ" id " Ċ Ċ internal Ġfun Ġload NavBar Items ( context : ĠContext , Ġxml File Res Id : ĠInt ): ĠList < NavBar Item > Ġ{ ĊĠĠĠ Ġval Ġparser Ġ= Ġcontext . resources . get Xml ( xml File Res Id ) ĊĠĠĠ Ġval Ġitems Ġ= Ġmutable ListOf < NavBar Item >() ĊĊĠĠĠ Ġvar Ġtoken : ĠInt Ġ= Ġparser . next () ĊĠĠĠ Ġwhile Ġ( token Ġ!= ĠXml Pull Parser . END _ DOCUMENT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== ĠXml Pull Parser . START _ TAG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parser . name Ġ== ĠNAV _ BAR _ ITEM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( NavBar Item . from Attribute Set ( parser )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoken Ġ= Ġparser . next () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġitems Ċ } Ċ Ċ internal Ġclass ĠNav Bar Item ( ĊĠĠĠ Ġval Ġandroid Id : ĠInt , ĊĠĠĠ Ġval Ġun selected Drawable Id : ĠInt , ĊĠĠĠ Ġval Ġselected Drawable Id : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Attribute Set ( attrs : ĠAttributeSet ): ĠNav Bar Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġid Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġicon Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġanimated Icon Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġattrs . attribute Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattribute Name Ġ= Ġattrs . getAttribute Name ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( attribute Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠICON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġattrs . getAttribute Resource Value ( index , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAN IM ATED _ ICON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimated Icon Ġ= Ġattrs . getAttribute Resource Value ( index , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġattrs . getAttribute Resource Value ( index , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Animated NavBar ", Ġ" invalid Ġattribute Ġname , Ġ$ attribute Name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Xml Exception (" missing Ġid Ġfor Ġnav Ġbar Ġitem ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Xml Exception (" missing Ġicon Ġfor Ġnav Ġbar Ġitem ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animated Icon Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Xml Exception (" missing Ġanimated Icon Ġfor Ġnav Ġbar Ġitem ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNav Bar Item ( id , Ġicon , Ġanimated Icon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠInvalid Xml Exception ( message : ĠString ) Ġ: ĠException ( message )