package Ġfr . xg ou chet . re he ars al . screen . script Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . widget . Toast Ċ import Ġfr . xg ou chet . arch x . data . Arch X Data Presenter Ċ import Ġfr . xg ou chet . arch x . data . Arch X Data Sink Ċ import Ġfr . xg ou chet . arch x . data . Arch X DataSource Ċ import Ġfr . xg ou chet . arch x . rx . Scheduler Provider Ċ import Ġfr . xg ou chet . arch x . rx . schedule Ċ import Ġfr . xg ou chet . re he ars al . core . model . Scene Ċ import Ġfr . xg ou chet . re he ars al . core . model . Script Ċ import Ġfr . xg ou chet . re he ars al . ui . Item Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . text . Normalizer Ċ Ċ class ĠScript Presenter ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġscript : ĠScript , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext Ġ: ĠContext , ĊĠĠĠĠĠĠĠ ĠdataSource : ĠArch X DataSource < List < Scene >>, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġscript Data Sink : ĠArch X Data Sink < Script >, ĊĠĠĠĠĠĠĠ Ġtransformer : ĠScript Contract . Transformer , ĊĠĠĠĠĠĠĠ Ġscheduler Provider : ĠScheduler Provider Ċ ) Ġ: ĠArch X Data Presenter < List < Scene >, ĠScript Contract . View , ĠList < Item . ViewModel >>( dataSource , Ġtransformer , Ġscheduler Provider ), ĊĠĠĠĠĠĠĠ ĠScript Contract . Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġshow Empty Sc enes Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġraw Data : ĠList < Scene > Ġ= Ġempty List () ĊĊĠĠĠ Ġprivate Ġvar Ġexport Disposable : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdeleting Disposable : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġregion ĠArch X Presenter ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Detached () ĊĠĠĠĠĠĠĠ Ġdeleting Disposable ?. dispose () ĊĠĠĠĠĠĠĠ Ġexport Disposable ?. dispose () ĊĠĠĠĠĠĠĠ Ġdeleting Disposable Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġexport Disposable Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠScript Contract . Presenter ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( item : ĠItem . ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscene Ġ= Ġitem . getItem Data () Ġas ? ĠScene ĊĊĠĠĠĠĠĠĠ Ġif Ġ( scene Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. navigate To Scene ( scene ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Schedule Action Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. navigate To Schedule ( script ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cast Action Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. navigate To Cast Settings ( script ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Props Action Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. navigate ToProps ( script ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonDelete Action Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġdeleting Disposable ?. dispose () ĊĠĠĠĠĠĠĠ Ġdeleting Disposable Ġ= Ġscript Data Sink . delete Data ( script ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. schedule ( scheduler Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġview ?. navigate Back () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġview ?. show Error ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Hide Empty Sc enes () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Empty Sc enes Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġon Data Changed ( raw Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Show Empty Sc enes () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Empty Sc enes Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġon Data Changed ( raw Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Data Changed ( t : ĠList < Scene >) Ġ{ ĊĠĠĠĠĠĠĠ Ġraw Data Ġ= Ġt ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġif Ġ( show Empty Sc enes ) Ġt Ġelse Ġt . filter Ġ{ Ġit . c ues Count Ġ> Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= Ġtransformer . transform ( filtered ) ĊĠĠĠĠĠĠĠ Ġview ?. show Data ( viewModel ) ĊĠĠĠĠĠĠĠ Ġview ?. set Empty Sc enes Visible ( show Empty Sc enes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Export Script () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnormalized Title Ġ= ĠNormal izer . normalize ( script . title , ĠNormal izer . Form . N FK D ) ĊĠĠĠĠĠĠĠ Ġval Ġsimplified Title Ġ= ĠRegex ("\\ p { In Combin ing Di ac ritical Marks } + "). replace ( normalized Title , Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= ĠRegex ("[ ^ a - zA - Z 0 - 9 ]"). replace ( simpl ified Title , Ġ"_ ") ĊĠĠĠĠĠĠĠ Ġview ?. request Document Uri ("$ filename . fo unt ain ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Export Script To Uri ( uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexport Disposable Ġ= ĠSingle . create ( Export F ount ain Document ( context , Ġscript , Ġuri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Export Ġsuccessful ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ("# export Ġ@ result :$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Export Ġfailed ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ( it , Ġ"# error Ġ# export ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region Ċ Ċ } Ċ