package Ġcom . s ud z us ama . compare phones . ui . selection Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġcom . s ud z us ama . compare phones . domain . entity . Comp ar sion Ċ import Ġcom . s ud z us ama . compare phones . domain . use case . Save Comp ar sion UseCase Ċ import Ġcom . s ud z us ama . compare phones . utils . DEVICE _ NAME _ EXTRA Ċ import Ġio . reactivex . subscribers . Disposable Subscriber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSelection Presenter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsave Comp ar sion UseCase : ĠSave Comp ar sion UseCase Ċ ) Ġ: ĠSelection Contract . Presenter Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġview : ĠSelection Contract . View ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġfirst Device Name : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsecond Device Name : ĠString ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ Ġintent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Name Ġ= Ġintent . getString Extra ( DEVICE _ NAME _ EXTRA ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Name ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Device Name Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload First Device ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Device Name Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Second Device ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( first Device Name Ġ!= Ġnull Ġ&& Ġsecond Device Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. enable Compare Button () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Ret ained () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst Device Name ?. let Ġ{ Ġload First Device ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġsecond Device Name ?. let Ġ{ Ġload Second Device ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Comp ar sion UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload First Device ( f Dev Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. disable First Device Button () ĊĠĠĠĠĠĠĠ Ġview ?. enable First Device View () ĊĠĠĠĠĠĠĠ Ġview ?. load First DeviceInfo ( f Dev Name ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Second Device ( s Dev Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. disable Second Device Button () ĊĠĠĠĠĠĠĠ Ġview ?. enable Second Device View () ĊĠĠĠĠĠĠĠ Ġview ?. load Second DeviceInfo ( s Dev Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClose First Device View () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst Device Name Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġview ?. disable First Device View () ĊĠĠĠĠĠĠĠ Ġview ?. disable Compare Button () ĊĠĠĠĠĠĠĠ Ġview ?. enable First Device Button () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClose Second Device View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsecond Device Name Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġview ?. disable Second Device View () ĊĠĠĠĠĠĠĠ Ġview ?. disable Compare Button () ĊĠĠĠĠĠĠĠ Ġview ?. enable Second Device Button () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Choose First Device Button Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. disable Buttons () ĊĠĠĠĠĠĠĠ Ġview ?. start Add Device Activity ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Choose Second Device Button Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. disable Buttons () ĊĠĠĠĠĠĠĠ Ġview ?. start Add Device Activity ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Res umed () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. enable Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Compare Button Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf Device Ġ= Ġfirst Device Name ĊĠĠĠĠĠĠĠ Ġval Ġs Device Ġ= Ġsecond Device Name ĊĊĠĠĠĠĠĠĠ Ġif Ġ( f Device Ġ!= Ġnull Ġ&& Ġs Device Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. disable Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Comp ar sion UseCase . set Comp ar sion ( f Device , Ġs Device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Comp ar sion UseCase . subscribe ( object Ġ: ĠDis posable Subscriber < Comp ar sion >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Comp ar sion Save Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠComp ar sion ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Comp ar sion Save Error ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Comp ar sion Save Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. start Comp aring Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Comp ar sion Save Error ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( this :: class . java . simple Name , Ġt . message ) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ