package Ġcom . gre ento ad . tur tle body . doc picker . ui . components Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġcom . gre ento ad . tur tle body . doc picker . R Ċ import Ġcom . gre ento ad . tur tle body . doc picker . core . Doc Constants Ċ import Ġcom . gre ento ad . tur tle body . doc picker . core . Doc Picker Config Ċ import Ġcom . gre ento ad . tur tle body . doc picker . ui . base . Activity Base Ċ import Ġcom . gre ento ad . tur tle body . doc picker . ui . common . bottom _ sheet _ filter . Doc Filter Fragment Ċ import Ġcom . gre ento ad . tur tle body . doc picker . ui . components . file . Doc Fragment Ċ import Ġcom . gre ento ad . tur tle body . doc picker . ui . components . folder . Doc Folder Fragment Ċ import Ġkotlinx . android . synt hetic . main . tb _ doc _ picker _ activity _ lib _ main .* Ċ import Ġorg . jetbrains . ank o . info Ċ import Ġjava . io . Serializable ĊĊ Ċ class ĠActivity Lib Main Ġ: ĠActivity Base (){ ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB _ ARG _ URI _ LIST Ġ= Ġ" activity . lib . main . uri . list " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Picker Config : ĠDoc Picker Config ĊĠĠĠ Ġprivate Ġvar Ġm Doc Filter Fragment : ĠBottom Sheet Dialog Fragment ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . tb _ doc _ picker _ activity _ lib _ main ) ĊĊĠĠĠĠĠĠĠ Ġinit Toolbar ( R . drawable . tb _ doc _ picker _ ic _ arrow _ back _ black _ 2 4 dp , activity _ lib _ main _ toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar Title Ġ= Ġ" Select ĠFolder " ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . extras Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Picker Config Ġ= Ġintent . get Serializable Extra ( Doc Picker Config . ARG _ B UNDLE ) Ġas ĠDoc Picker Config ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstart Doc Folder Fragment () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item ?. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ open Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// create Pick From Documents Intent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ content ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDoc Folder Fragment Ġ-> Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDoc Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Title Ġ= Ġ" Select ĠFolder " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity _ lib _ main _ toolbar _ txt _ count . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Counter ( 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment 2 Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( fragment 2 Ġis ĠDoc Folder Fragment ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment 2 . on Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġcounter Ġcounter Ġfor Ġselecting Ġmultiple Ġmedia Ġfiles ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Counter ( counter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity _ lib _ main _ toolbar _ txt _ count . text Ġ= Ġ"$ counter " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Back Data ( list : ĠArrayList < Uri >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( B _ ARG _ URI _ LIST , Ġlist Ġas ĠSerializable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġstart Doc Folder Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar Title Ġ= Ġ" Select ĠFolder " ĊĠĠĠĠĠĠĠ Ġactivity _ lib _ main _ toolbar _ txt _ count . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Serializable ( Doc Picker Config . ARG _ B UNDLE , Ġm Picker Config ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠDoc Folder Fragment . newInstance ( Doc Constants . Fragment . DOC _ FOLDER , Ġbundle ) ĊĠĠĠĠĠĠĠ Ġval Ġft Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġft . add ( R . id . frame _ content , Ġfragment , ĠDoc Folder Fragment :: class . java . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġstart Doc Fragment ( folder Path : ĠString , picker Config : ĠDoc Picker Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar Title Ġ= Ġ" Choose ĠDoc " ĊĠĠĠĠĠĠĠ Ġactivity _ lib _ main _ toolbar _ txt _ count . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Serializable ( Doc Picker Config . ARG _ B UNDLE , Ġpicker Config ) ĊĠĠĠĠĠĠĠ Ġbundle . putString ( Doc Fragment . B _ ARG _ FOLDER _ PATH , Ġfolder Path ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠDoc Fragment . newInstance ( Doc Constants . Fragment . DOC _ LIST , Ġbundle ) ĊĠĠĠĠĠĠĠ Ġval Ġft Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġft . add ( R . id . frame _ content , Ġfragment , ĠDoc Fragment :: class . java . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġstart Fragment Create () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Serializable ( Doc Picker Config . ARG _ B UNDLE , Ġm Picker Config ) ĊĊĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" fragment : Ġcreate " Ġ} ĊĠĠĠĠĠĠĠ Ġm Doc Filter Fragment Ġ= ĠDoc Filter Fragment . newInstance ( Doc Constants . Fragment . DOC _ FILTER , Ġbundle ) ĊĠĠĠĠĠĠĠ Ġ( m Doc Filter Fragment Ġas ĠDoc Filter Fragment ). set Listener ( object Ġ: ĠDoc Filter Fragment . On Filter Done Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Filter Done () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDoc Folder Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" folder Ġfragment " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . on Filter Done () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDoc Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" doc Ġfragment " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . on Filter Done () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Doc Filter Fragment ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Doc Filter Fragment ?. show ( support FragmentManager , ĠDoc Filter Fragment :: class . java . simple Name ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ