package Ġru . z 1 3 . img tags . ui . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . widget . Toast Ċ import Ġcom . are l lo mobile . mvp . presenter . Inject Presenter Ċ import Ġcom . are l lo mobile . mvp . presenter . Provide Presenter Ċ import Ġru . ter r ak ok . c icer one . Navigator Ċ import Ġru . ter r ak ok . c icer one . Navigator Holder Ċ import Ġru . z 1 3 . img tags . App Ċ import Ġru . z 1 3 . img tags . R Ċ import Ġru . z 1 3 . img tags . mvp . present ers . MainActivity Presenter Ċ import Ġru . z 1 3 . img tags . mvp . views . MainActivity View Ċ import Ġru . z 1 3 . img tags . sub navigation . Main Screen Navigator Factory Ċ import Ġru . z 1 3 . img tags . sub navigation . Navigator Callback Ċ import Ġru . z 1 3 . img tags . ui . common . Back Button Listener Ċ import Ġru . z 1 3 . img tags . ui . widgets . Y Progress Dialog Ċ import Ġru . z 1 3 . img tags . utils . Files Utils Ċ import Ġru . z 1 3 . img tags . utils . Y Toast Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠMainActivity Ġ: ĠBase Activity (), ĠMainActivity View Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER MISSION S _ REQUIRED Ġ= ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRC _ PERMISSION S Ġ= Ġ 1 0 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRC _ SELECT _ IMAGE Ġ= Ġ 1 0 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Inject Presenter ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠMainActivity Presenter ĊĊĠĠĠ Ġ@ Provide Presenter ĊĠĠĠ Ġfun Ġprovide Presenter () Ġ= Ġpresenter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnavigator Holder : ĠNavigator Holder ĊĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠY Progress Dialog ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . app Component . inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġif ( savedInstanceState Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on First Start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume Fragments () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume Fragments () ĊĊĠĠĠĠĠĠĠ Ġnavigator Holder . set Navigator ( get Main Screen Navigator ()) ĊĠĠĠĠĠĠĠ Ġpresenter . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigator Holder . remove Navigator () ĊĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġpresenter . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress ( is Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( is Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Show Now : ĠBoolean Ġ= Ġprogress Dialog ?. is Showing Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Show Now ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠY Progress Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Image Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! are Permission Granted ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠPER MISSION S _ REQUIRED , ĠRC _ PERMISSION S ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Gallery () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġare Permission Granted (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Gallery () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgallery Intent Ġ= ĠIntent ( Intent . ACTION _ P ICK , ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ) ĊĠĠĠĠĠĠĠ Ġgallery Intent . type Ġ= Ġ" image /* " ĊĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( gallery Intent , ĠRC _ SELECT _ IMAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRC _ PERMISSION S Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġall Granted Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġgrant Results . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results [ i ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Granted Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Granted Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( all Granted ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Gallery () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRC _ SELECT _ IMAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġphoto Ġfrom ĠG ALL ERY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġdata . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= ĠFiles Utils . get Real Path From Uri ( this , Ġuri ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( filePath Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . selected Image Item ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( result Code Ġ== ĠActivity . RESULT _ C ANCE LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUser ĠCancel led Ġthe Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Main Screen Navigator (): ĠNavigator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMain Screen Navigator Factory . create Navigator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . main _ fragment _ container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠNavigator Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow System Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY Toast . show Text ( this @ MainActivity , Ġmessage , ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexit () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . main _ fragment _ container ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfragment Ġis ĠBack Button Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( fragment Ġas ĠBack Button Listener ). on Back Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ