package Ġru . ig la . tf profiler . reports _ list Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġru . ig la . tf profiler . R Ċ import Ġru . ig la . tf profiler . core . domain . Device Ċ import Ġru . ig la . tf profiler . utils . Date Utils Ċ import Ġru . ig la . tf profiler . utils . forEach No Iterator Ċ Ċ class ĠReports List RecyclerView Adapter ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠClick Model Item Listener Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < List Report Holder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdevices : ĠMutable Set < Device > Ġ= Ġhash Set Of () ĊĊĠĠĠ Ġprivate Ġval Ġlayout Inflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġval Ġmodel Holder List : ĠMutable List < List Report Entity > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġfun Ġnotify Adapter Items ( data : ĠList < List Report Entity >) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetData ( data ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetData ( data : ĠList < List Report Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel Holder List . clear () ĊĠĠĠĠĠĠĠ Ġmodel Holder List . addAll ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel Holder List . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠList Report Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout View Ġ= Ġlayout Inflater . inflate ( R . layout . list _ report _ model _ row , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠList Report Holder ( layout View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠList Report Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Holder Ġ= Ġmodel Holder List [ position ] ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Config Ġ= Ġmodel Holder . model Config ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString Ġ= Ġif Ġ( model Holder . model Type . is Text Model ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Holder . model Name ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsizes Ġ= Ġmodel Config . input Size . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloating Ġ= Ġmodel Config . quant ized Str () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% s Ġ(% s , Ġ% s )", Ġmodel Holder . model Name , Ġfloating , Ġsizes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . textView Title . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate Utils . getSimple Readable DateTime ( model Holder . createdAt ) ĊĊĠĠĠĠĠĠĠ Ġholder . textView CreatedAt . text Ġ= Ġ" Created Ġat Ġ$ date " ĊĠĠĠĠĠĠĠ Ġholder . textView Description . text Ġ= ĠgetText ( model Holder ) ĊĊĠĠĠĠĠĠĠ Ġholder . textView Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . onDelete Item ( model Holder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . onClick Item ( model Holder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetText ( list Report Entity : ĠList Report Entity ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreport Items Ġ= Ġlist Report Entity . report Delegate Items ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġmax Threads Ġ= Ġreport Items . first OrNull ()?. threads Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġmin Threads Ġ= Ġreport Items . first OrNull ()?. threads Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġuse Xn np ack Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġdevices . clear () ĊĠĠĠĠĠĠĠ Ġval Ġstr Details Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġreport Items . forEach No Iterator Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . use Xn np ack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Xn np ack Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Threads Ġ= Ġmin Of ( min Threads , Ġitem . threads ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Threads Ġ= Ġmax Of ( max Threads , Ġitem . threads ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! devices . contains ( item . device )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( str Details . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . append (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . append (" Deleg ates : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . append ( item . device . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevices . add ( item . device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( str Details . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . append (". Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstr Details . append (" Threads Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( max Threads Ġ- Ġmin Threads Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( min Threads ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( max Threads ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . append ( max Threads ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Xn np ack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Details . append (", ĠX NN PACK ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Count Ġ= Ġreport Items . first OrNull ()?. batch Image Count Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġstr Details . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (", ĠBatch Ġcount Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( image Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstr Details . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodel Holder List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel Holder List . remove At ( position ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠClick Model Item Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonClick Item ( item : ĠList Report Entity ) ĊĠĠĠĠĠĠĠ Ġfun ĠonDelete Item ( item : ĠList Report Entity ) ĊĠĠĠ Ġ} Ċ }