@@ -543,6 +543,9 @@ else if (cursor.getCount() > 0 && cursor.moveToFirst()) {
543543 return null ;
544544 }
545545
546+ final MainFragment mainFragment = mainFragmentReference .get ();
547+ MainFragmentViewModel viewModel = mainFragment .getMainFragmentViewModel ();
548+
546549 List <LayoutElementParcelable > recentFiles = new ArrayList <>(40 );
547550
548551 Cursor cursor = getRecentFilesCursor (c );
@@ -552,10 +555,10 @@ else if (cursor.getCount() > 0 && cursor.moveToFirst()) {
552555 String filePath = cursor .getString (cursor .getColumnIndex (MediaStore .MediaColumns .DATA ));
553556 File f = new File (filePath );
554557 if (f .isDirectory ()) {
555- List <File > files = getFilesFromDirectory (f );
558+ List <File > files = getFilesFromDirectory (mainFragment , filePath );
556559 for (File file : files )
557- compareFileAndAddToList (recentFiles , file );
558- } else compareFileAndAddToList (recentFiles , f );
560+ compareFileAndAddToList (viewModel , recentFiles , file );
561+ } else compareFileAndAddToList (viewModel , recentFiles , f );
559562 } while (cursor .moveToNext ());
560563 }
561564 cursor .close ();
@@ -597,7 +600,7 @@ private Cursor getRecentFilesCursor(Context c) {
597600 return cursor ;
598601 }
599602
600- private void compareFileAndAddToList (List <LayoutElementParcelable > recentFiles , File file ) {
603+ private void compareFileAndAddToList (MainFragmentViewModel viewModel , List <LayoutElementParcelable > recentFiles , File file ) {
601604 Calendar c = Calendar .getInstance ();
602605 c .set (Calendar .DAY_OF_YEAR , c .get (Calendar .DAY_OF_YEAR ) - 2 );
603606 Date d = c .getTime ();
@@ -608,32 +611,34 @@ private void compareFileAndAddToList(List<LayoutElementParcelable> recentFiles,
608611 LayoutElementParcelable parcelable = createListParcelables (strings );
609612 if (parcelable != null ) {
610613 recentFiles .add (parcelable );
614+ viewModel .incrementFileCount ();
611615 }
612616 }
613617 }
614618 }
615619
616620 /**
617- * Recursively fetches the files from directory tree and adds all the files in a list
621+ * fetches the files from directory tree and adds all the files in a list
618622 *
619- * @param f: File
623+ * @param mainFragment: the main fragment reference
624+ * @param filePath: the file filePath
620625 * @return List of files in directory tree.
621626 */
622- private List <File > getFilesFromDirectory (File f ) {
623- List < File > allFilesInDir = new ArrayList <>();
624- try {
625- File [] files = f . listFiles ();
626- for ( File file : files ) {
627- if ( file . isDirectory ()) {
628- getFilesFromDirectory ( file );
629- } else {
630- allFilesInDir . add ( file );
631- }
632- }
633- } catch ( Exception exception ) {
634- LOG . error ( exception . getLocalizedMessage () );
635- }
636- return allFilesInDir ;
627+ private List <File > getFilesFromDirectory (MainFragment mainFragment , String filePath ) {
628+
629+ List < File > files = new ArrayList <>();
630+
631+ ListFilesCommand . INSTANCE . listFiles (
632+ filePath ,
633+ mainFragment . requireMainActivity (). isRootExplorer (),
634+ showHiddenFiles ,
635+ mode -> { return null ; },
636+ hybridFileParcelable -> {
637+ files . add ( hybridFileParcelable . getFile ());
638+ return null ;
639+ } );
640+
641+ return files ;
637642 }
638643
639644 private @ Nullable List <LayoutElementParcelable > listTrashBinFiles () {
0 commit comments