Skip to content

Commit 8074574

Browse files
committedNov 11, 2017
Fixed lag when showing folder size and eventual crash
Fixed Properties display crash
1 parent 50dfba6 commit 8074574

File tree

8 files changed

+71
-29
lines changed

8 files changed

+71
-29
lines changed
 

‎filebrowser/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apply plugin: 'com.android.library'
33
ext {
44
PUBLISH_GROUP_ID = 'com.adityak'
55
PUBLISH_ARTIFACT_ID = 'browsemyfiles'
6-
PUBLISH_VERSION = '1.6'
6+
PUBLISH_VERSION = '1.7'
77
}
88

99
android {
@@ -14,8 +14,8 @@ android {
1414
//applicationId "com.aditya.filebrowser"
1515
minSdkVersion 15
1616
targetSdkVersion 25
17-
versionCode 8
18-
versionName "1.6"
17+
versionCode 9
18+
versionName "1.7"
1919
}
2020
buildTypes {
2121
release {

‎filebrowser/src/main/java/com/aditya/filebrowser/FileBrowser.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.apache.commons.io.FilenameUtils;
4747

4848
import java.io.File;
49+
import java.util.ArrayList;
4950
import java.util.Arrays;
5051
import java.util.HashSet;
5152
import java.util.List;
@@ -78,7 +79,7 @@ public class FileBrowser extends AppCompatActivity implements OnFileChangedListe
7879
private MenuItem mSearchMenuItem;
7980
private SearchViewListener mSearchViewListener;
8081
private Handler mUIUpdateHandler;
81-
private List<FileItem> mFileList;
82+
private List<FileItem> mFileList = new ArrayList<>();
8283

8384
private String mInitialDirectory;
8485
private String mFilterFilesWithExtension;

‎filebrowser/src/main/java/com/aditya/filebrowser/FileBrowserWithCustomHandler.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.apache.commons.io.FileUtils;
4444

4545
import java.io.File;
46+
import java.util.ArrayList;
4647
import java.util.Arrays;
4748
import java.util.HashSet;
4849
import java.util.List;
@@ -75,7 +76,7 @@ public class FileBrowserWithCustomHandler extends AppCompatActivity implements O
7576
private MenuItem mSearchMenuItem;
7677
private SearchViewListener mSearchViewListener;
7778
private Handler mUIUpdateHandler;
78-
private List<FileItem> mFileList;
79+
private List<FileItem> mFileList = new ArrayList<>();
7980

8081
private String mInitialDirectory;
8182
private String mFilterFilesWithExtension;
@@ -194,7 +195,7 @@ private void loadUi() {
194195
mCurrentPath = (TextView) findViewById(R.id.currentPath);
195196

196197
mFilesList = (FastScrollRecyclerView) findViewById(R.id.recycler_view);
197-
mAdapter = new CustomAdapter(mNavigationHelper.getFilesItemsInCurrentDirectory(),mContext);
198+
mAdapter = new CustomAdapter(mFileList,mContext);
198199
mFilesList.setAdapter(mAdapter);
199200
mLayoutManager = new LinearLayoutManager(mContext);
200201
mFilesList.setLayoutManager(mLayoutManager);

‎filebrowser/src/main/java/com/aditya/filebrowser/FileChooser.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public class FileChooser extends AppCompatActivity implements OnFileChangedListe
7474
private MenuItem mSearchMenuItem;
7575
private SearchViewListener mSearchViewListener;
7676
private Handler mUIUpdateHandler;
77-
private List<FileItem> mFileList;
77+
private List<FileItem> mFileList = new ArrayList<>();
7878

7979
private String mInitialDirectory;
8080
private String mFilterFilesWithExtension;
@@ -163,7 +163,7 @@ private void loadUi() {
163163
mCurrentPath = (TextView) findViewById(R.id.currentPath);
164164

165165
mFilesList = (FastScrollRecyclerView) findViewById(R.id.recycler_view);
166-
mAdapter = new CustomAdapter(mNavigationHelper.getFilesItemsInCurrentDirectory(),mContext);
166+
mAdapter = new CustomAdapter(mFileList,mContext);
167167
mFilesList.setAdapter(mAdapter);
168168
mLayoutManager = new LinearLayoutManager(mContext);
169169
mFilesList.setLayoutManager(mLayoutManager);

‎filebrowser/src/main/java/com/aditya/filebrowser/adapters/CustomAdapter.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,7 @@ public void onBindViewHolder(MyViewHolder holder, final int position) {
154154
SimpleDateFormat formatter = new SimpleDateFormat(Constants.DATE_FORMAT);
155155
String fileSize = "";
156156
if(AssortedUtils.GetPrefs(Constants.SHOW_FOLDER_SIZE,mContext).equalsIgnoreCase("true")) {
157-
if (f.isDirectory()) {
158-
fileSize = FileUtils.byteCountToDisplaySize(FileUtils.sizeOfDirectory(f)) + " | ";
159-
} else {
160-
fileSize = FileUtils.byteCountToDisplaySize(FileUtils.sizeOf(f)) + " | ";
161-
}
157+
fileSize = filteredfileList.get(position).getFileSize();
162158
}
163159
holder.fileModified.setText(fileSize + "Last Modified : " + formatter.format(d));
164160
} catch (Exception e) {

‎filebrowser/src/main/java/com/aditya/filebrowser/fileoperations/FileIO.java

+24-16
Original file line numberDiff line numberDiff line change
@@ -209,23 +209,31 @@ public void run() {
209209
public void getProperties(List<FileItem> selectedItems) {
210210

211211
StringBuilder msg = new StringBuilder();
212-
if(selectedItems.size()==1) {
213-
boolean isDirectory = (selectedItems.get(0).getFile().isDirectory());
214-
String type = isDirectory?"Directory":"File";
215-
String size = FileUtils.byteCountToDisplaySize(isDirectory?FileUtils.sizeOfDirectory(selectedItems.get(0).getFile()):FileUtils.sizeOf(selectedItems.get(0).getFile()));
216-
String lastModified = new SimpleDateFormat(Constants.DATE_FORMAT).format(selectedItems.get(0).getFile().lastModified());
217-
msg.append("Type : " + type + "\n\n");
218-
msg.append("Size : " + size + "\n\n");
219-
msg.append("Last Modified : " + lastModified + "\n\n");
220-
msg.append("Path : "+selectedItems.get(0).getFile().getAbsolutePath());
221-
} else {
222-
long totalSize = 0;
223-
for(int i=0;i<selectedItems.size();i++) {
224-
boolean isDirectory = (selectedItems.get(i).getFile().isDirectory());
225-
totalSize += isDirectory?FileUtils.sizeOfDirectory(selectedItems.get(i).getFile()):FileUtils.sizeOf(selectedItems.get(i).getFile());
212+
try {
213+
if(selectedItems.size()==1) {
214+
boolean isDirectory = false;
215+
File f = selectedItems.get(0).getFile().getCanonicalFile();
216+
isDirectory = (f.isDirectory());
217+
String type = isDirectory?"Directory":"File";
218+
String size = FileUtils.byteCountToDisplaySize(isDirectory?FileUtils.sizeOfDirectory(f):FileUtils.sizeOf(f));
219+
String lastModified = new SimpleDateFormat(Constants.DATE_FORMAT).format(selectedItems.get(0).getFile().lastModified());
220+
msg.append("Type : " + type + "\n\n");
221+
msg.append("Size : " + size + "\n\n");
222+
msg.append("Last Modified : " + lastModified + "\n\n");
223+
msg.append("Path : "+selectedItems.get(0).getFile().getAbsolutePath());
224+
} else {
225+
long totalSize = 0;
226+
for(int i=0;i<selectedItems.size();i++) {
227+
File f = selectedItems.get(0).getFile().getCanonicalFile();
228+
boolean isDirectory = (f.isDirectory());
229+
totalSize += isDirectory?FileUtils.sizeOfDirectory(f):FileUtils.sizeOf(f);
230+
}
231+
msg.append("Type : " + "Multiple Files" + "\n\n");
232+
msg.append("Size : " + FileUtils.byteCountToDisplaySize(totalSize) + "\n\n");
226233
}
227-
msg.append("Type : " + "Multiple Files" + "\n\n");
228-
msg.append("Size : " + FileUtils.byteCountToDisplaySize(totalSize) + "\n\n");
234+
} catch (Exception e) {
235+
e.printStackTrace();
236+
msg.append("Could Not Compute Properties");
229237
}
230238
UIUtils.ShowMsg(msg.toString(),"Properties",mContext);
231239
}

‎filebrowser/src/main/java/com/aditya/filebrowser/models/FileItem.java

+20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.aditya.filebrowser.models;
22

33
import com.aditya.filebrowser.interfaces.ITrackSelection;
4+
import com.aditya.filebrowser.utils.AssortedUtils;
5+
6+
import org.apache.commons.io.FileUtils;
47

58
import java.io.File;
69

@@ -16,8 +19,16 @@ public void setFile(File file) {
1619
this.file = file;
1720
}
1821

22+
public String getFileSize() {
23+
return fileSize;
24+
}
25+
26+
public void setFileSize(String fileSize) {
27+
this.fileSize = fileSize;
28+
}
1929
File file;
2030
boolean isSelected;
31+
String fileSize;
2132

2233
@Override
2334
public boolean isSelected() {
@@ -31,5 +42,14 @@ public void setSelected(boolean isSelected) {
3142

3243
public FileItem(File file) {
3344
this.file = file;
45+
try {
46+
if (file.isDirectory()) {
47+
setFileSize(FileUtils.byteCountToDisplaySize(AssortedUtils.GetMinimumDirSize(file)) + " | ");
48+
} else {
49+
setFileSize(FileUtils.byteCountToDisplaySize(FileUtils.sizeOf(file)) + " | ");
50+
}
51+
} catch (Exception e) {
52+
setFileSize("Unknown | ");
53+
}
3454
}
3555
}

‎filebrowser/src/main/java/com/aditya/filebrowser/utils/AssortedUtils.java

+16
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import android.content.SharedPreferences;
55
import android.preference.PreferenceManager;
66

7+
import java.io.File;
8+
79
public class AssortedUtils {
810

911

@@ -20,4 +22,18 @@ public static String GetPrefs(String key,Context context)
2022
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(context);
2123
return SP.getString(key, "");
2224
}
25+
26+
public static long GetMinimumDirSize(File file)
27+
{
28+
long result = 0;
29+
for( File f : file.listFiles()) {
30+
if(f.isFile()) {
31+
result += f.length();
32+
} else if(f.isDirectory()) {
33+
result += f.getTotalSpace();
34+
}
35+
}
36+
return result;
37+
}
38+
2339
}

0 commit comments

Comments
 (0)