package Ġcom . glib . core . ui . json Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġcom . glib . core . json . G Json Ċ import Ġcom . glib . core . logging . G Log Ċ import Ġcom . glib . core . screen . G Activity Ċ import Ġcom . glib . core . screen . G Fragment Ċ import Ġcom . glib . core . ui . icon . G Icon Ċ import Ġcom . glib . core . ui . json . views . panels . Default Ċ import Ġcom . glib . core . ui . json . views . panels . Vertical Ċ import Ġcom . glib . core . ui . panel . G Vertical Panel Ċ import Ġcom . glib . core . utils . Res Ċ import Ġcom . mike pen z . icon ics . Icon ics Drawable Ċ Ċ class ĠJson Ui Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġparse Screen Content ( spec : ĠG Json , Ġfragment : ĠG Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġfragment . g Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġfragment . container ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( screen Ġ== Ġnull Ġ|| Ġcontainer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġspec [" title "]. string ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . title Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Json Action . execute ( spec [" on Response "], Ġscreen , Ġnull , Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Vertical Panel ( container . header , Ġspec [" header "], Ġscreen , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Vertical Panel ( container . content , Ġspec [" body "], Ġscreen , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Vertical Panel ( container . footer , Ġspec [" footer "], Ġscreen , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Action . execute ( spec [" on Load "], Ġscreen , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġfor Ġpresence Ġto Ġprevent Ġthe Ġpanel Ġgetting Ġcleared Ġwhen Ġnot Ġapplicable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLegacy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec [" content "]. presence ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Vertical Panel ( container . content , Ġit , Ġscreen , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Screen Action ( spec : ĠG Json ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Bg Action . execute All ( spec [" on Load "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Response ( spec : ĠG Json , Ġfragment : ĠG Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġfragment . g Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( screen Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Action . execute ( spec [" on Response "], Ġscreen , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġreset Vertical Panel ( panel : ĠG Vertical Panel , Ġspec : ĠG Json , Ġscreen : ĠG Activity , Ġfragment : ĠG Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . removeAll Views () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġinit Vertical Panel ( panel , Ġspec , Ġscreen , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault . init Panel ( panel , Ġspec , Ġscreen , Ġfragment ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġfun Ġinit Vertical Panel ( panel : ĠG Vertical Panel , Ġspec : ĠG Json , Ġscreen : ĠG Activity , Ġfragment : ĠG Fragment ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠDefault ( panel , Ġspec , Ġscreen , Ġfragment ). create View () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġload Class ( name : ĠString , Ġtype : ĠClass < T >, Ġnamespace : ĠString ): ĠClass < T >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub strings Ġ= Ġname . remove Suffix ("- v 1 "). split ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġsub strings . drop Last ( 1 ). join ToString (".") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġsub strings . last OrNull ()?. replace ("- v ", Ġ" V ") ?. capitalize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefixed Name Ġ= Ġif Ġ( prefix . length Ġ> Ġ 0 ) Ġ"$ prefix .$ className " Ġelse ĠclassName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqualified Name Ġ= Ġ" com . glib . core . ui . json .$ namespace .$ prefix ed Name " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG Log . v ( Json Ui :: class . java , Ġ" Loading Ġ$ qualified Name Ġfrom Ġ$ name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠClass . forName ( qualified Name ) Ġas ? ĠClass < T > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġicon Drawable ( spec : ĠG Json ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspec [" material "][" name "]. string ?. let Ġ{ Ġicon Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG Log . i ( Json Ui :: class . java , Ġ" Icon Ġnot Ġfound : Ġ${ icon Name }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIcon ics Drawable ( Res . context , Ġ" gmd -${ icon Name } "). size Dp ( G Icon . ACTION _ BAR _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmd Icon Drawable ( icon Name , ĠG Icon . ACTION _ BAR _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmd Icon Drawable ( name : ĠString , Ġsize : ĠInt ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIcon ics Drawable ( Res . context , Ġ" gmd -${ name } "). size Dp ( size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }