package Ġorg . graph ene os . apps . client . ui Item Ċ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġorg . graph ene os . apps . client . item . Download Status Ċ import Ġorg . graph ene os . apps . client . item . Install Status Ċ import Ġorg . graph ene os . apps . client . item . Package Info Ċ Ċ data Ġclass ĠInstall able Package Info ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġpackage Info : ĠPackage Info Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Map ( list : ĠMap < String , ĠPackage Info >): ĠList < Install able Package Info > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Install able Package Info >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġlist . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( Install able Package Info ( item . id , Ġitem )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġup datable From Map ( list : ĠMap < String , ĠPackage Info >): ĠList < Install able Package Info > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Install able Package Info >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġlist . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . install Status Ġis ĠInstall Status . Up datable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġitem . download Status Ġ! is ĠDownload Status . Downloading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( Install able Package Info ( item . id , Ġitem )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠUi Item Diff ( private Ġval Ġis Download Ui : ĠBoolean Ġ= Ġfalse ) Ġ: ĊĠĠĠĠĠĠĠ ĠDiff Util . Item Callback < Install able Package Info >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠInstall able Package Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠInstall able Package Info ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġold Item . name Ġ== Ġnew Item . name ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠInstall able Package Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠInstall able Package Info ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Package Info # session Info Ġand ĠPackage Info # Task Info Ġdoesn 't Ġeffect ĠUI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġso Ġit Ġshould Ġbe Ġcounted Ġas Ġcontent Ġhaven 't Ġchanged */ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Changed Ġ= Ġold Item . name Ġ== Ġnew Item . name Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . package Info . selected Variant Ġ== Ġnew Item . package Info . selected Variant Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . package Info . install Status Ġ== Ġnew Item . package Info . install Status Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . package Info . id Ġ== Ġnew Item . package Info . id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Download Ui ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Changed Ġ&& Ġold Item . package Info . download Status Ġ== Ġnew Item . package Info . download Status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Changed ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }