package Ġcom . stream _ suite . link . activity Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Animation Utils Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġcom . stream _ suite . link . R Ċ import Ġcom . stream _ suite . link . fragment . settings . My Account Fragment Ċ import Ġcom . stream _ suite . link . shared . data . Color Set Ċ import Ġcom . stream _ suite . link . shared . data . Settings Ċ import Ġcom . stream _ suite . link . shared . util . Density Util Ċ import Ġcom . stream _ suite . link . shared . util . billing . Product Available Ċ import Ġcom . stream _ suite . link . shared . util . billing . Product Type Ċ Ċ class ĠAccount Pick Subscription Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcom . stream _ suite . link . api . implementation . firebase . Analytics Helper . account Tutorial Started ( this ) ĊĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ account _ pick _ subscription ) ĊĠĠĠĠĠĠĠ ĠsetUp Purchase Layout () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Settings . main Color Set . color Ġ== ĠColor . WHITE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . purchase _ layout ). set BackgroundColor ( Color Set . TE AL ( this ). color ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . purchase _ layout ). set BackgroundColor ( Settings . main Color Set . color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġthis . circular Re veal In () Ġ}, Ġ 1 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Purchase Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġcom . stream _ suite . link . api . implementation . firebase . Analytics Helper . account Tutorial Finished ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġup Ġpurch asing Ġviews Ġhere ĊĠĠĠĠĠĠĠ Ġval Ġmonthly Ġ= ĠfindViewById < View >( R . id . monthly ) ĊĠĠĠĠĠĠĠ Ġval Ġthree Month Ġ= ĠfindViewById < View >( R . id . three _ month ) ĊĠĠĠĠĠĠĠ Ġval Ġyear ly Ġ= ĠfindViewById < View >( R . id . year ly ) ĊĠĠĠĠĠĠĠ Ġval Ġlifetime Ġ= ĠfindViewById < View >( R . id . lifetime ) ĊĠĠĠĠĠĠĠ Ġval Ġcancel Trial Ġ= ĠfindViewById < View >( R . id . cancel _ trial ) ĊĠĠĠĠĠĠĠ Ġval Ġsign In Ġ= ĠfindViewById < View >( R . id . sign _ in ) ĊĊĠĠĠĠĠĠĠ Ġval ĠstartTime : ĠLong Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġquick View Re veal ( year ly , ĠstartTime ) ĊĠĠĠĠĠĠĠ Ġquick View Re veal ( three Month , ĠstartTime Ġ+ Ġ 7 5 ) ĊĠĠĠĠĠĠĠ Ġquick View Re veal ( monthly , ĠstartTime Ġ+ Ġ 1 5 0 ) ĊĠĠĠĠĠĠĠ Ġquick View Re veal ( lifetime , ĠstartTime Ġ+ Ġ 2 2 5 ) ĊĊĠĠĠĠĠĠĠ Ġmonthly . setOnClickListener Ġ{ Ġwarn Of Play Store Subscription Process ( Product Available . create Monthly No Trial ()) Ġ} ĊĠĠĠĠĠĠĠ Ġthree Month . setOnClickListener Ġ{ Ġwarn Of Play Store Subscription Process ( Product Available . create Three Month No Trial ()) Ġ} ĊĠĠĠĠĠĠĠ Ġyear ly . setOnClickListener Ġ{ Ġwarn Of Play Store Subscription Process ( Product Available . create Year ly No Trial ()) Ġ} ĊĠĠĠĠĠĠĠ Ġlifetime . setOnClickListener Ġ{ Ġfinish With Purchase Result ( Product Available . create Lifetime ()) Ġ} ĊĠĠĠĠĠĠĠ Ġcancel Trial . setOnClickListener Ġ{ Ġfinish With Trial Cancellation () Ġ} ĊĠĠĠĠĠĠĠ Ġsign In . setOnClickListener Ġ{ Ġstart SignIn () Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . getBoolean Extra ( ARG _ CHANG ING _ SUB SCRIPTION , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign In . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . buttons ). visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . getBoolean Extra ( ARG _ FREE _ TR IAL , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquick View Re veal ( cancel Trial , ĠstartTime Ġ+ Ġ 3 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Trial . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign In . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < TextView >( R . id . select _ purchase _ title ). setText ( R . string . thanks _ for _ try ing ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . buttons ). visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish With Purchase Result ( product : ĠProduct Available ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġresult . putExtra ( PRODUCT _ ID _ EXTRA , Ġproduct . productId ) ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġresult ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( product . type Ġ== ĠProduct Type . SUB SCRIPTION ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠR . string . subscription _ toast , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcom . stream _ suite . link . api . implementation . firebase . Analytics Helper . account Selected Purchase ( this ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish With Trial Cancellation () Ġ{ ĊĠĠĠĠĠĠĠ Ġcom . stream _ suite . link . api . implementation . firebase . Analytics Helper . account Free Trial Upgrade Dialog Cancel Clicked ( this ) ĊĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ CANCEL _ TR IAL ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart SignIn () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Result ( My Account Fragment . RESULT _ SIGN _ IN ) ĊĠĠĠĠĠĠĠ Ġcom . stream _ suite . link . api . implementation . firebase . Analytics Helper . account SignIn Instead Of Purchase ( this ) ĊĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwarn Of Play Store Subscription Process ( product : ĠProduct Available ) Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this , ĠR . style . Subscription Picker ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . play _ store _ subscription _ warning ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> Ġfinish With Purchase Result ( product ) Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġfinish With Purchase Result ( product ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcircular Re veal In () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠfindViewById < View >( R . id . purchase _ layout ) ĊĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcx Ġ= Ġview . width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcy Ġ= Ġview . height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Radius Ġ= ĠMath . h ypot ( cx . toDouble (), Ġcy . toDouble ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Animation Utils . create Circular Re veal ( view , Ġcx , Ġcy , Ġ 0 f , Ġfinal Radius ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). alpha ( 1 f ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcircular Re veal Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġfind Visible Holder () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcx Ġ= Ġview . width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcy Ġ= Ġview . height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Radius Ġ= ĠMath . h ypot ( cx . toDouble (), Ġcy . toDouble ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Ġ= ĠView Animation Utils . create Circular Re veal ( view , Ġcx , Ġcy , Ġinitial Radius , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . start () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). alpha ( 0 f ). set Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquick View Re veal ( view : ĠView , Ġdelay : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . translation X Ġ= Ġ(- 1 Ġ* ĠD ensity Util . to Dp ( this , Ġ 1 6 )). toFloat () ĊĠĠĠĠĠĠĠ Ġview . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġview . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation X ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Delay ( delay ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Visible Holder (): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpurchase Ġ= ĠfindViewById < View >( R . id . purchase _ layout ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpurchase ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcircular Re veal Out () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPRODUCT _ ID _ EXTRA Ġ= Ġ" product _ id " ĊĠĠĠĠĠĠĠ Ġval ĠARG _ CHANG ING _ SUB SCRIPTION Ġ= Ġ" arg _ changing _ subscription " ĊĠĠĠĠĠĠĠ Ġval ĠARG _ FREE _ TR IAL = Ġ" arg _ free _ trial " ĊĊĠĠĠĠĠĠĠ Ġval ĠRESULT _ CANCEL _ TR IAL Ġ= Ġ 3 3 4 2 5 ĊĠĠĠ Ġ} Ċ } Ċ