diff --git a/app/src/main/java/com/simplemobiletools/filemanager/Utils.java b/app/src/main/java/com/simplemobiletools/filemanager/Utils.java index 0f5d7c69..4a628345 100644 --- a/app/src/main/java/com/simplemobiletools/filemanager/Utils.java +++ b/app/src/main/java/com/simplemobiletools/filemanager/Utils.java @@ -34,12 +34,13 @@ public class Utils { return ContextCompat.checkSelfPermission(cxt, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; } - public static Bitmap getColoredIcon(Resources res, int newColor, int id) { + public static Bitmap getColoredIcon(Resources res, int colorId, int id) { + final int color = res.getColor(colorId); final BitmapFactory.Options options = new BitmapFactory.Options(); options.inMutable = true; final Bitmap bmp = BitmapFactory.decodeResource(res, id, options); final Paint paint = new Paint(); - final ColorFilter filter = new PorterDuffColorFilter(newColor, PorterDuff.Mode.SRC_IN); + final ColorFilter filter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN); paint.setColorFilter(filter); final Canvas canvas = new Canvas(bmp); canvas.drawBitmap(bmp, 0, 0, paint); diff --git a/app/src/main/java/com/simplemobiletools/filemanager/adapters/ItemsAdapter.java b/app/src/main/java/com/simplemobiletools/filemanager/adapters/ItemsAdapter.java index 00bd44fd..cfd30408 100644 --- a/app/src/main/java/com/simplemobiletools/filemanager/adapters/ItemsAdapter.java +++ b/app/src/main/java/com/simplemobiletools/filemanager/adapters/ItemsAdapter.java @@ -14,6 +14,7 @@ import com.simplemobiletools.filemanager.R; import com.simplemobiletools.filemanager.Utils; import com.simplemobiletools.filemanager.models.FileDirItem; +import java.text.DecimalFormat; import java.util.List; import butterknife.BindView; @@ -24,14 +25,15 @@ public class ItemsAdapter extends BaseAdapter { private final LayoutInflater mInflater; private final Bitmap mFileBmp; private final Bitmap mDirectoryBmp; + private final Resources mRes; public ItemsAdapter(Context context, List items) { mItems = items; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - final Resources res = context.getResources(); - mDirectoryBmp = Utils.getColoredIcon(res, res.getColor(R.color.lightGrey), R.mipmap.directory); - mFileBmp = Utils.getColoredIcon(res, res.getColor(R.color.lightGrey), R.mipmap.file); + mRes = context.getResources(); + mDirectoryBmp = Utils.getColoredIcon(mRes, R.color.lightGrey, R.mipmap.directory); + mFileBmp = Utils.getColoredIcon(mRes, R.color.lightGrey, R.mipmap.file); } @Override @@ -50,13 +52,29 @@ public class ItemsAdapter extends BaseAdapter { if (item.getIsDirectory()) { viewHolder.icon.setImageBitmap(mDirectoryBmp); + viewHolder.details.setText(getChildrenCnt(item)); } else { viewHolder.icon.setImageBitmap(mFileBmp); + viewHolder.details.setText(getFormattedSize(item)); } return convertView; } + private String getChildrenCnt(FileDirItem item) { + final int children = item.getChildren(); + return mRes.getQuantityString(R.plurals.items, children, children); + } + + private String getFormattedSize(FileDirItem item) { + final long size = item.getSize(); + if (size <= 0) + return "0"; + final String[] units = {"B", "kB", "MB", "GB", "TB"}; + final int digitGroups = (int) (Math.log10(size) / Math.log10(1024)); + return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups]; + } + @Override public int getCount() { return mItems.size(); @@ -75,6 +93,7 @@ public class ItemsAdapter extends BaseAdapter { static class ViewHolder { @BindView(R.id.item_name) TextView name; @BindView(R.id.item_icon) ImageView icon; + @BindView(R.id.item_details) TextView details; public ViewHolder(View view) { ButterKnife.bind(this, view); diff --git a/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java b/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java index 87557c00..208ff956 100644 --- a/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java +++ b/app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java @@ -126,11 +126,18 @@ public class ItemsFragment extends android.support.v4.app.Fragment if (mToBeDeleted.contains(curPath)) continue; - items.add(new FileDirItem(curPath, curName, file.isDirectory())); + int children = getChildren(file); + long size = file.length(); + + items.add(new FileDirItem(curPath, curName, file.isDirectory(), children, size)); } return items; } + private int getChildren(File file) { + return (file.isDirectory()) ? file.listFiles().length : 0; + } + @Override public void onItemClick(AdapterView parent, View view, int position, long id) { final FileDirItem item = mItems.get(position); diff --git a/app/src/main/java/com/simplemobiletools/filemanager/models/FileDirItem.java b/app/src/main/java/com/simplemobiletools/filemanager/models/FileDirItem.java index ae7787ce..4fa343c7 100644 --- a/app/src/main/java/com/simplemobiletools/filemanager/models/FileDirItem.java +++ b/app/src/main/java/com/simplemobiletools/filemanager/models/FileDirItem.java @@ -4,11 +4,15 @@ public class FileDirItem implements Comparable { private final String mPath; private final String mName; private final boolean mIsDirectory; + private final int mChildren; + private final long mSize; - public FileDirItem(String path, String name, boolean isDirectory) { + public FileDirItem(String path, String name, boolean isDirectory, int children, long size) { mPath = path; mName = name; mIsDirectory = isDirectory; + mChildren = children; + mSize = size; } public String getPath() { @@ -23,6 +27,14 @@ public class FileDirItem implements Comparable { return mIsDirectory; } + public int getChildren() { + return mChildren; + } + + public long getSize() { + return mSize; + } + @Override public int compareTo(Object object) { final FileDirItem item = (FileDirItem) object; @@ -40,6 +52,8 @@ public class FileDirItem implements Comparable { return "FileDirItem{" + "name=" + getName() + ", isDirectory=" + getIsDirectory() + - ", path=" + getPath() + "}"; + ", path=" + getPath() + + ", children=" + getChildren() + + ", size=" + getSize() +"}"; } } diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml index 9c29b86b..a89392a7 100644 --- a/app/src/main/res/layout/list_item.xml +++ b/app/src/main/res/layout/list_item.xml @@ -18,12 +18,22 @@ + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 68099771..145a36a3 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,4 +7,5 @@ #33000000 #08000000 #11000000 + #33000000 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7abf40ca..74ed1648 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,10 +1,12 @@ 16dp + 6dp 10dp 48dp 8dp 40dp 8dp + 12sp 14sp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 317ed33e..68c09481 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,6 +19,11 @@ %1$d items deleted + + 1 item + %1$d items + + About More simple apps and source code at:\nhttp://simplemobiletools.com