aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryAdapter.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryAdapter.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryAdapter.java
new file mode 100644
index 000000000..93a24ab2f
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryAdapter.java
@@ -0,0 +1,140 @@
+package org.wordpress.android.ui.media;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.volley.toolbox.ImageLoader;
+import com.android.volley.toolbox.NetworkImageView;
+import com.mobeta.android.dslv.ResourceDragSortCursorAdapter;
+
+import org.wordpress.android.R;
+import org.wordpress.android.WordPress;
+import org.wordpress.android.WordPressDB;
+import org.wordpress.android.util.MediaUtils;
+import org.wordpress.android.util.StringUtils;
+
+/**
+ * Adapter for a drag-sort listview where the user can drag media items to sort their order
+ * for a media gallery
+ */
+class MediaGalleryAdapter extends ResourceDragSortCursorAdapter {
+ private ImageLoader mImageLoader;
+
+ public MediaGalleryAdapter(Context context, int layout, Cursor c, boolean autoRequery, ImageLoader imageLoader) {
+ super(context, layout, c, autoRequery);
+ setImageLoader(imageLoader);
+ }
+
+ void setImageLoader(ImageLoader imageLoader) {
+ if (imageLoader != null) {
+ mImageLoader = imageLoader;
+ } else {
+ mImageLoader = WordPress.imageLoader;
+ }
+ }
+
+ private static class GridViewHolder {
+ private final TextView filenameView;
+ private final TextView titleView;
+ private final TextView uploadDateView;
+ private final ImageView imageView;
+ private final TextView fileTypeView;
+ private final TextView dimensionView;
+
+ GridViewHolder(View view) {
+ filenameView = (TextView) view.findViewById(R.id.media_grid_item_filename);
+ titleView = (TextView) view.findViewById(R.id.media_grid_item_name);
+ uploadDateView = (TextView) view.findViewById(R.id.media_grid_item_upload_date);
+ imageView = (ImageView) view.findViewById(R.id.media_grid_item_image);
+ fileTypeView = (TextView) view.findViewById(R.id.media_grid_item_filetype);
+ dimensionView = (TextView) view.findViewById(R.id.media_grid_item_dimension);
+ }
+ }
+ @Override
+ public void bindView(View view, Context context, Cursor cursor) {
+ final GridViewHolder holder;
+ if (view.getTag() instanceof GridViewHolder) {
+ holder = (GridViewHolder) view.getTag();
+ } else {
+ holder = new GridViewHolder(view);
+ view.setTag(holder);
+ }
+
+ String state = cursor.getString(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_UPLOAD_STATE));
+ boolean isLocalFile = MediaUtils.isLocalFile(state);
+
+ // file name
+ String fileName = cursor.getString(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_FILE_NAME));
+ if (holder.filenameView != null) {
+ holder.filenameView.setText(String.format(context.getString(R.string.media_file_name), fileName));
+ }
+
+ // title of media
+ String title = cursor.getString(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_TITLE));
+ if (title == null || title.equals(""))
+ title = fileName;
+ holder.titleView.setText(title);
+
+ // upload date
+ if (holder.uploadDateView != null) {
+ String date = MediaUtils.getDate(cursor.getLong(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_DATE_CREATED_GMT)));
+ holder.uploadDateView.setText(String.format(context.getString(R.string.media_uploaded_on), date));
+ }
+
+ // load image
+ if (isLocalFile) {
+ // should not be local file
+ } else {
+ loadNetworkImage(cursor, (NetworkImageView) holder.imageView);
+ }
+
+ // get the file extension from the fileURL
+ String filePath = StringUtils.notNullStr(cursor.getString(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_FILE_PATH)));
+ if (filePath.isEmpty())
+ filePath = StringUtils.notNullStr(cursor.getString(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_FILE_URL)));
+
+ // file type
+ String fileExtension = filePath.replaceAll(".*\\.(\\w+)$", "$1").toUpperCase();
+ if (holder.fileTypeView != null) {
+ holder.fileTypeView.setText(String.format(context.getString(R.string.media_file_type), fileExtension));
+ }
+
+ // dimensions
+ if (holder.dimensionView != null) {
+ if( MediaUtils.isValidImage(filePath)) {
+ int width = cursor.getInt(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_WIDTH));
+ int height = cursor.getInt(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_HEIGHT));
+
+ if (width > 0 && height > 0) {
+ String dimensions = width + "x" + height;
+ holder.dimensionView.setText(String.format(context.getString(R.string.media_dimensions),
+ dimensions));
+ holder.dimensionView.setVisibility(View.VISIBLE);
+ }
+ } else {
+ holder.dimensionView.setVisibility(View.GONE);
+ }
+ }
+
+ }
+
+ private void loadNetworkImage(Cursor cursor, NetworkImageView imageView) {
+ String thumbnailURL = cursor.getString(cursor.getColumnIndex(WordPressDB.COLUMN_NAME_THUMBNAIL_URL));
+ if (thumbnailURL == null) {
+ imageView.setImageUrl(null, null);
+ return;
+ }
+
+ Uri uri = Uri.parse(thumbnailURL);
+ if (uri != null && MediaUtils.isValidImage(uri.getLastPathSegment())) {
+ imageView.setTag(thumbnailURL);
+ imageView.setImageUrl(thumbnailURL, mImageLoader);
+ } else {
+ imageView.setImageUrl(null, null);
+ }
+ }
+}