diff options
author | Raj Yengisetty <raj@cyngn.com> | 2015-01-13 11:21:26 +0800 |
---|---|---|
committer | Raj Yengisetty <raj@cyngn.com> | 2015-01-13 11:23:22 +0800 |
commit | ac0280f38dd80eccf765c6bbb082cf12d3258258 (patch) | |
tree | 0edd6b8771c8d35272c5c5967d5ff61c50434181 | |
parent | 010d820abf12f6ec89741a6e4d7692e79ab569e7 (diff) | |
download | android_packages_apps_CMFileManager-ac0280f38dd80eccf765c6bbb082cf12d3258258.tar.gz android_packages_apps_CMFileManager-ac0280f38dd80eccf765c6bbb082cf12d3258258.tar.bz2 android_packages_apps_CMFileManager-ac0280f38dd80eccf765c6bbb082cf12d3258258.zip |
CMFileManager: Include sort by type
Change-Id: I44730f6493ee79bbcff49045568d14192544839b
-rw-r--r-- | res/values/arrays.xml | 2 | ||||
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | src/com/cyanogenmod/filemanager/preferences/NavigationSortMode.java | 10 | ||||
-rw-r--r-- | src/com/cyanogenmod/filemanager/util/FileHelper.java | 11 | ||||
-rw-r--r-- | src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java | 16 |
5 files changed, 42 insertions, 1 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 0a0f2591..997eb5c5 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -23,6 +23,8 @@ <item>@string/sort_by_date_desc</item> <item>@string/sort_by_size_asc</item> <item>@string/sort_by_size_desc</item> + <item>@string/sort_by_type_asc</item> + <item>@string/sort_by_type_desc</item> </string-array> <!-- The strings of the menu for navigation layout mode enumeration --> diff --git a/res/values/strings.xml b/res/values/strings.xml index c1f79f91..2684aae6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -184,6 +184,10 @@ <string name="sort_by_size_asc">By size \u25B2</string> <!-- Navigation View - Sort - Sort by size (descending) --> <string name="sort_by_size_desc">By size \u25BC</string> + <!-- Navigation View - Sort - Sort by type (ascending) --> + <string name="sort_by_type_asc">By type \u25B2</string> + <!-- Navigation View - Sort - Sort by type (descending) --> + <string name="sort_by_type_desc">By type \u25BC</string> <!-- Navigation View - Layout - Icons --> <string name="layout_icons">Icons</string> diff --git a/src/com/cyanogenmod/filemanager/preferences/NavigationSortMode.java b/src/com/cyanogenmod/filemanager/preferences/NavigationSortMode.java index 317ae59f..c5771373 100644 --- a/src/com/cyanogenmod/filemanager/preferences/NavigationSortMode.java +++ b/src/com/cyanogenmod/filemanager/preferences/NavigationSortMode.java @@ -44,7 +44,15 @@ public enum NavigationSortMode implements ObjectIdentifier { /** * That mode sorts objects by size (descending). */ - SIZE_DESC(5); + SIZE_DESC(5), + /** + * That mode sorts objects by type (ascending). + */ + TYPE_ASC(6), + /** + * That mode sorts objects by type (descending). + */ + TYPE_DESC(7); private int mId; diff --git a/src/com/cyanogenmod/filemanager/util/FileHelper.java b/src/com/cyanogenmod/filemanager/util/FileHelper.java index 339fa8e9..3efa9ee4 100644 --- a/src/com/cyanogenmod/filemanager/util/FileHelper.java +++ b/src/com/cyanogenmod/filemanager/util/FileHelper.java @@ -785,6 +785,17 @@ public final class FileHelper { return Long.compare(fso1.getSize(), fso2.getSize()) * -1; } + //Type (ascending) + if (mode.getId() == NavigationSortMode.TYPE_ASC.getId()) { + // Shouldn't need context here, mimetypes should be loaded + return MimeTypeHelper.compareFSO(null, fso1, fso2); + } + //Type (descending) + if (mode.getId() == NavigationSortMode.TYPE_DESC.getId()) { + // Shouldn't need context here, mimetypes should be loaded + return MimeTypeHelper.compareFSO(null, fso1, fso2) * -1; + } + //Comparison between files directly return fso1.compareTo(fso2); } diff --git a/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java b/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java index ebcdcadb..34563db1 100644 --- a/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java +++ b/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java @@ -337,6 +337,22 @@ public final class MimeTypeHelper { } /** + * Method that compares {@link FileSystemObject} by MimeTypeCategory + * + * @param context The current context + * @param fso1 File system object 1 + * @param fso2 File system object 2 + * @return int Either -1, 0, 1 based on if fso1 appears before or after fso2 + */ + public static final int compareFSO(Context context, FileSystemObject fso1, + FileSystemObject fso2) { + MimeTypeCategory mtc1 = getCategory(context, fso1); + MimeTypeCategory mtc2 = getCategory(context, fso2); + + return mtc1.compareTo(mtc2); + } + + /** * Method that returns the mime/type description of the {@link FileSystemObject}. * * @param context The current context |