Skip to content

Commit cd1c20d

Browse files
committed
use ListFilesCommand#listFiles
1 parent 6304fdc commit cd1c20d

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/LoadFilesListTask.java

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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,6 +611,7 @@ 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
}
@@ -616,24 +620,25 @@ private void compareFileAndAddToList(List<LayoutElementParcelable> recentFiles,
616620
/**
617621
* Recursively 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 path: the file path
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 path) {
628+
629+
List<File> files = new ArrayList<>();
630+
631+
ListFilesCommand.INSTANCE.listFiles(
632+
path,
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

Comments
 (0)