package Ġcom . wer b . more type . multi Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . wer b . library . More Adapter Ċ import Ġcom . wer b . library . link . Multi Link Ċ import Ġcom . wer b . library . link . Register Item Ċ import Ġcom . wer b . more type . R Ċ import Ġcom . wer b . more type . Title ViewHolder Ċ import Ġcom . wer b . more type . Utils Ċ import Ġcom . wer b . more type . data . Data Server Ċ import Ġcom . wer b . permission sc heck er . Permission Checker Ċ import Ġcom . wer b . pick photo view . Pick Photo View Ċ import Ġcom . wer b . pick photo view . util . Pick Config Ċ import Ġkotlinx . android . synt hetic . main . activity _ multi _ register .* Ċ import Ġkotlinx . android . synt hetic . main . widget _ view _ message _ input .* ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġw an bo Ġon Ġ 2 0 1 7 / 7 / 1 4 . Ċ Ġ*/ Ċ class ĠMulti Register Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval ĠPER MISSION S Ġ= ĠarrayOf ( Manifest . permission . CAMERA , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠ Ġprivate Ġvar Ġpermission Checker : ĠPermission Checker ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠMore Adapter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ multi _ register ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġpermission Ġcheck ĊĠĠĠĠĠĠĠ Ġpermission Checker Ġ= ĠPermission Checker ( this ) ĊĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation Icon ( R . mip map . ic _ close _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ Ġfinish () Ġ} ĊĊĠĠĠĠĠĠĠ Ġmulti _ register _ list . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġadapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( Register Item ( R . layout . item _ view _ title , ĠTitle ViewHolder :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Register ( object Ġ: ĠMulti Link < Message >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlink ( data : ĠMessage ): ĠRegister Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( data . me ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Item ( R . layout . item _ view _ multi _ message _ out , ĠMessage Out ViewHolder :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Item ( R . layout . item _ view _ multi _ message _ in , ĠMessage In ViewHolder :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattach To ( multi _ register _ list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter . load Data ( Data Server . get Multi Register Data ()) ĊĊĠĠĠĠĠĠĠ Ġinput _ edit . setOn Focus ChangeListener Ġ{ Ġview , Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti _ register _ list . smooth Scroll To Position ( adapter . item Count Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlayout _ send . setOnClickListener ( send Click ) ĊĠĠĠĠĠĠĠ Ġinput _ image _ layout . setOnClickListener ( image Click ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsend Click Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( input _ edit . text . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . load Data ( build SendMessage Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ edit . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmulti _ register _ list . smooth Scroll To Position ( adapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . load Data ( build In Message Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti _ register _ list . smooth Scroll To Position ( adapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġimage Click Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġpermission Checker ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is L ack Permissions ( PERMISSION S )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . request Permissions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick Photo () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpick Photo () Ġ{ ĊĠĠĠĠĠĠĠ ĠPick Photo View . Builder ( this @ Multi Register Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pick Photo Size ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Camera ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Span Count ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Light StatusBar ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus Bar Color ( R . color . color Text Light ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( R . color . color Text Light ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar TextColor ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Select Icon Color ( R . color . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Gif ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild SendMessage Text (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ edit . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild In Message Text (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// avatars 5 . githubusercontent . com / u / 1 2 7 6 3 2 7 7 ? v = 4 & s = 4 6 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" æĶ¶ åĪ° ä½łçļĦ æ¶Īæģ¯ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild SendMessage Image ( url : ĠString , Ġsize : ĠImage Size ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" image ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ edit . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpermission Checker ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Checker . PERMISSION _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . has All Permissions Granted ( grant Results )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick Photo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . show Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠPick Config . P ICK _ PH OTO _ DATA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselect Paths Ġ= Ġdata . get Serializable Extra ( Pick Config . INT ENT _ IMG _ LIST _ SELECT ) Ġas ĠArrayList < *> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġsomething Ġu Ġwant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġselect Paths [ 0 ] Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Size Ġ= ĠUtils . read Image Size ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Size ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . load Data ( build SendMessage Image ( path , Ġimage Size )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti _ register _ list . smooth Scroll To Position ( adapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠstartActivity ( activity : ĠActivity ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( Intent ( activity , ĠMulti Register Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }