diff options
Diffstat (limited to 'src/com/android/messaging/ui')
3 files changed, 69 insertions, 26 deletions
diff --git a/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java b/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java index 1e52dc4..d6de128 100644 --- a/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java +++ b/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java @@ -30,7 +30,7 @@ import com.android.messaging.util.ImageUtils; import com.android.messaging.util.SafeAsyncTask; /** - * Wraps around the functionalities to allow the user to pick an image/video from the document + * Wraps around the functionalities to allow the user to pick an image/video/audio from the document * picker. Instances of this class must be tied to a Fragment which is able to delegate activity * result callbacks. */ diff --git a/src/com/android/messaging/ui/mediapicker/GalleryGridItemView.java b/src/com/android/messaging/ui/mediapicker/GalleryGridItemView.java index 4337d5e..48eaa5d 100644 --- a/src/com/android/messaging/ui/mediapicker/GalleryGridItemView.java +++ b/src/com/android/messaging/ui/mediapicker/GalleryGridItemView.java @@ -17,6 +17,7 @@ package com.android.messaging.ui.mediapicker; import android.content.Context; import android.database.Cursor; +import android.graphics.PorterDuff; import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; @@ -25,6 +26,9 @@ import android.view.View; import android.widget.CheckBox; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; import com.android.messaging.R; import com.android.messaging.datamodel.DataModel; @@ -54,6 +58,11 @@ public class GalleryGridItemView extends FrameLayout { GalleryGridItemData mData; private AsyncImageView mImageView; private CheckBox mCheckBox; + private RelativeLayout mAdditionalInfo; + private ImageView mIcon; + private LinearLayout mFileInfo; + private TextView mFileName; + private TextView mFileType; private HostInterface mHostInterface; private final OnClickListener mOnClickListener = new OnClickListener() { @Override @@ -70,9 +79,14 @@ public class GalleryGridItemView extends FrameLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); - mImageView = (AsyncImageView) findViewById(R.id.image); + mImageView = (AsyncImageView) findViewById(R.id.thumbnail); mCheckBox = (CheckBox) findViewById(R.id.checkbox); mCheckBox.setOnClickListener(mOnClickListener); + mAdditionalInfo = (RelativeLayout) findViewById(R.id.additional_info); + mIcon = (ImageView) findViewById(R.id.icon); + mFileInfo = (LinearLayout) findViewById(R.id.file_info); + mFileName = (TextView) findViewById(R.id.file_name); + mFileType = (TextView) findViewById(R.id.file_type); setOnClickListener(mOnClickListener); final OnLongClickListener longClickListener = new OnLongClickListener() { @Override @@ -136,32 +150,59 @@ public class GalleryGridItemView extends FrameLayout { } private void updateImageView() { - ImageView playButton = (ImageView) findViewById(R.id.video_thumbnail_play_button); if (mData.isDocumentPickerItem()) { - mImageView.setScaleType(ImageView.ScaleType.CENTER); setBackgroundColor(ConversationDrawables.get().getConversationThemeColor()); - mImageView.setImageResourceId(null); - mImageView.setImageResource(R.drawable.ic_photo_library_light); - playButton.setVisibility(GONE); - mImageView.setContentDescription(getResources().getString( - R.string.pick_image_from_document_library_content_description)); + mIcon.setImageResource(R.drawable.ic_photo_library_light); + mIcon.clearColorFilter(); + mImageView.setVisibility(GONE); + mIcon.setVisibility(VISIBLE); + mFileInfo.setVisibility(GONE); + mAdditionalInfo.setVisibility(VISIBLE); } else { - mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); - setBackgroundColor(getResources().getColor(R.color.gallery_image_default_background)); - mImageView.setImageResourceId(mData.getImageRequestDescriptor()); - if (ContentType.isVideoType(mData.getContentType())) { - playButton.setVisibility(VISIBLE); - } else { - playButton.setVisibility(GONE); + final String contentType = mData.getContentType(); + if (ContentType.isAudioType(contentType)) { + final Context context = getContext(); + setBackgroundColor( + getResources().getColor(R.color.gallery_image_default_background)); + mIcon.setImageDrawable( + context.getContentResolver() + .getTypeInfo(contentType) + .getIcon() + .loadDrawable(context)); + mIcon.setColorFilter( + ConversationDrawables.get().getConversationThemeColor(), + PorterDuff.Mode.SRC_IN); + mFileName.setText(mData.getFileName()); + String[] type = contentType.split("/"); + mFileType.setText(type[1].toUpperCase() + " " + type[0]); + mImageView.setVisibility(GONE); + mIcon.setVisibility(VISIBLE); + mFileInfo.setVisibility(VISIBLE); + mAdditionalInfo.setVisibility(VISIBLE); + } else { // For image and video types + mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); + setBackgroundColor( + getResources().getColor(R.color.gallery_image_default_background)); + mImageView.setImageResourceId(mData.getImageRequestDescriptor()); + mImageView.setVisibility(VISIBLE); + if (ContentType.isVideoType(mData.getContentType())) { + mIcon.setImageResource(R.drawable.ic_video_play_light); + mIcon.clearColorFilter(); + mIcon.setVisibility(VISIBLE); + } else { + mIcon.setVisibility(GONE); + } + mFileInfo.setVisibility(GONE); + mAdditionalInfo.setVisibility(VISIBLE); + final long dateSeconds = mData.getDateSeconds(); + final boolean isValidDate = (dateSeconds > 0); + final int templateId = isValidDate ? + R.string.mediapicker_gallery_image_item_description : + R.string.mediapicker_gallery_image_item_description_no_date; + String contentDescription = String.format(getResources().getString(templateId), + dateSeconds * TimeUnit.SECONDS.toMillis(1)); + mImageView.setContentDescription(contentDescription); } - final long dateSeconds = mData.getDateSeconds(); - final boolean isValidDate = (dateSeconds > 0); - final int templateId = isValidDate ? - R.string.mediapicker_gallery_image_item_description : - R.string.mediapicker_gallery_image_item_description_no_date; - String contentDescription = String.format(getResources().getString(templateId), - dateSeconds * TimeUnit.SECONDS.toMillis(1)); - mImageView.setContentDescription(contentDescription); } } } diff --git a/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java b/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java index 8db13db..c9b544d 100644 --- a/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java +++ b/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java @@ -39,7 +39,7 @@ import com.android.messaging.util.Assert; import com.android.messaging.util.OsUtil; /** - * Chooser which allows the user to select one or more existing images or videos + * Chooser which allows the user to select one or more existing images or videos or audios. */ class GalleryMediaChooser extends MediaChooser implements GalleryGridView.GalleryGridViewListener, MediaPickerDataListener { @@ -54,7 +54,9 @@ class GalleryMediaChooser extends MediaChooser implements @Override public int getSupportedMediaTypes() { - return MediaPicker.MEDIA_TYPE_IMAGE | MediaPicker.MEDIA_TYPE_VIDEO; + return (MediaPicker.MEDIA_TYPE_IMAGE + | MediaPicker.MEDIA_TYPE_VIDEO + | MediaPicker.MEDIA_TYPE_AUDIO); } @Override |