package Ġcom . ri ya . drop and . ui . activity Ċ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget .* Ċ import Ġcom . am uly ak h are . text drawable . Text Drawable Ċ import Ġcom . ri ya . drop and . R Ċ import Ġcom . ri ya . drop and . ui . presenter . Profile Presenter Ċ import Ġcom . ri ya . drop and . ui . util . Simple Text Watcher Ċ import Ġcom . ri ya . drop and . ui . view . Profile View Ċ import Ġcom . ri ya . drop and . utils . argument Ċ import Ġcom . ri ya . drop and . utils . bind Ċ import Ġcom . ri ya . drop and . utils . getFirst Letter Ċ import Ġme . pri y esh . chrom a . Chrom a Dialog Ċ import Ġme . pri y esh . chrom a . Color Mode Ċ import Ġme . pri y esh . chrom a . Color Select Listener Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġorg . k oin . core . parameter . parameters Of Ċ Ċ class ĠProfile Activity Ġ: ĠS keleton Activity (), ĠProfile View Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġedit Mode : ĠBoolean Ġby Ġargument ( EXTRA _ EDIT _ MODE , Ġfalse ) ĊĊĠĠĠ Ġprivate Ġval Ġpresenter : ĠProfile Presenter Ġby Ġinject Ġ{ Ġparameters Of ( this ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġname Field : ĠEditText Ġby Ġbind ( R . id . et _ name ) ĊĠĠĠ Ġprivate Ġval Ġname Label : ĠTextView Ġby Ġbind ( R . id . tv _ name ) ĊĠĠĠ Ġprivate Ġval Ġdevice Name Label : ĠTextView Ġby Ġbind ( R . id . tv _ device _ name ) ĊĠĠĠ Ġprivate Ġval Ġavatar : ĠImageView Ġby Ġbind ( R . id . iv _ avatar ) ĊĠĠĠ Ġprivate Ġval Ġcolor Picker : ĠView Ġby Ġbind ( R . id . v _ color ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ profile , ĠActivity Type . CHILD _ ACTIVITY ) ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( presenter ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( edit Mode ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Show Home Enabled ( edit Mode ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( edit Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . profile __ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ HIDDEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcolor Picker . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . prepare Color Picker () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ save ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save User () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdevice Name Label . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbluetooth Settings Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠSettings . ACTION _ BL U ETO OTH _ SETTINGS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( bluetooth Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Profile Activity , ĠgetString ( R . string . profile __ no _ bluetooth _ settings _ activity ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġname Field . add TextChanged Listener ( text Watcher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġname Field . remove TextChanged Listener ( text Watcher ) ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Device Name ( name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice Name Label . text Ġ= Ġname Ġ?: ĠgetString ( R . string . profile __ no _ name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow UserData ( name : ĠString , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname Label . text Ġ= Ġif Ġ( name . isEmpty ()) ĠgetString ( R . string . profile __ your _ name ) Ġelse Ġname ĊĠĠĠĠĠĠĠ Ġname Label . setTextColor ( Context Compat . getColor ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name . isEmpty ()) ĠR . color . text _ light Ġelse ĠR . color . text _ dark )) ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠText Drawable . builder (). build Round ( name . getFirst Letter (), Ġcolor ) ĊĠĠĠĠĠĠĠ Ġavatar . setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠ Ġcolor Picker . set BackgroundColor ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Color Picker (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠCh rom a Dialog . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. initial Color ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. color Mode ( Color Mode . RGB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Color Selected ( color Select Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( support FragmentManager , Ġ" Chrom a Dialog ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġredirect To Con versations () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! edit Mode ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠCon versations Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Intent (). action Ġ== ĠIntent . ACTION _ SEND ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ SEND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ TEXT , Ġget Intent (). getString Extra ( Intent . EXTRA _ TEXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpref ill Username ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname Field . setText ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Not Valid Name Error ( divider : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname Field . error Ġ= ĠgetString ( R . string . profile __ validation _ error , Ġdivider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtext Watcher Ġ= Ġobject Ġ: ĠSimple Text Watcher () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Field . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Name Changed ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcolor Select Listener Ġ= Ġobject Ġ: ĠColor Select Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Color Selected ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Color Pick ed ( color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ EDIT _ MODE Ġ= Ġ" extra . edit _ mode " ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext , Ġedit Mode : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠProfile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( EXTRA _ EDIT _ MODE , Ġedit Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ