\r
import com.owncloud.android.R;\r
import com.owncloud.android.authentication.AccountUtils;\r
+import com.owncloud.android.datamodel.AlphanumComparator;\r
import com.owncloud.android.datamodel.FileDataStorageManager;\r
import com.owncloud.android.datamodel.OCFile;\r
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;\r
private void sortDirectory(){\r
switch (sort){\r
case NAME:\r
- sortByName();\r
+ sortByName(sortAscending);\r
break;\r
\r
case SIZE:\r
- sortBySize();\r
+ sortBySize(sortAscending);\r
break;\r
\r
case DATE:\r
- sortByDate();\r
+ sortByDate(sortAscending);\r
break;\r
}\r
\r
- if (!sortAscending){\r
- Collections.reverse(mFiles);\r
- }\r
-\r
notifyDataSetChanged();\r
}\r
\r
&& file.getPermissions() != null && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME));\r
}\r
\r
- private void sortByDate(){\r
+ private void sortByDate(boolean sortAscending){\r
+ final Integer val;\r
+ if (sortAscending){\r
+ val = 1;\r
+ } else {\r
+ val = -1;\r
+ }\r
+ \r
Collections.sort(mFiles, new Comparator<OCFile>() {\r
public int compare(OCFile o1, OCFile o2) {\r
if (o1.isFolder() && o2.isFolder()) {\r
- return Long.compare(o1.getModificationTimestamp(), o2.getModificationTimestamp());\r
+ return val * Long.compare(o1.getModificationTimestamp(), o2.getModificationTimestamp());\r
}\r
else if (o1.isFolder()) {\r
return -1;\r
} else if (o1.getModificationTimestamp() == 0 || o2.getModificationTimestamp() == 0){\r
return 0;\r
} else {\r
- return Long.compare(o1.getModificationTimestamp(), o2.getModificationTimestamp());\r
+ return val * Long.compare(o1.getModificationTimestamp(), o2.getModificationTimestamp());\r
}\r
}\r
});\r
}\r
\r
- private void sortBySize(){\r
+ private void sortBySize(boolean sortAscending){\r
+ final Integer val;\r
+ if (sortAscending){\r
+ val = 1;\r
+ } else {\r
+ val = -1;\r
+ }\r
+ \r
Collections.sort(mFiles, new Comparator<OCFile>() {\r
public int compare(OCFile o1, OCFile o2) {\r
if (o1.isFolder() && o2.isFolder()) {\r
} else if (o1.getFileLength() == 0 || o2.getFileLength() == 0){\r
return 0;\r
} else {\r
- return Long.compare(o1.getFileLength(), o2.getFileLength());\r
+ return val * Long.compare(o1.getFileLength(), o2.getFileLength());\r
}\r
}\r
});\r
}\r
\r
- private void sortByName(){\r
- Collections.sort(mFiles);\r
+ private void sortByName(boolean sortAscending){\r
+ final Integer val;\r
+ if (sortAscending){\r
+ val = 1;\r
+ } else {\r
+ val = -1;\r
+ }\r
+\r
+ Collections.sort(mFiles, new Comparator<OCFile>() {\r
+ public int compare(OCFile o1, OCFile o2) {\r
+ if (o1.isFolder() && o2.isFolder()) {\r
+ return val * o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase());\r
+ } else if (o1.isFolder()) {\r
+ return -1;\r
+ } else if (o2.isFolder()) {\r
+ return 1;\r
+ }\r
+ return val * new AlphanumComparator().compare(o1, o2);\r
+ }\r
+ });\r
}\r
\r
public void setSortOrder(sortOrders order, boolean descending) {\r