package Ġcom . github . wind se kir un . nar ae image picker . module Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . provider . Media Store . Images . Image Columns . BUCKET _ DISPLAY _ NAME Ċ import Ġandroid . provider . Media Store . Images . Media . DATE _ MODI FIED Ċ import Ġcom . github . wind se kir un . nar ae image picker . item . File Item Ċ import Ġcom . github . wind se kir un . nar ae image picker . item . Folder Item Ċ import Ġcom . github . wind se kir un . nar ae image picker . item . Picker Setting Item Ċ import Ġcom . github . wind se kir un . nar ae image picker . utils . getColumn String Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashSet Ċ Ċ /** Ċ Ġ* ĠN ar ae Image Picker Ċ Ġ* ĠClass : ĠP icker Set Ċ Ġ* ĠCreated Ġby ĠPy x is Ġon Ġ 2 0 1 8 - 0 2 - 2 7 . Ċ Ġ* Ċ Ġ* ĠDescription : Ċ Ġ*/ Ċ object ĠP icker Set Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem : ĠP icker Setting Item ĊĠĠĠ Ġprivate Ġval ĠP ICT URE _ MAP : ĠHashMap < String , ĠMutable List < File Item >> Ġ= Ġhash Map Of () ĊĊĠĠĠ Ġprivate Ġval Ġcursor Uri : ĠUri Ġ= ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ĊĠĠĠ Ġprivate Ġconst Ġval ĠID _ COLUMN Ġ= ĠMedia Store . Images . Media ._ ID ĊĠĠĠ Ġprivate Ġconst Ġval ĠPATH _ COLUMN Ġ= ĠMedia Store . Images . Media . DATA ĊĠĠĠ Ġprivate Ġconst Ġval ĠDISPLAY _ NAME _ COLUMN Ġ= ĠMedia Store . Images . Media . BUCKET _ DISPLAY _ NAME ĊĠĠĠ Ġprivate Ġconst Ġval ĠORDER _ BY Ġ= ĠMedia Store . Images . Media . DATE _ TA KEN ĊĊĠĠĠ Ġfun Ġclear Picker Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġitem . clear () ĊĠĠĠĠĠĠĠ ĠP ICT URE _ MAP . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Setting Item ( item : ĠP icker Setting Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item Ġ= Ġitem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Setting Item () Ġ= Ġitem ĊĊĠĠĠ Ġfun Ġload Image First ( context : ĠContext , Ġcallback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Cursor Ġ= Ġcontext . content Resolver . query ( cursor Uri , ĠarrayOf ( BUCKET _ DISPLAY _ NAME , ĠPATH _ COLUMN ), Ġnull , Ġnull , ĠORDER _ BY ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Item Set Ġ= ĠHashSet < String >() ĊĠĠĠĠĠĠĠ Ġtitle Cursor ?. do While Ġ{ Ġtitle Item Set . add ( title Cursor . getColumn String ( DISPLAY _ NAME _ COLUMN )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle ItemList Ġ= Ġmutable ListOf < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( title Item Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( title Ġin Ġtitle ItemList ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < File Item >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Cursor Ġ= Ġcontext . content Resolver . query ( cursor Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ID _ COLUMN , ĠPATH _ COLUMN , ĠDATE _ MODI FIED ), Ġ"$ BUCKET _ DISPLAY _ NAME Ġ= ?", ĠarrayOf ( title ), ĠORDER _ BY ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Cursor ?. do While Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġphoto Cursor . getColumn String ( PATH _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġphoto Cursor . getColumn String ( ID _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists () Ġ&& Ġ( item . include Gif Ġ|| Ġfile . extension Ġ!= Ġ" gif ")) Ġlist . add ( File Item ( id , Ġimage )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Cursor ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . reverse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Picture Map ( title , Ġlist ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtitle Cursor ?. close () ĊĠĠĠĠĠĠĠ Ġtitle Item Set . clear () ĊĠĠĠĠĠĠĠ Ġtitle ItemList . clear () ĊĠĠĠĠĠĠĠ Ġcallback . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Folder List (): ĠList < Folder Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠP ICT URE _ MAP . entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . value . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . key Ġto Ġit . value [ 0 ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠFolder Item ( it . first , Ġit . second . image Path ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . name . toLowerCase ( Locale . getDefault ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetImage List ( title : ĠString ): ĠMutable List < File Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠP ICT URE _ MAP [ title ]?. to Mutable List () Ġ?: Ġmutable ListOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetImage List (): ĠMutable List < File Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < File Item >() ĊĠĠĠĠĠĠĠ ĠP ICT URE _ MAP . values . forEach Ġ{ Ġlist . addAll ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty List () Ġ= ĠP ICT URE _ MAP . isEmpty () ĊĊĠĠĠ Ġfun Ġget Limit Message () Ġ= Ġitem . ui Setting . ex ceed Limit Message . format ( SelectedItem . get Limits ()) ĊĊĠĠĠ Ġprivate Ġfun ĠCursor . do While ( action : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( this . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Picture Map ( title : ĠString , Ġlist : ĠMutable List < File Item >) Ġ{ ĊĠĠĠĠĠĠĠ ĠP ICT URE _ MAP [ title ] Ġ= Ġlist ĊĠĠĠ Ġ} Ċ }