aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaj Yengisetty <raj@cyngn.com>2015-01-13 11:21:26 +0800
committerRaj Yengisetty <raj@cyngn.com>2015-01-13 11:23:22 +0800
commitac0280f38dd80eccf765c6bbb082cf12d3258258 (patch)
tree0edd6b8771c8d35272c5c5967d5ff61c50434181
parent010d820abf12f6ec89741a6e4d7692e79ab569e7 (diff)
downloadandroid_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.xml2
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/com/cyanogenmod/filemanager/preferences/NavigationSortMode.java10
-rw-r--r--src/com/cyanogenmod/filemanager/util/FileHelper.java11
-rw-r--r--src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java16
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