*/\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
\r
+ import third_parties.daveKoeller.AlphanumComparator;\r
import android.accounts.Account;\r
import android.content.Context;\r
++<<<<<<< HEAD
+import android.graphics.Bitmap;\r
+import android.graphics.BitmapFactory;\r
+import android.media.ThumbnailUtils;\r
++=======
+ import android.content.SharedPreferences;\r
+ import android.graphics.Bitmap;\r
+ import android.preference.PreferenceManager;\r
++>>>>>>> upstream/develop
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.view.ViewGroup;\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
++<<<<<<< HEAD
+import com.owncloud.android.utils.Log_OC;\r
+\r
++=======
+ import com.owncloud.android.utils.FileStorageUtils;\r
+
++>>>>>>> upstream/develop
\r
/**\r
* This Adapter populates a ListView with all files and folders in an ownCloud\r
private FileDataStorageManager mStorageManager;
private Account mAccount;
private ComponentsGetter mTransferServiceGetter;\r
++<<<<<<< HEAD
+ private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM };\r
++=======
+ private Integer mSortOrder;\r
+ public static final Integer SORT_NAME = 0;\r
+ public static final Integer SORT_DATE = 1;\r
+ public static final Integer SORT_SIZE = 2;\r
+ private Boolean mSortAscending;\r
+ private SharedPreferences mAppPreferences;\r
++>>>>>>> upstream/develop
\r
public FileListListAdapter(\r
boolean justFolders, \r
\r
@Override\r
public View getView(int position, View convertView, ViewGroup parent) {\r
+ // decide image vs. file view\r
+ double count = 0;\r
+ \r
+ \r
+ for (OCFile file : mFiles){\r
+ if (file.isImage()){\r
+ count++;\r
+ }\r
+ }\r
+ \r
+ // TODO threshold as constant in Preferences\r
+ // > 50% Images --> image view\r
+ boolean fileView = true;\r
+ if ((count / mFiles.size()) >= 0.5){\r
+ fileView = false;\r
+ } else {\r
+ fileView = true;\r
+ }\r
+ \r
View view = convertView;\r
- if (view == null) {\r
- LayoutInflater inflator = (LayoutInflater) mContext\r
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
+ OCFile file = null;\r
+ LayoutInflater inflator = (LayoutInflater) mContext\r
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
+ \r
+ if (mFiles != null && mFiles.size() > position) {\r
+ file = mFiles.get(position);\r
+ }\r
+ \r
+ // Find out which layout should be displayed\r
+ ViewType viewType;\r
+ if (fileView){\r
+ viewType = ViewType.LIST_ITEM;\r
+ } else if (file.isImage()){\r
+ viewType = ViewType.GRID_IMAGE;\r
+ } else {\r
+ viewType = ViewType.GRID_ITEM;\r
+ }\r
+\r
+ // Create View\r
+ switch (viewType){\r
+ case GRID_IMAGE:\r
+ view = inflator.inflate(R.layout.grid_image, null);\r
+ break;\r
+ case GRID_ITEM:\r
+ view = inflator.inflate(R.layout.grid_item, null);\r
+ break;\r
+ case LIST_ITEM:\r
view = inflator.inflate(R.layout.list_item, null);\r
+ break;\r
}\r
++<<<<<<< HEAD
+\r
+ view.invalidate();\r
+\r
+ if (file != null){\r
+\r
+ ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);\r
+ TextView fileName;\r
+ String name;\r
++=======
+ \r
+ if (mFiles != null && mFiles.size() > position) {\r
+ OCFile file = mFiles.get(position);\r
+ TextView fileName = (TextView) view.findViewById(R.id.Filename); \r
+ String name = file.getFileName();\r
+ \r
+ fileName.setText(name);\r
+ ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1);\r
+ fileIcon.setTag(file.getFileId());\r
+ ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
+ ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
+ sharedWithMeIconV.setVisibility(View.GONE);\r
+ \r
+ ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2);\r
+ localStateView.bringToFront();\r
+ FileDownloaderBinder downloaderBinder = \r
+ mTransferServiceGetter.getFileDownloaderBinder();\r
+ FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
+ if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) {\r
+ localStateView.setImageResource(R.drawable.downloading_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) {\r
+ localStateView.setImageResource(R.drawable.uploading_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else if (file.isDown()) {\r
+ localStateView.setImageResource(R.drawable.local_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else {\r
+ localStateView.setVisibility(View.INVISIBLE);\r
+ }\r
+ \r
+ TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
+ TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
+ ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
++>>>>>>> upstream/develop
\r
- if (!file.isFolder()) {\r
+ switch (viewType){\r
+ case LIST_ITEM:\r
+ fileName = (TextView) view.findViewById(R.id.Filename);\r
+ name = file.getFileName();\r
+ fileName.setText(name);\r
+ \r
+ TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
+ TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
+ ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
+ \r
+ lastModV.setVisibility(View.VISIBLE);\r
++<<<<<<< HEAD
+ lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));\r
+ \r
+ checkBoxV.setVisibility(View.GONE);\r
+ \r
fileSizeV.setVisibility(View.VISIBLE);\r
fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
- lastModV.setVisibility(View.VISIBLE);\r
+ \r
+ ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
+ \r
+\r
+ if (file.isShareByLink()) {\r
+ sharedIconV.setVisibility(View.VISIBLE);\r
++=======
+ lastModV.setText(\r
+ DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())\r
+ );\r
+ // this if-else is needed even thoe fav icon is visible by default\r
+ // because android reuses views in listview\r
+ if (!file.keepInSync()) {\r
+ view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
++>>>>>>> upstream/develop
} else {\r
- view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE);\r
+ sharedIconV.setVisibility(View.GONE);\r
}\r
\r
- ListView parentList = (ListView)parent;\r
- if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { \r
- checkBoxV.setVisibility(View.GONE);\r
- } else {\r
- if (parentList.isItemChecked(position)) {\r
- checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);\r
+ ImageView localStateView = (ImageView) view.findViewById(R.id.localFileIndicator);\r
+ \r
+ if (!file.isFolder()) {\r
+ GridView parentList = (GridView)parent;\r
+ if (parentList.getChoiceMode() == GridView.CHOICE_MODE_NONE) { \r
+ checkBoxV.setVisibility(View.GONE);\r
+ } else {\r
+ if (parentList.isItemChecked(position)) {\r
+ checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);\r
+ } else {\r
+ checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);\r
+ }\r
+ checkBoxV.setVisibility(View.VISIBLE);\r
+ }\r
++<<<<<<< HEAD
+ \r
+ localStateView.bringToFront();\r
+ FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
+ FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
+ if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) {\r
+ localStateView.setImageResource(R.drawable.downloading_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) {\r
+ localStateView.setImageResource(R.drawable.uploading_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else if (file.isDown()) {\r
+ localStateView.setImageResource(R.drawable.local_file_indicator);\r
+ localStateView.setVisibility(View.VISIBLE);\r
+ } else {\r
+ localStateView.setVisibility(View.INVISIBLE);\r
+ }\r
+ \r
+ ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
+ if (checkIfFileIsSharedWithMe(file)) {\r
+ sharedWithMeIconV.setVisibility(View.VISIBLE);\r
} else {\r
- checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);\r
+ sharedWithMeIconV.setVisibility(View.GONE);\r
}\r
+ } else {\r
+ localStateView.setVisibility(View.INVISIBLE);\r
+ }\r
+ break;\r
+ case GRID_ITEM:\r
+ fileName = (TextView) view.findViewById(R.id.Filename);\r
+ name = file.getFileName();\r
+ fileName.setText(name);\r
+ break;\r
+ case GRID_IMAGE:\r
+ break;\r
+ }\r
+ \r
+ // For all Views\r
+ \r
+ // this if-else is needed even though favorite icon is visible by default\r
+ // because android reuses views in listview\r
+ if (!file.keepInSync()) {\r
+ view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE);\r
+ } else {\r
+ view.findViewById(R.id.favoriteIcon).setVisibility(View.VISIBLE);\r
+ }\r
+ \r
+ // No Folder\r
+ if (!file.isFolder()) {\r
+ if (file.isImage() && file.isDown()){\r
+ Bitmap bitmap = BitmapFactory.decodeFile(file.getStoragePath());\r
+ fileIcon.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap, 200, 200));\r
+ } else {\r
+ fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
+ }\r
+ } else {\r
+ // Folder\r
++=======
+ checkBoxV.setVisibility(View.VISIBLE);\r
+ } \r
+ \r
+ // get Thumbnail if file is image\r
+ if (file.isImage() && file.getRemoteId() != null){\r
+ // Thumbnail in Cache?\r
+ Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(\r
+ String.valueOf(file.getRemoteId())\r
+ );\r
+ if (thumbnail != null && !file.needsUpdateThumbnail()){\r
+ fileIcon.setImageBitmap(thumbnail);\r
+ } else {\r
+ // generate new Thumbnail\r
+ if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {\r
+ final ThumbnailsCacheManager.ThumbnailGenerationTask task = \r
+ new ThumbnailsCacheManager.ThumbnailGenerationTask(\r
+ fileIcon, mStorageManager, mAccount\r
+ );\r
+ if (thumbnail == null) {\r
+ thumbnail = ThumbnailsCacheManager.mDefaultImg;\r
+ }\r
+ final AsyncDrawable asyncDrawable = new AsyncDrawable(\r
+ mContext.getResources(), \r
+ thumbnail, \r
+ task\r
+ );\r
+ fileIcon.setImageDrawable(asyncDrawable);\r
+ task.execute(file);\r
+ }\r
+ }\r
+ } else {\r
+ fileIcon.setImageResource(\r
+ DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())\r
+ );\r
+ }\r
+
+ if (checkIfFileIsSharedWithMe(file)) {\r
+ sharedWithMeIconV.setVisibility(View.VISIBLE);\r
+ }\r
+ } \r
+ else {\r
+ // TODO Re-enable when server supports folder-size calculation\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
+
+ lastModV.setVisibility(View.VISIBLE);\r
+ lastModV.setText(\r
+ DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())\r
+ );\r
+ checkBoxV.setVisibility(View.GONE);\r
+ view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
+ \r
++>>>>>>> upstream/develop
if (checkIfFileIsSharedWithMe(file)) {\r
fileIcon.setImageResource(R.drawable.shared_with_me_folder);\r
- sharedWithMeIconV.setVisibility(View.VISIBLE);\r
+ } else if (file.isShareByLink()) {\r
+ // If folder is sharedByLink, icon folder must be changed to\r
+ // folder-public one\r
+ fileIcon.setImageResource(R.drawable.folder_public);\r
} else {\r
- fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
+ fileIcon.setImageResource(\r
+ DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())\r
+ );\r
}\r
-\r
- // If folder is sharedByLink, icon folder must be changed to\r
- // folder-public one\r
- if (file.isShareByLink()) {\r
- fileIcon.setImageResource(R.drawable.folder_public);\r
- }\r
- }\r
-\r
- if (file.isShareByLink()) {\r
- sharedIconV.setVisibility(View.VISIBLE);\r
- } else {\r
- sharedIconV.setVisibility(View.GONE);\r
- }\r
+ } \r
}\r
\r
return view;\r