package Ġcom . dev . ab hin av . ten nis stats Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . cha quo . python . Python Ċ import Ġcom . cha quo . python . android . Android Platform Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġname Left : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġname Right : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠMW 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠSW 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠG W 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠB PW 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠCS 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠSS 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠA 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠDB 1 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠMW 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠSW 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠG W 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠB PW 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠCS 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠSS 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠA 2 : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠDB 2 : ĠTextView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġbutton Ġ= ĠfindViewById ( R . id . button ) ĊĠĠĠĠĠĠĠ Ġname Left Ġ= ĠfindViewById ( R . id . name 1 ) ĊĠĠĠĠĠĠĠ Ġname Right Ġ= ĠfindViewById ( R . id . name 2 ) ĊĠĠĠĠĠĠĠ ĠMW 1 Ġ= ĠfindViewById ( R . id . matches _ won 1 ) ĊĠĠĠĠĠĠĠ ĠSW 1 Ġ= ĠfindViewById ( R . id . sets _ won 1 ) ĊĠĠĠĠĠĠĠ ĠG W 1 Ġ= ĠfindViewById ( R . id . games _ won 1 ) ĊĠĠĠĠĠĠĠ ĠB PW 1 Ġ= ĠfindViewById ( R . id . break _ points _ won 1 ) ĊĠĠĠĠĠĠĠ ĠCS 1 Ġ= ĠfindViewById ( R . id . clean _ sets 1 ) ĊĠĠĠĠĠĠĠ ĠSS 1 Ġ= ĠfindViewById ( R . id . stra ight _ sets 1 ) ĊĠĠĠĠĠĠĠ ĠA 1 Ġ= ĠfindViewById ( R . id . aces 1 ) ĊĠĠĠĠĠĠĠ ĠDB 1 Ġ= ĠfindViewById ( R . id . double _ fault 1 ) ĊĠĠĠĠĠĠĠ ĠMW 2 Ġ= ĠfindViewById ( R . id . matches _ won 2 ) ĊĠĠĠĠĠĠĠ ĠSW 2 Ġ= ĠfindViewById ( R . id . sets _ won 2 ) ĊĠĠĠĠĠĠĠ ĠG W 2 Ġ= ĠfindViewById ( R . id . games _ won 2 ) ĊĠĠĠĠĠĠĠ ĠB PW 2 Ġ= ĠfindViewById ( R . id . break _ points _ won 2 ) ĊĠĠĠĠĠĠĠ ĠCS 2 Ġ= ĠfindViewById ( R . id . clean _ sets 2 ) ĊĠĠĠĠĠĠĠ ĠSS 2 Ġ= ĠfindViewById ( R . id . stra ight _ sets 2 ) ĊĠĠĠĠĠĠĠ ĠA 2 Ġ= ĠfindViewById ( R . id . aces 2 ) ĊĠĠĠĠĠĠĠ ĠDB 2 Ġ= ĠfindViewById ( R . id . double _ fault 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġyear Array Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 9 6 8 .. 2 0 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyear Array . add ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġyear Adapter Ġ= ĠArray Adapter ( this , ĠR . layout . support _ simple _ spinner _ dropdown _ item , Ġyear Array ) ĊĠĠĠĠĠĠĠ Ġval Ġact v 3 Ġ= ĠfindViewById < View >( R . id . auto Complete TextView 3 ) Ġas ĠAuto Complete TextView ĊĠĠĠĠĠĠĠ Ġact v 3 . threshold Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġact v 3 . setAdapter ( year Adapter ) ĊĠĠĠĠĠĠĠ Ġact v 3 . setTextColor ( Color . BLUE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcourt Array Ġ= ĠlistOf (" Hard ", Ġ" C lay ", Ġ" Gr ass ") ĊĠĠĠĠĠĠĠ Ġval Ġcourt Adapter Ġ= ĠArray Adapter ( this , ĠR . layout . support _ simple _ spinner _ dropdown _ item , Ġcourt Array ) ĊĠĠĠĠĠĠĠ Ġval Ġact v 4 Ġ= ĠfindViewById < View >( R . id . auto Complete TextView 4 ) Ġas ĠAuto Complete TextView ĊĠĠĠĠĠĠĠ Ġact v 4 . threshold Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġact v 4 . setAdapter ( cour t Adapter ) ĊĠĠĠĠĠĠĠ Ġact v 4 . setTextColor ( Color . BLUE ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Python . is Started ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPython . start ( Android Platform ( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpython Ġ= ĠPython . getInstance () ĊĊĠĠĠĠĠĠĠ Ġwhen ( intent . getString Extra (" click ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" at p " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpython File Ġ= Ġpython . getModule (" player Names ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġpython File . call Attr (" male Players ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġobj . to Java ( Array :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( this , ĠR . layout . support _ simple _ spinner _ dropdown _ item , Ġarray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact v 1 Ġ= ĠfindViewById < View >( R . id . auto Complete TextView 1 ) Ġas ĠAuto Complete TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 1 . threshold Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 1 . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 1 . setTextColor ( Color . BLUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact v 2 Ġ= ĠfindViewById < View >( R . id . auto Complete TextView 2 ) Ġas ĠAuto Complete TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 2 . threshold Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 2 . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 2 . setTextColor ( Color . BLUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget AT P ( act v 1 , Ġact v 2 , Ġact v 3 , Ġact v 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" w ta " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpython File Ġ= Ġpython . getModule (" player Names ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġpython File . call Attr (" female Players ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġobj . to Java ( Array :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( this , ĠR . layout . support _ simple _ spinner _ dropdown _ item , Ġarray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact v 1 Ġ= ĠfindViewById < View >( R . id . auto Complete TextView 1 ) Ġas ĠAuto Complete TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 1 . threshold Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 1 . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 1 . setTextColor ( Color . BLUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact v 2 Ġ= ĠfindViewById < View >( R . id . auto Complete TextView 2 ) Ġas ĠAuto Complete TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 2 . threshold Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 2 . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact v 2 . setTextColor ( Color . BLUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget W TA ( act v 1 , Ġact v 2 , Ġact v 3 , Ġact v 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget AT P ( act v 1 : ĠAuto Complete TextView , Ġact v 2 : ĠAuto Complete TextView , Ġact v 3 : ĠAuto Complete TextView , Ġact v 4 : ĠAuto Complete TextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġpython File Ġ= Ġpython . getModule (" at p _ script ") ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġpython File . call Attr (" main ", Ġact v 1 . text . toString (), Ġact v 2 . text . toString (), Ġact v 3 . text . toString (), Ġact v 4 . text . toString ()) ĊĠĠĠĠĠĠĠ Ġif ( obj . toString () Ġ== Ġ" Player ĠNot ĠFound ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Player ĠNot ĠFound ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( obj . toString () Ġ== Ġ" Enter ĠBoth ĠPlayer ĠNames ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Enter ĠBoth ĠPlayer ĠNames ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( obj . toString () Ġ== Ġ" No ĠRecord ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠRecord Ġfor Ġ" Ġ+ Ġact v 3 . text . toString (), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( obj . toString () Ġ== Ġ" No ĠSuch ĠSurface ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠSuch ĠSurface ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġobj . asList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Score Ġ= Ġlist [ 0 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Score Ġ= Ġlist [ 1 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse JSON ( left Score , Ġ" left ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse JSON ( right Score , Ġ" right ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Left . text Ġ= Ġact v 1 . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Right . text Ġ= Ġact v 2 . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget W TA ( act v 1 : ĠAuto Complete TextView , Ġact v 2 : ĠAuto Complete TextView , Ġact v 3 : ĠAuto Complete TextView , Ġact v 4 : ĠAuto Complete TextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġpython File Ġ= Ġpython . getModule (" w ta _ script ") ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġpython File . call Attr (" main ", Ġact v 1 . text . toString (), Ġact v 2 . text . toString (), Ġact v 3 . text . toString (), Ġact v 4 . text . toString ()) ĊĠĠĠĠĠĠĠ Ġif ( obj . toString () Ġ== Ġ" Player ĠNot ĠFound ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Player ĠNot ĠFound ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( obj . toString () Ġ== Ġ" Enter ĠBoth ĠPlayer ĠNames ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Enter ĠBoth ĠPlayer ĠNames ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( obj . toString () Ġ== Ġ" No ĠRecord ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠRecord Ġfor Ġ" Ġ+ Ġact v 3 . text . toString (), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( obj . toString () Ġ== Ġ" No ĠSuch ĠSurface ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠSuch ĠSurface ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġobj . asList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Score Ġ= Ġlist [ 0 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Score Ġ= Ġlist [ 1 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse JSON ( left Score , Ġ" left ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse JSON ( right Score , Ġ" right ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Left . text Ġ= Ġact v 1 . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Right . text Ġ= Ġact v 2 . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse JSON ( score : ĠString , Ġside : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Obj Ġ= ĠJSONObject ( score . substring ( score . indexOf ("{ "), Ġscore . lastIndexOf (" }") Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġmatches W on Ġ= Ġjson Obj . getInt (" matches - won ") ĊĠĠĠĠĠĠĠ Ġval Ġsets W on Ġ= Ġjson Obj . getInt (" sets - won ") ĊĠĠĠĠĠĠĠ Ġval Ġgames W on Ġ= Ġjson Obj . getInt (" games - won ") ĊĠĠĠĠĠĠĠ Ġval Ġbreak pts W on Ġ= Ġjson Obj . getInt (" break pts - won ") ĊĠĠĠĠĠĠĠ Ġval Ġclean Sets Ġ= Ġjson Obj . getInt (" clean - sets ") ĊĠĠĠĠĠĠĠ Ġval Ġstraight Sets Ġ= Ġjson Obj . getInt (" stra ight - sets ") ĊĠĠĠĠĠĠĠ Ġval Ġa ces Ġ= Ġjson Obj . getInt (" aces ") ĊĠĠĠĠĠĠĠ Ġval Ġdouble Fault s Ġ= Ġjson Obj . getInt (" double fault s ") ĊĠĠĠĠĠĠĠ Ġwhen ( side ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" left " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMW 1 . text Ġ= Ġmatches W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSW 1 . text Ġ= Ġsets W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG W 1 . text Ġ= Ġgames W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB PW 1 . text Ġ= Ġbreak pts W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSS 1 . text Ġ= Ġstraight Sets . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCS 1 . text Ġ= Ġclean Sets . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA 1 . text Ġ= Ġa ces . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB 1 . text Ġ= Ġdouble Fault s . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" right " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMW 2 . text Ġ= Ġmatches W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSW 2 . text Ġ= Ġsets W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG W 2 . text Ġ= Ġgames W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB PW 2 . text Ġ= Ġbreak pts W on . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSS 2 . text Ġ= Ġstraight Sets . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCS 2 . text Ġ= Ġclean Sets . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA 2 . text Ġ= Ġa ces . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB 2 . text Ġ= Ġdouble Fault s . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }