Skip to content

Commit e5fe28c

Browse files
committed
add directory size calculation to properties dialog
1 parent 3aaa530 commit e5fe28c

File tree

3 files changed

+55
-11
lines changed

3 files changed

+55
-11
lines changed

app/src/main/java/com/simplemobiletools/filemanager/Utils.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
import android.support.v4.content.ContextCompat;
1515
import android.widget.Toast;
1616

17+
import com.simplemobiletools.filemanager.models.FileDirItem;
18+
19+
import java.text.DecimalFormat;
1720
import java.util.regex.Matcher;
1821
import java.util.regex.Pattern;
1922

@@ -52,4 +55,18 @@ public static boolean isNameValid(String name) {
5255
final Matcher matcher = pattern.matcher(name);
5356
return matcher.matches();
5457
}
58+
59+
public static String getFormattedSize(FileDirItem item) {
60+
final long size = item.getSize();
61+
return formatSize(size);
62+
}
63+
64+
public static String formatSize(long size) {
65+
if (size <= 0)
66+
return "0 B";
67+
68+
final String[] units = {"B", "kB", "MB", "GB", "TB"};
69+
final int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
70+
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
71+
}
5572
}

app/src/main/java/com/simplemobiletools/filemanager/adapters/ItemsAdapter.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import com.simplemobiletools.filemanager.Utils;
1515
import com.simplemobiletools.filemanager.models.FileDirItem;
1616

17-
import java.text.DecimalFormat;
1817
import java.util.List;
1918

2019
import butterknife.BindView;
@@ -55,7 +54,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
5554
viewHolder.details.setText(getChildrenCnt(item));
5655
} else {
5756
viewHolder.icon.setImageBitmap(mFileBmp);
58-
viewHolder.details.setText(getFormattedSize(item));
57+
viewHolder.details.setText(Utils.getFormattedSize(item));
5958
}
6059

6160
return convertView;
@@ -66,15 +65,6 @@ private String getChildrenCnt(FileDirItem item) {
6665
return mRes.getQuantityString(R.plurals.items, children, children);
6766
}
6867

69-
private String getFormattedSize(FileDirItem item) {
70-
final long size = item.getSize();
71-
if (size <= 0)
72-
return "0 B";
73-
final String[] units = {"B", "kB", "MB", "GB", "TB"};
74-
final int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
75-
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
76-
}
77-
7868
@Override
7969
public int getCount() {
8070
return mItems.size();

app/src/main/java/com/simplemobiletools/filemanager/dialogs/PropertiesDialog.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
import android.support.v4.app.DialogFragment;
66
import android.support.v7.app.AlertDialog;
77
import android.view.View;
8+
import android.widget.TextView;
89

910
import com.simplemobiletools.filemanager.R;
11+
import com.simplemobiletools.filemanager.Utils;
1012
import com.simplemobiletools.filemanager.models.FileDirItem;
1113

14+
import java.io.File;
15+
1216
public class PropertiesDialog extends DialogFragment {
1317
private static FileDirItem mItem;
1418

@@ -25,12 +29,45 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
2529
if (mItem.getIsDirectory()) {
2630
infoView.findViewById(R.id.properties_files_count_label).setVisibility(View.VISIBLE);
2731
infoView.findViewById(R.id.properties_files_count).setVisibility(View.VISIBLE);
32+
((TextView) infoView.findViewById(R.id.properties_files_count)).setText(String.valueOf(mItem.getChildren()));
2833
}
34+
35+
((TextView) infoView.findViewById(R.id.properties_name)).setText(mItem.getName());
36+
((TextView) infoView.findViewById(R.id.properties_path)).setText(mItem.getPath());
37+
((TextView) infoView.findViewById(R.id.properties_size)).setText(getItemSize());
38+
39+
final File file = new File(mItem.getPath());
40+
((TextView) infoView.findViewById(R.id.properties_last_modified)).setText(String.valueOf(file.lastModified()));
41+
2942
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
3043
builder.setTitle(getResources().getString(title));
3144
builder.setView(infoView);
3245
builder.setPositiveButton(R.string.ok, null);
3346

3447
return builder.create();
3548
}
49+
50+
private String getItemSize() {
51+
if (mItem.getIsDirectory()) {
52+
return Utils.formatSize(directorySize(new File(mItem.getPath())));
53+
}
54+
55+
return Utils.getFormattedSize(mItem);
56+
}
57+
58+
private long directorySize(File dir) {
59+
if (dir.exists()) {
60+
long size = 0;
61+
File[] files = dir.listFiles();
62+
for (int i = 0; i < files.length; i++) {
63+
if (files[i].isDirectory()) {
64+
size += directorySize(files[i]);
65+
} else {
66+
size += files[i].length();
67+
}
68+
}
69+
return size;
70+
}
71+
return 0;
72+
}
3673
}

0 commit comments

Comments
 (0)