/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 2 0 ĠOpen ĠFood ĠF acts Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġopen food facts . github . scr ach x . open food . features . welcome Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . View Ċ import Ġandroid . view . Window Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroidx . view pager . widget . ViewPager . On Page ChangeListener Ċ import Ġopen food facts . github . scr ach x . open food . R Ċ import Ġopen food facts . github . scr ach x . open food . databinding . Activity Welcome Binding Ċ import Ġopen food facts . github . scr ach x . open food . features . MainActivity Ċ import Ġopen food facts . github . scr ach x . open food . features . welcome . Welcome Activity Ċ import Ġopen food facts . github . scr ach x . open food . utils . Locale Helper Ċ import Ġopen food facts . github . scr ach x . open food . utils . Pref Manager Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġthe Ġon Ġboard ing Ġactivity Ġshown Ġon Ġfirst - run . Ċ Ġ*/ Ċ /* Ċ Ġ* ĠTODO : Ġre design Ġit Ġ& Ġchange Ġthe Ġcontent Ċ Ġ* ĠTODO : Ġexplain Ġthe Ġ 3 Ġscores Ċ Ġ* ĠTODO : Ġbe Ġhonest Ġabout Ġoffline Ġuntil Ġwe Ġimplement Ġoffline Ġscan Ġ( n obody Ġca res Ġabout Ġoffline Ġedit ) Ċ Ġ* ĠTODO : Ġperhaps Ġhighlight Ġingredient Ġanalysis Ċ Ġ*/ Ċ class ĠWelcome Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠActivity Welcome Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlayouts : ĠInt Array ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpref Manager : ĠPref Manager ĊĠĠĠ Ġprivate Ġvar Ġlast Page Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġview Pager Page ChangeListener : ĠOn Page ChangeListener Ġ= Ġobject Ġ: ĠOn Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Bottom Dot s ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġlayouts . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Next . text Ġ= ĠgetString ( R . string . start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Skip . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Page Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Next . text Ġ= ĠgetString ( R . string . next ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Skip . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Page Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġuser Ġis Ġon Ġthe Ġlast Ġpage Ġand Ġtries Ġto Ġswipe Ġtowards Ġthe Ġnext Ġpage Ġon Ġright Ġthen Ġthe Ġvalue Ġof ĊĠĠĠĠĠĠĠĠ Ġ* Ġposition Offset Ġreturned Ġis Ġalways Ġ 0 . ĠOn Ġthe Ġother Ġhand Ġif Ġthe Ġuser Ġtries Ġto Ġswipe Ġtowards Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġprevious Ġpage Ġon Ġthe Ġleft Ġthen Ġthe Ġvalue Ġof Ġposition Offset Ġreturned Ġis Ġ 0 . 9 9 9 Ġand Ġde creases Ġas Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġuser Ġcontinues Ġto Ġswipe Ġin Ġthe Ġsame Ġdirection . ĠAlso Ġwhenever Ġa Ġuser Ġtries Ġto Ġswipe Ġin Ġany ĊĠĠĠĠĠĠĠĠ Ġ* Ġdirection Ġthe Ġstate Ġis Ġchanged Ġfrom Ġidle Ġto Ġdragging Ġand Ġon Page Scroll StateChanged Ġis Ġcalled . ĊĠĠĠĠĠĠĠĠ Ġ* ĠTherefore Ġif Ġthe Ġuser Ġis Ġon Ġthe Ġlast Ġpage Ġand Ġthe Ġvalue Ġof Ġposition Offset Ġis Ġ 0 Ġand Ġstate Ġis ĊĠĠĠĠĠĠĠĠ Ġ* Ġdragging Ġit Ġmeans Ġthat Ġthe Ġuser Ġis Ġtrying Ġto Ġgo Ġto Ġthe Ġnext Ġpage Ġon Ġright Ġfrom Ġthe Ġlast Ġpage Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġhence ĠMainActivity Ġis Ġstarted Ġin Ġthis Ġcase . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( arg 0 : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Page Ġ&& Ġposition Offset Ġ== Ġ 0 f Ġ&& Ġcurrent State Ġ== ĠView Pager . SCROLL _ STATE _ DR AG GING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Home Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent State Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġcurrent State Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Window Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( resources . getBoolean ( R . bool . portrait _ only )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= ĠActivity Info . SCREEN _ OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠActivity Welcome Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġpref Manager Ġ= ĠPref Manager ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! pref Manager . is First Time Launch ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Home Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . window . set Flags ( WindowManager . LayoutParams . FLAG _ FULL SCREEN , ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN ) ĊĠĠĠĠĠĠĠ Ġlayouts Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . welcome _ slide 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . welcome _ slide 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . welcome _ slide 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . welcome _ slide 4 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadd Bottom Dot s ( 0 ) ĊĠĠĠĠĠĠĠ Ġchange StatusBar Color () ĊĠĠĠĠĠĠĠ Ġval Ġwelcome Page Adapter Ġ= ĠWelcome Page Adapter ( layout Inflater , Ġlayouts ) ĊĠĠĠĠĠĠĠ Ġbinding . view Pager . adapter Ġ= Ġwelcome Page Adapter ĊĠĠĠĠĠĠĠ Ġbinding . view Pager . add On Page ChangeListener ( view Pager Page ChangeListener ) ĊĠĠĠĠĠĠĠ Ġbinding . btn Skip . setOnClickListener Ġ{ Ġlaunch Home Screen () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Next . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Item Ġ= Ġnext Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Item Ġ< Ġlayouts . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . view Pager . currentItem Ġ= Ġnext Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Home Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Bottom Dot s ( currentPage : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdots Ġ= ĠarrayOf Null s < TextView >( layouts . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcolors Active Ġ= Ġresources . getInt Array ( R . array . array _ dot _ active ) ĊĠĠĠĠĠĠĠ Ġval Ġcolors Inactive Ġ= Ġresources . getInt Array ( R . array . array _ dot _ inactive ) ĊĠĠĠĠĠĠĠ Ġbinding . layout Dot s . removeAll Views () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdots . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ] Ġ= ĠTextView ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ] !!. text Ġ= ĠHtml . from Html (" &# 8 2 2 6 ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ] !!. text Size Ġ= Ġ 3 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ i ] !!. setTextColor ( colors Inactive [ currentPage ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . layout Dot s . addView ( dots [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( dots . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots [ currentPage ] !!. setTextColor ( colors Active [ currentPage ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlaunch Home Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġpref Manager . is First Time Launch Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Welcome Activity , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach Base Context ( new Base : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . attach Base Context ( Locale Helper . onCreate ( new Base )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnext Item Ġget () Ġ= Ġbinding . view Pager . currentItem Ġ+ Ġ 1 ĊĊĠĠĠ Ġprivate Ġfun Ġchange StatusBar Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġwindow ĊĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstarter Ġ= ĠIntent ( context , ĠWelcome Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( starter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }