diff options
Diffstat (limited to 'src/com/android/messaging/ui/conversation/ConversationMessageView.java')
-rw-r--r-- | src/com/android/messaging/ui/conversation/ConversationMessageView.java | 196 |
1 files changed, 17 insertions, 179 deletions
diff --git a/src/com/android/messaging/ui/conversation/ConversationMessageView.java b/src/com/android/messaging/ui/conversation/ConversationMessageView.java index fae36c3..22128bc 100644 --- a/src/com/android/messaging/ui/conversation/ConversationMessageView.java +++ b/src/com/android/messaging/ui/conversation/ConversationMessageView.java @@ -17,7 +17,6 @@ package com.android.messaging.ui.conversation; import android.content.Context; -import android.content.Intent; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; @@ -32,19 +31,15 @@ import android.text.style.URLSpan; import android.text.util.Linkify; import android.util.AttributeSet; import android.util.DisplayMetrics; -import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; -import android.widget.Button; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; -import android.widget.RelativeLayout; import android.widget.TextView; import com.android.messaging.BugleApplication; @@ -78,19 +73,11 @@ import com.android.messaging.util.OsUtil; import com.android.messaging.util.PhoneUtils; import com.android.messaging.util.UiUtils; import com.android.messaging.util.YouTubeUtil; -import com.cyanogen.ambient.ridesharing.core.RidesharingContract; import com.cyanogen.lookup.phonenumber.response.LookupResponse; import com.cyanogenmod.messaging.lookup.LookupProviderManager.LookupProviderListener; import com.cyanogenmod.messaging.ui.AttributionContactIconView; -import com.cyanogenmod.messaging.util.GoogleStaticMapsUtil; -import com.cyanogenmod.messaging.util.RidesharingUtil; -import com.cyanogenmod.messaging.util.RoundedCornerTransformation; import com.google.common.base.Predicate; -import com.squareup.picasso.*; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -108,22 +95,13 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick boolean excludeDefault); } - private static final String TAG = ConversationMessageView.class.getSimpleName(); - private final ConversationMessageData mData; private LinearLayout mMessageAttachmentsView; private MultiAttachmentLayout mMultiAttachmentView; private AsyncImageView mMessageImageView; - private RelativeLayout mMessageMapsView; - private ImageView mMessageMapsImageView; - private Button mRequestRideButton; - private ImageView mBrandImageView; - private ImageView mDirectionsButton; - private View mButtonDivider; private TextView mMessageTextView; private boolean mMessageTextHasLinks; - private boolean mMessageHasMapsLink; private boolean mMessageHasYouTubeLink; private TextView mStatusTextView; private TextView mTitleTextView; @@ -142,13 +120,11 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick private boolean mOneOnOne; private ConversationMessageViewHost mHost; - private RidesharingUtil mRidesharingUtil; public ConversationMessageView(final Context context, final AttributeSet attrs) { super(context, attrs); // TODO: we should switch to using Binding and DataModel factory methods. mData = new ConversationMessageData(); - mRidesharingUtil = new RidesharingUtil(context); } @Override @@ -170,13 +146,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick mMessageImageView.setOnClickListener(this); mMessageImageView.setOnLongClickListener(this); - mMessageMapsView = (RelativeLayout) findViewById(R.id.message_maps); - mMessageMapsImageView = (ImageView) findViewById(R.id.maps_image); - mRequestRideButton = (Button) findViewById(R.id.request_ride_button); - mBrandImageView = (ImageView) findViewById(R.id.brand_image); - mDirectionsButton= (ImageView) findViewById(R.id.directions_button); - mButtonDivider = findViewById(R.id.button_divider); - mMessageTextView = (TextView) findViewById(R.id.message_text); mMessageTextView.setOnClickListener(this); IgnoreLinkLongClickHelper.ignoreLinkLongClick(mMessageTextView, this); @@ -319,13 +288,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick } /** - * Sets a ridesharing util to get data from ridesharing services - */ - public void setRidesharingUtil(final RidesharingUtil ridesharingUtil) { - mRidesharingUtil = ridesharingUtil; - } - - /** * Sets a delay loader instance to manage loading / resuming of image attachments. */ public void setImageViewDelayLoader(final AsyncImageViewDelayLoader delayLoader) { @@ -352,7 +314,7 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick */ private boolean shouldShowMessageBubbleArrow() { return !shouldShowSimplifiedVisualStyle() - && !(mData.hasAttachments() || mMessageHasMapsLink || mMessageHasYouTubeLink); + && !(mData.hasAttachments() || mMessageHasYouTubeLink); } /** @@ -581,11 +543,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick mMultiAttachmentView.setVisibility(View.GONE); } - // In the case that we have no image attachments and a maps url then we will show a map - // preview - String mapsUrlString = null; - final String mapsUrlPrefix = "geo:0,0?q="; - // In the case that we have no image attachments and exactly one youtube link in a message // then we will show a preview. String youtubeThumbnailUrl = null; @@ -596,35 +553,28 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick messageTextWithSpans.length(), URLSpan.class); for (URLSpan span : spans) { String url = span.getURL(); - if (url.startsWith(mapsUrlPrefix)) { - mapsUrlString = url; - break; - } else { - String youtubeLinkForUrl = YouTubeUtil.getYoutubePreviewImageLink(url); - if (!TextUtils.isEmpty(youtubeLinkForUrl)) { - if (TextUtils.isEmpty(youtubeThumbnailUrl)) { - // Save the youtube link if we don't already have one - youtubeThumbnailUrl = youtubeLinkForUrl; - originalYoutubeLink = url; - } else { - // We already have a youtube link. This means we have two youtube links so - // we shall show none. - youtubeThumbnailUrl = null; - originalYoutubeLink = null; - break; - } + String youtubeLinkForUrl = YouTubeUtil.getYoutubePreviewImageLink(url); + if (!TextUtils.isEmpty(youtubeLinkForUrl)) { + if (TextUtils.isEmpty(youtubeThumbnailUrl)) { + // Save the youtube link if we don't already have one + youtubeThumbnailUrl = youtubeLinkForUrl; + originalYoutubeLink = url; + } else { + // We already have a youtube link. This means we have two youtube links so + // we shall show none. + youtubeThumbnailUrl = null; + originalYoutubeLink = null; + break; } } } } // We need to keep track if we have a youtube link in the message so that we will not show // the arrow - mMessageHasMapsLink = !TextUtils.isEmpty(mapsUrlString); mMessageHasYouTubeLink = !TextUtils.isEmpty(youtubeThumbnailUrl); - // We will show the message image view if there is one attachment or one maps link or - // one youtube link - if (imageParts.size() == 1 || mMessageHasMapsLink || mMessageHasYouTubeLink) { + // We will show the message image view if there is one attachment or one youtube link + if (imageParts.size() == 1 || mMessageHasYouTubeLink) { // Get the display metrics for a hint for how large to pull the image data into final WindowManager windowManager = (WindowManager) getContext(). getSystemService(Context.WINDOW_SERVICE); @@ -647,10 +597,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick adjustImageViewBounds(imagePart); mMessageImageView.setImageResourceId(imageRequest); mMessageImageView.setTag(imagePart); - mMessageImageView.setVisibility(View.VISIBLE); - } else if (mMessageHasMapsLink) { - // Maps image and buttons - showMapsPreview(mapsUrlString, mapsUrlPrefix, desiredWidth); } else { // Youtube Thumbnail image final ImageRequestDescriptor imageRequest = @@ -661,11 +607,9 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick ImageUtils.DEFAULT_CIRCLE_STROKE_COLOR /* circleStrokeColor */); mMessageImageView.setImageResourceId(imageRequest); mMessageImageView.setTag(originalYoutubeLink); - mMessageImageView.setVisibility(View.VISIBLE); } + mMessageImageView.setVisibility(View.VISIBLE); } else { - mMessageMapsView.setVisibility(View.GONE); - mMessageImageView.setImageResourceId(null); mMessageImageView.setVisibility(View.GONE); } @@ -682,103 +626,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick mMessageAttachmentsView.setVisibility(attachmentsVisible ? View.VISIBLE : View.GONE); } - /** - * Shows a maps preview and provides buttons for requesting a ride to the location and - * directions to the location - * @param mapsUrlString Encoded map url string - * @param mapsUrlPrefix Prefix for the map url string (such as geo:0,0?q=) - * @param desiredWidth Desired width of the maps preview - */ - private void showMapsPreview(String mapsUrlString, String mapsUrlPrefix, int desiredWidth) { - final int unspecifiedMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final int mapsMeasureSpec = MeasureSpec.makeMeasureSpec(desiredWidth, - MeasureSpec.EXACTLY); - mMessageMapsView.measure(mapsMeasureSpec, unspecifiedMeasureSpec); - - // Reset view visibility to gone - mRequestRideButton.setVisibility(View.GONE); - mBrandImageView.setVisibility(View.GONE); - mDirectionsButton.setVisibility(View.GONE); - mButtonDivider.setVisibility(View.GONE); - - final String encodedAddress = mapsUrlString.substring(mapsUrlPrefix.length()); - final int height = getResources() - .getDimensionPixelSize(R.dimen.conversation_maps_height); - String staticMapsUrl = GoogleStaticMapsUtil.getStaticMapsUrl(mContext, desiredWidth, - height, encodedAddress); - RoundedCornerTransformation transformation = - new RoundedCornerTransformation(mContext.getApplicationContext(), staticMapsUrl); - Picasso.with(mContext.getApplicationContext()) - .load(staticMapsUrl) - .placeholder(R.drawable.ic_map_placeholder) - .transform(transformation) - .into(mMessageMapsImageView, new ImageLoadedCallback()); - final Uri mapsUri = Uri.parse(mapsUrlString); - mMessageMapsImageView.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(Intent.ACTION_VIEW, mapsUri); - mContext.startActivity(intent); - } - }); - - final String directionsPrefix = "google.navigation:q="; - final Uri directionsUri = Uri.parse(directionsPrefix + encodedAddress); - mDirectionsButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(Intent.ACTION_VIEW, directionsUri); - mContext.startActivity(intent); - } - }); - - final String encodingFormat = "UTF-8"; - mRequestRideButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - String decodedAddress = null; - try { - decodedAddress = URLDecoder.decode(encodedAddress, encodingFormat); - } catch (UnsupportedEncodingException e) { - Log.e(TAG, "Unable to decode address: " + encodedAddress, e); - } - - if (!TextUtils.isEmpty(decodedAddress)) { - RidesharingContract.RideRequest.Builder builder = - new RidesharingContract.RideRequest.Builder(); - builder.addDropoffLocation(decodedAddress); - Intent intent = builder.build(); - mContext.startActivity(intent); - } - } - }); - - mRidesharingUtil.setBrandBitmap(mBrandImageView); - - final int dividerWidth = getResources() - .getDimensionPixelSize(R.dimen.maps_button_divider_width); - final int dividerWidthMeasureSpec = MeasureSpec.makeMeasureSpec(dividerWidth, - MeasureSpec.EXACTLY); - mButtonDivider.measure(dividerWidthMeasureSpec, unspecifiedMeasureSpec); - - mMessageMapsView.setVisibility(View.VISIBLE); - } - - private class ImageLoadedCallback implements com.squareup.picasso.Callback { - @Override - public void onSuccess() { - mRequestRideButton.setVisibility(View.VISIBLE); - mBrandImageView.setVisibility(View.VISIBLE); - mDirectionsButton.setVisibility(View.VISIBLE); - mButtonDivider.setVisibility(View.VISIBLE); - } - - @Override - public void onError() { - Log.e(TAG, "Unable to load static map"); - } - } - private void bindAttachmentsOfSameType(final Predicate<MessagePartData> attachmentTypeFilter, final int attachmentViewLayoutRes, final AttachmentViewBinder viewBinder, final Class<?> attachmentViewClass) { @@ -1038,16 +885,6 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick // Tint image/video attachments when selected final int selectedImageTint = getResources().getColor(R.color.message_image_selected_tint); - if (mMessageMapsImageView.getVisibility() == View.VISIBLE && - mDirectionsButton.getVisibility() == View.VISIBLE) { - if (isSelected()) { - mMessageMapsImageView.setColorFilter(selectedImageTint); - mDirectionsButton.setColorFilter(selectedImageTint); - } else { - mMessageMapsImageView.clearColorFilter(); - mDirectionsButton.clearColorFilter(); - } - } if (mMessageImageView.getVisibility() == View.VISIBLE) { if (isSelected()) { mMessageImageView.setColorFilter(selectedImageTint); @@ -1427,4 +1264,5 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick } } } + } |