/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 4 Ġno h ana , ĠInc . Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠZ hi hu ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġ& quot ; AS ĠIS & quot ; Ġ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 Ġcom . q ing me i 2 . rx image picker _ extension . loader Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . Matrix Cursor Ċ import Ġandroid . database . Merge Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Media Store Ċ import Ġandroidx . loader . content . Cursor Loader Ċ Ċ import Ġcom . q ing me i 2 . rx image picker _ extension . entity . Album Ċ Ċ /** Ċ Ġ* ĠLoad Ġall Ġalbum s Ġ( grouped Ġby Ġbucket _ id ) Ġinto Ġa Ġsingle Ġcursor . Ċ Ġ*/ Ċ class ĠAlbum Loader Ġprivate Ġconstructor ( context : ĠContext , Ġselection : ĠString , Ġselection Args : ĠArray < String >) Ġ: Ġandroidx . loader . content . Cursor Loader ( context , ĠQUERY _ URI , ĠPRO JECTION , Ġselection , Ġselection Args , ĠBU CKET _ ORDER _ BY ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload In Background (): ĠCursor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalbum s Ġ= Ġsuper . load In Background () ĊĠĠĠĠĠĠĠ Ġval Ġall Album Ġ= ĠMatrix Cursor ( COLUMNS ) ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġall Album Cover Path Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( albums Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( albums . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Count Ġ+= Ġalbum s . getInt ( albums . getColumnIndex ( COLUMN _ COUNT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( albums . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Album Cover Path Ġ= Ġalbum s . getString ( albums . getColumnIndex ( Media Store . Media Columns . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġall Album . add Row ( array Of ( Album . AL BU M _ ID _ ALL , ĠAlbum . AL BU M _ ID _ ALL , ĠAlbum . AL BU M _ NAME _ ALL , Ġall Album Cover Path , Ġtotal Count . toString ())) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMerge Cursor ( array Of < Cursor >( all Album , Ġalbum s !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Content Changed () Ġ{} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCOLUMN _ COUNT Ġ= Ġ" count " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠQUERY _ URI Ġ= ĠMedia Store . Files . getContent Uri (" external ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCOL UMNS Ġ= ĠarrayOf ( Media Store . Files . File Columns ._ ID , Ġ" bucket _ id ", Ġ" bucket _ display _ name ", ĠMedia Store . Media Columns . DATA , ĠCOLUMN _ COUNT ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPRO JECTION Ġ= ĠarrayOf ( Media Store . Files . File Columns ._ ID , Ġ" bucket _ id ", Ġ" bucket _ display _ name ", ĠMedia Store . Media Columns . DATA , Ġ" COUNT (*) ĠAS Ġ$ COLUMN _ COUNT ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ=== Ġparams Ġfor Ġshow Single MediaType : Ġtrue Ġ=== ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSE LECTION _ FOR _ SINGLE _ MEDIA _ TYPE Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Files . File Columns . MEDIA _ TYPE Ġ+ Ġ"= ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠAND Ġ" Ġ+ ĠMedia Store . Media Columns . SIZE Ġ+ Ġ"> 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ") ĠGROUP ĠBY Ġ( bucket _ id ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Selection Args For Single MediaType ( media Type : ĠInt ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( media Type . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ================================= ============ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBU CKET _ ORDER _ BY Ġ= Ġ" date taken ĠDESC " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( context : ĠContext ?): Ġandroidx . loader . content . Cursor Loader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ?: ĠNullPointerException (" context Ġcan 't Ġbe Ġnull !") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args : ĠArray < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Ġ= ĠSE LECTION _ FOR _ SINGLE _ MEDIA _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args Ġ= Ġget Selection Args For Single MediaType ( Media Store . Files . File Columns . MEDIA _ TYPE _ IMAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAlbum Loader ( context !! , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }