package Ġio . github . eh . eh Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . icu . util . Calendar Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . transition . Slide Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . Window Ċ import Ġandroid . widget . Button Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isIn visible Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġio . github . eh . eh . as utils . Utils Ċ import Ġio . github . eh . eh . server side . Sex Ċ import Ġio . github . eh . eh . server side . User Ċ import Ġkotlinx . android . synt hetic . main . activity _ profile _ setting .* Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . DateTime ParseException Ċ import Ġjava . util .* ĊĊ Ċ class ĠProfile Setting Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġsex : ĠS ex ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimage Uri : ĠUri ? Ġ= Ġnull ĊĊĊĠĠĠ Ġprivate Ġvar Ġstate Sex Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġstate Img Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġstate Nick Name Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġstate Birth Day Ġ= Ġ 0 ĊĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġlauncher Ġ= Ġregister For Activity Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Result Contracts . Start Activity For Result () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result !!. result Code Ġ== ĠRESULT _ OK Ġ&& Ġresult . data Ġ!= Ġnull Ġ&& Ġresult . data !!. data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Uri Ġ= Ġresult . data !!. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg _ profile Setting Image . setImage URI ( image Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ change Img . isIn visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// plus Sign . isIn visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Img Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Conditions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġuser Ġ= ĠUtils . getUser ( intent ) ĊĠĠĠĠĠĠĠ Ġwith ( window ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Feature ( Window . FEATURE _ CONTENT _ TRANS ITION S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenter Transition Ġ= ĠSlide ( Gravity . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Transition Ġ= ĠSlide ( Gravity . RIGHT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ profile _ setting ) ĊĠĠĠĠĠĠĠ Ġbtn _ change Img . isIn visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbtn _ profile Setting Male . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ profile Setting Female ). setBackground Resource ( R . drawable . button _ rounded _ medium _ unc lick ed ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ profile Setting Male ). setBackground Resource ( R . drawable . button _ rounded _ medium ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Set Ġsex Ġof Ġuser Ġto Ġmale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= ĠS ex . M ALE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Sex Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Conditions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ profile Setting Female . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ profile Setting Male ). setBackground Resource ( R . drawable . button _ rounded _ medium _ unc lick ed ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ profile Setting Female ). setBackground Resource ( R . drawable . button _ rounded _ medium ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Set Ġsex Ġof Ġuser Ġto Ġfemale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= ĠS ex . F EM ALE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Sex Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Conditions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimg _ profile Setting Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setData And Type ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , Ġ" image /* ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher . launch ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġet v _ profile Setting Birth . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it !!. toString (). matches ( Regex ("\\ d { 8 } "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Birth Day Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet v _ profile Setting Birth . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . textColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Birth Day Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet v _ profile Setting Birth . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . color . holo _ red _ light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Conditions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġet v _ profile Setting Nick Name . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Nick Name Ġ= Ġif Ġ( it !!. toString (). length Ġin Ġ 1 .. 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet v _ profile Setting Nick Name . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . textColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet v _ profile Setting Nick Name . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . color . holo _ red _ light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Conditions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ moveTo Password . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Conditions ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et v _ profile Setting Name . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" ìĿ´ ë¦Ħ ìĿĦ Ġìŀħëł¥ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et v _ profile Setting Nick Name . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" ëĭ ī ëĦ ¤ ìŀĦ ìĿĦ Ġìŀħëł¥ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! et v _ profile Setting Birth . text . toString (). matches ( Regex ("\\ d { 8 } "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" ìĥĿ ëħĦ ìĽĶ ìĿ¼ ìĿĦ Ġìłķ íĻ ķ íķĺê²Į Ġìŀħëł¥ íķ´ ì£¼ ìĦ¸ìļĶ . Ġ( ìĺ Ī : Ġ 2 0 0 2 0 1 1 1 )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sex Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" ìĦ± ë³Ħ ìĿĦ ĠìĦłíĥĿ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" íĶĦ ë¡ľ íķ Ħ ĠìĿ´ë¯¸ ì§Ģë¥¼ ĠìĦłíĥĿ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cb _ profile Settings . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" ìķ½ ê´Ģ ìĹĲ ĠëıĻ ìĿĺ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġet v _ profile Setting Name . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnick Name Ġ= Ġet v _ profile Setting Nick Name . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbirth Day Ġ= Ġet v _ profile Setting Birth . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtoday Date Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthis Year Ġ= Ġtoday Date . get ( Calendar . YEAR ). toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . parse ( birth Day , ĠDateTime Formatter . of Pattern (" yyyy MM dd ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg . text Ġ= Ġ" ìĥĿ ëħĦ ìĽĶ ìĿ¼ ìĿĦ Ġìłķ íĻ ķ íķĺê²Į Ġìŀħëł¥ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Birth Day Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . parse ( birth Day , ĠDateTime Formatter . of Pattern (" yyyy MM dd ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbirth Year : ĠInt Ġ= Ġdate Birth Day . year ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġage : ĠInt Ġ= Ġthis Year Ġ- Ġbirth Year Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser !!. name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . nick Name Ġ= Ġnick Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . birth Day Ġ= Ġdate Birth Day ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . sex Ġ= Ġsex . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . age Ġ= Ġage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . image Ġ= Ġcontent Resolver . open InputStream ( image Uri !! ) !!. read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . put (" food ", ĠJSONArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . put (" h obby ", ĠJSONArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . put (" place ", ĠJSONArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . set Inter ests ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Interest List Intent ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn _ change Img . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . setData And Type ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , Ġ" image /* ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher . launch ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ previous Page . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Interest List Intent ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġto Interest List Intent Ġ= ĠIntent ( application Context , ĠPassword Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠUtils . set Ess ential Data ( to Interest List Intent , Ġuser , Ġthis :: class . java . name ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( to Interest List Intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Conditions (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstate Sum Ġ= Ġstate Birth Day Ġ+ Ġstate Img Ġ+ Ġstate Nick Name Ġ+ Ġstate Sex ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( state Sum Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ moveTo Password . setBackground Resource ( R . drawable . button _ rounded _ medium ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ moveTo Password . setBackground Resource ( R . drawable . button _ rounded _ medium _ disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }