package Ġkr . co . find a . android template . util Ċ Ċ import Ġcom . android . dd m lib . I Device Ċ import Ġcom . android . dd m lib . Multi Line Receiver Ċ import Ġcom . android . dd m lib . Null Output Receiver Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jetbrains . android . sdk . Android Sdk Utils Ċ Ċ object ĠDevice Util Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCOMMAND _ GET _ OVER DRAW _ PROPERTY Ġ= Ġ" get prop Ġdebug . hw ui . over draw " ĊĠĠĠ Ġprivate Ġconst Ġval ĠCOMMAND _ SET _ OVER DRAW _ PROPERTY Ġ= ĊĠĠĠĠĠĠĠ Ġ" set prop Ġdebug . hw ui . over draw Ġ% s Ġ; Ġservice Ġcall Ġactivity Ġ 1 5 9 9 2 9 5 5 7 0 " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCOMMAND _ GET _ LAYOUT _ BOUND _ PROPERTY Ġ= Ġ" get prop Ġdebug . layout " ĊĠĠĠ Ġprivate Ġconst Ġval ĠCOMMAND _ SET _ LAYOUT _ BOUND _ PROPERTY Ġ= Ġ" set prop Ġdebug . layout Ġ% d Ġ; Ġservice Ġcall Ġactivity Ġ 1 5 9 9 2 9 5 5 7 0 " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCOMMAND _ CLEAR _ CACHE Ġ= Ġ" pm Ġclear Ġkr . co . find a . find a . stg " ĊĊĠĠĠ Ġfun Ġget Debug Devices ( project : ĠProject ): ĠList < I Device > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAndroid Sdk Utils . get Debug Bridge ( project )?. devices ?. toList () Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Show Over draw Setting ( devices : ĠList < I Device >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevices [ 0 ]. execute Shell Command ( COMMAND _ GET _ OVER DRAW _ PROPERTY , Ġgenerate Mult iline Receiver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Line Ġ= Ġit . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Showing Ġ= Ġfirst Line ?. contains (" show ") Ġ== Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices . forEach Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . execute Shell Command ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMAND _ SET _ OVER DRAW _ PROPERTY . format ( if Ġ( is Showing ) Ġ" false " Ġelse Ġ" show "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNull Output Receiver () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Show Layout Bound Setting ( devices : ĠList < I Device >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevices [ 0 ]. execute Shell Command ( COMMAND _ GET _ LAYOUT _ BOUND _ PROPERTY , Ġgenerate Mult iline Receiver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Line Ġ= Ġit . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Showing Ġ= Ġfirst Line ?. to Boolean () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices . forEach Ġ{ Ġdevice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice . execute Shell Command ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMAND _ SET _ LAYOUT _ BOUND _ PROPERTY . format (( ! is Showing ). toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNull Output Receiver () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Find a St g App Cache ( device : ĠI Device ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice . execute Shell Command ( COMMAND _ CLEAR _ CACHE , ĠNull Output Receiver ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Mult iline Receiver ( ĊĠĠĠĠĠĠĠ Ġon Process NewLine : Ġ( lines : ĠArray < out ĠString >) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ= Ġobject Ġ: ĠMulti Line Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcancelled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Cancelled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcancelled ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess New Lines ( lines : ĠArray < out ĠString > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Process NewLine ( lines Ġ?: Ġempty Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }