/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠV lad ĠWe ber - P fl a um er Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 Ġk z . sg q . color assistant . ui . activity Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 7 . app . AppCompat Delegate Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġcom . are l lo mobile . mvp . M vp AppCompatActivity Ċ import Ġcom . are l lo mobile . mvp . presenter . Inject Presenter Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġk z . sg q . color assistant . R Ċ import Ġk z . sg q . color assistant . mvp . model . Main Model Impl Ċ import Ġk z . sg q . color assistant . mvp . presenter . Main Presenter Ċ import Ġk z . sg q . color assistant . mvp . view . Main View Ċ import Ġk z . sg q . color assistant . room . table . Cloud Ċ import Ġk z . sg q . color assistant . ui . fragment . Like Fragment Ċ import Ġk z . sg q . color assistant . ui . fragment . Cloud Fragment Ċ import Ġk z . sg q . color assistant . ui . fragment . Global Fragment Ċ import Ġk z . sg q . color assistant . ui . fragment . dialog . Scan Dialog Ċ import Ġk z . sg q . color assistant . ui . fragment . sheet . Menu Bottom Sheet Ċ import Ġk z . sg q . color assistant . ui . util . Code Activity Ċ import Ġk z . sg q . color assistant . ui . util . Tags System App Ċ import Ġk z . sg q . color assistant . ui . util . java . Preferences Util Ċ import Ġk z . sg q . color assistant . ui . view . Item Color Ċ import Ġkotlin . math . PI Ċ Ċ class ĠMainActivity Ġ: ĠM vp AppCompatActivity (), ĠMain View Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdouble Back To Exit Pressed Once Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Inject Presenter ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠMain Presenter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Theme ( Preferences Util . get Theme Id ( this )) ĊĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( Preferences Util . get Night Mode ( this )) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġinit ActionBar () ĊĠĠĠĠĠĠĠ Ġfirst Fragment () ĊĠĠĠĠĠĠĠ Ġhandler Link () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main _ menu , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ= Ġwhen Ġ( item ?. itemId ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . open Menu () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . settings Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSettings Activity :: class . java )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . qr Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Camera Permission () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . image _ scan Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠImage Activity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCode Activity . IMAGE _ SCAN . ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Fragment Cloud ( fragment : ĠCloud Fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Fragment ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fragment , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġglobal () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġpresenter . setCurrent Fragment ( Main Model Impl . Main Fragment . GLOBAL ) ĊĠĠĠĠĠĠĠ Ġfab . setImage Drawable ( resources . get Drawable ( R . drawable . like , Ġtheme )) ĊĠĠĠĠĠĠĠ Ġfirst Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlike () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġpresenter . setCurrent Fragment ( Main Model Impl . Main Fragment . LIKE ) ĊĠĠĠĠĠĠĠ Ġfab . setImage Drawable ( resources . get Drawable ( R . drawable . cancel , Ġtheme )) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . pop Back Stack () ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠLike Fragment () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Fragment ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fragment , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcloud () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġpresenter . setCurrent Fragment ( Main Model Impl . Main Fragment . CLOUD ) ĊĠĠĠĠĠĠĠ Ġfab . setImage Drawable ( resources . get Drawable ( R . drawable . constructor , Ġtheme )) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . pop Back Stack () ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠCloud Fragment () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Fragment ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fragment , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconstructor () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠConstructor Activity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCode Activity . CON STRUCTOR . ID ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġpresenter . setCurrent Fragment ( Main Model Impl . Main Fragment . LIKE ) ĊĠĠĠĠĠĠĠ Ġfab . setImage Drawable ( resources . get Drawable ( R . drawable . like , Ġtheme )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Menu ( fragment Current : ĠMain Model Impl . Main Fragment ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠMenu Bottom Sheet (). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment Current ( fragment Current ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Click ( object Ġ: ĠMenu Bottom Sheet . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( fragment Current : ĠMain Model Impl . Main Fragment ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . menu Click ( fragment Current ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}. show ( support FragmentManager , ĠTags System App . MENU _ BOTTOM _ SHE ET ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanswer QR ( cloud : ĠCloud ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠScan Dialog (). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcloud ( cloud ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener ( init Click Answer ( cloud )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( this @ MainActivity . resources . getString ( R . string . dialog _ scan _ title _ qr )) ĊĠĠĠĠĠĠĠ Ġ}. show ( support FragmentManager , ĠTags System App . SCAN _ DIALOG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanswer Link ( cloud : ĠCloud ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠScan Dialog (). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcloud ( cloud ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener ( init Click Answer ( cloud )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( this @ MainActivity . resources . getString ( R . string . dialog _ scan _ title _ link )) ĊĠĠĠĠĠĠĠ Ġ}. show ( support FragmentManager , ĠTags System App . SCAN _ DIALOG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror QR () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator _ layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . sn ack _ qr _ scan _ error _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . sn ack _ qr _ scan _ error _ click ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Click Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Action TextColor ( resources . getColor ( R . color . sn ack _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( android . support . design . R . id . sn ackbar _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTextColor ( resources . getColor ( R . color . sn ack _ text )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġview . layout Params Ġas ĠCoord inator Layout . LayoutParams ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . set Margins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . left Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . top Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . right Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . bottom Margin Ġ+ Ġbar . height Ġ+ Ġ( fab . height Ġ/ Ġ( PI Ġ/ Ġ 2 )). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġparams ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . init Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 1 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( permissions [ 0 ] Ġ== ĠManifest . permission . CAMERA ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( grant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Scan Activity () ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( double Back To Exit Pressed Once ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . slide _ in _ left , ĠR . anim . slide _ out _ right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . double Back To Exit Pressed Once Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġresources . getString ( R . string . back _ exit ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġdouble Back To Exit Pressed Once Ġ= Ġfalse Ġ}, Ġ 2 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfirst Fragment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . pop Back Stack () ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠGlobal Fragment () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Fragment ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fragment , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Click Answer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcloud : ĠCloud ĊĠĠĠ Ġ): ĠItem Color . OnClickListener Ġ= Ġobject Ġ: ĠItem Color . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save ( cloud ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Click Error (): ĠView . OnClickListener Ġ= ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcheck Camera Permission () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Camera Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĠManifest . permission . CAMERA ) Ġ!= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . PERMISSION _ GRAN TED ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( android . Manifest . permission . CAMERA ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Scan Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Scan Activity () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠQR Code Scan Activity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCode Activity . QR _ SCAN . ID ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ActionBar () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( bar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home As Up Indicator ( R . drawable . menu ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . fab Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandler Link () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . data Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . handler Link ( intent ?. data . toString ()) ĊĠĠĠ Ġ} Ċ } Ċ