<string name="actionbar_sort">Sortieren</string>
<string name="actionbar_sort_title">Sortieren nach</string>
<string-array name="actionbar_sortby">
- <item>Dateiname - aufsteigend</item>
- <item>Dateiname - absteigend</item>
- <item>Datum - aufsteigend</item>
- <item>Datum - absteigend</item>
- <item>Dateigröße - aufsteigend</item>
- <item>Dateigröße - absteigend</item>
+ <item>A-Z</item>
+ <item>Neu - Alt</item>
+ <item>Groß - Klein</item>
</string-array>
<string name="prefs_category_general">Allgemein</string>
<string name="prefs_category_more">Mehr</string>
<string name="actionbar_sort">Sort</string>
<string name="actionbar_sort_title">Sort by</string>
<string-array name="actionbar_sortby">
- <item>Filename - A-Z</item>
- <item>Filename - Z-A</item>
- <item>Date - oldest first</item>
- <item>Date - newest first</item>
- <item>Filesize - smallest first</item>
- <item>Filesize - biggest first</item>
+ <item>A-Z</item>
+ <item>Newest - Oldest</item>
+ <item>Biggest - Smallest</item>
</string-array>
<string name="prefs_category_general">General</string>
<string name="prefs_category_more">More</string>
private String DIALOG_UNTRUSTED_CERT;
private OCFile mWaitingToSend;
+
+ private Integer sortItemChecked = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
case R.id.action_sort: {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.actionbar_sort_title)
- .setItems(R.array.actionbar_sortby, new DialogInterface.OnClickListener() {
+ .setSingleChoiceItems(R.array.actionbar_sortby, sortItemChecked , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
- Log_OC.d("default view", " number " + which + "clicked");
+ sortItemChecked = which;
+
switch (which){
case 0:
sortByName(true);
break;
case 1:
- sortByName(false);
- break;
- case 2:
- sortByDate(true);
- break;
- case 3:
sortByDate(false);
break;
- case 4:
- sortBySize(true);
- break;
- case 5:
+ case 2:
sortBySize(false);
break;
}
+
+ dialog.dismiss();
+
}
});
- builder.create();
- builder.show();
+ builder.create().show();
break;
}
default:
*/\r
package com.owncloud.android.ui.adapter;\r
\r
+import java.io.File;\r
import java.util.Collections;\r
import java.util.Comparator;\r
import java.util.Vector;\r
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;\r
import com.owncloud.android.ui.activity.ComponentsGetter;\r
import com.owncloud.android.utils.DisplayUtils;\r
+import com.owncloud.android.utils.FileStorageUtils;\r
+import com.owncloud.android.utils.Log_OC;\r
\r
\r
/**\r
}\r
} \r
else {\r
+ if (FileStorageUtils.getDefaultSavePathFor(mAccount.name, file) != null){\r
+ fileSizeV.setVisibility(View.VISIBLE);\r
+ fileSizeV.setText(getFolderSizeHuman(FileStorageUtils.getDefaultSavePathFor(mAccount.name, file)));\r
+ } else {\r
+ fileSizeV.setVisibility(View.INVISIBLE);\r
+ }\r
\r
- fileSizeV.setVisibility(View.INVISIBLE);\r
- //fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
lastModV.setVisibility(View.VISIBLE);\r
lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));\r
checkBoxV.setVisibility(View.GONE);\r
\r
return view;\r
}\r
+ \r
+ /**\r
+ * Local Folder size in human readable format\r
+ * @param path String\r
+ * @return Size in human readable format\r
+ */\r
+ private String getFolderSizeHuman(String path) {\r
+\r
+ File dir = new File(path);\r
+\r
+ if(dir.exists()) {\r
+ long bytes = getFolderSize(dir);\r
+ if (bytes < 1024) return bytes + " B";\r
+ int exp = (int) (Math.log(bytes) / Math.log(1024));\r
+ String pre = ("KMGTPE").charAt(exp-1) + "";\r
+\r
+ return String.format("%.1f %sB", bytes / Math.pow(1024, exp), pre);\r
+ }\r
+\r
+ return "0 B";\r
+ }\r
+\r
+ /**\r
+ * Local Folder size\r
+ * @param dir File\r
+ * @return Size in bytes\r
+ */\r
+ private long getFolderSize(File dir) {\r
+ if (dir.exists()) {\r
+ long result = 0;\r
+ File[] fileList = dir.listFiles();\r
+ for(int i = 0; i < fileList.length; i++) {\r
+ if(fileList[i].isDirectory()) {\r
+ result += getFolderSize(fileList[i]);\r
+ } else {\r
+ result += fileList[i].length();\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+ return 0;\r
+ } \r
\r
@Override\r
public int getViewTypeCount() {\r
&& file.getPermissions() != null && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME));\r
}\r
\r
+ /**\r
+ * Sorts list by Date\r
+ * @param sortAscending true: ascending, false: descending\r
+ */\r
private void sortByDate(boolean sortAscending){\r
final Integer val;\r
if (sortAscending){\r
});\r
}\r
\r
+ /**\r
+ * Sorts list by Size\r
+ * @param sortAscending true: ascending, false: descending\r
+ */\r
private void sortBySize(boolean sortAscending){\r
final Integer val;\r
if (sortAscending){\r
Collections.sort(mFiles, new Comparator<OCFile>() {\r
public int compare(OCFile o1, OCFile o2) {\r
if (o1.isFolder() && o2.isFolder()) {\r
- return o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase());\r
+ return val * Long.compare(getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o1))), \r
+ getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o2))));\r
}\r
else if (o1.isFolder()) {\r
return -1;\r
});\r
}\r
\r
+ /**\r
+ * Sorts list by Name\r
+ * @param sortAscending true: ascending, false: descending\r
+ */\r
private void sortByName(boolean sortAscending){\r
final Integer val;\r
if (sortAscending){\r