• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.mail.browse;
2 
3 import android.content.Context;
4 import android.graphics.drawable.Drawable;
5 import android.text.Spannable;
6 import android.text.SpannableString;
7 import android.text.style.ImageSpan;
8 import android.util.AttributeSet;
9 import android.widget.TextView;
10 
11 import com.android.emailcommon.mail.Address;
12 import com.android.mail.R;
13 import com.android.mail.providers.Message;
14 import com.android.mail.providers.UIProvider;
15 import com.android.mail.utils.Utils;
16 
17 public class SpamWarningView extends TextView {
18     // Prefix added to the Spam warning text so that ImageSpan overrides it to
19     // display the alert icon.
20     private static final String SPANNABLE_SPAM_WARNING_PREFIX = ".";
21 
22     private final int mHighWarningColor;
23     private final int mLowWarningColor;
24     private final int mHighWarningBackgroundColor;
25     private final int mLowWarningBackgroundColor;
26 
SpamWarningView(Context context)27     public SpamWarningView(Context context) {
28         this(context, null);
29     }
30 
SpamWarningView(Context context, AttributeSet attrs)31     public SpamWarningView(Context context, AttributeSet attrs) {
32         super(context, attrs);
33         mHighWarningColor = getResources().getColor(R.color.high_spam_color);
34         mHighWarningBackgroundColor = getResources().getColor(
35             R.color.high_spam_warning_background_color);
36         mLowWarningColor = getResources().getColor(R.color.low_spam_color);
37         mLowWarningBackgroundColor = getResources().getColor(
38             R.color.low_spam_warning_background_color);
39     }
40 
showSpamWarning(Message message, Address sender)41     public void showSpamWarning(Message message, Address sender) {
42         setVisibility(VISIBLE);
43 
44         // Sets the text and adds any necessary formatting
45         // to enable the proper display.
46         final String senderAddress = sender.getAddress();
47         final String senderDomain = senderAddress.substring(senderAddress.indexOf('@')+1);
48         final String spamWarningText = Utils.convertHtmlToPlainText(String.format(
49                 message.spamWarningString, senderAddress, senderDomain));
50         final int alertIconResourceId;
51         if (message.spamWarningLevel == UIProvider.SpamWarningLevel.HIGH_WARNING) {
52             setBackgroundColor(mHighWarningBackgroundColor);
53             setTextColor(mHighWarningColor);
54             alertIconResourceId = R.drawable.ic_warning_white;
55         } else {
56             setBackgroundColor(mLowWarningBackgroundColor);
57             setTextColor(mLowWarningColor);
58             alertIconResourceId = R.drawable.ic_warning_gray;
59         }
60         final Drawable alertIcon = getResources().getDrawable(alertIconResourceId);
61         alertIcon.setBounds(0, 0, alertIcon.getIntrinsicWidth(), alertIcon.getIntrinsicHeight());
62         ImageSpan imageSpan = new ImageSpan(alertIcon, ImageSpan.ALIGN_BASELINE);
63 
64         // Spam warning format: <Alert Icon><space><warning message>
65         SpannableString ss = new SpannableString(
66             SPANNABLE_SPAM_WARNING_PREFIX + " " + spamWarningText);
67         ss.setSpan(imageSpan, 0, SPANNABLE_SPAM_WARNING_PREFIX.length(),
68             Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
69         setText(ss);
70     }
71 }
72