Loading core/java/com/android/internal/widget/ContactHeaderWidget.java +100 −83 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; import android.widget.FasttrackBadgeWidget; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; Loading @@ -64,15 +65,13 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList private TextView mDisplayNameView; private TextView mPhoneticNameView; private CheckBox mStarredView; private ImageView mPhotoView; private FasttrackBadgeWidget mPhotoView; private ImageView mPresenceView; private TextView mStatusView; private int mNoPhotoResource; private QueryHandler mQueryHandler; protected long mContactId; protected Uri mContactUri; protected Uri mStatusUri; protected String[] mExcludeMimes = null; Loading @@ -94,6 +93,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList Contacts.STARRED, Contacts.PHOTO_ID, Contacts.PRESENCE_STATUS, Contacts._ID, Contacts.LOOKUP_KEY, }; protected static final int HEADER_DISPLAY_NAME_COLUMN_INDEX = 0; //TODO: We need to figure out how we're going to get the phonetic name. Loading @@ -101,6 +102,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList protected static final int HEADER_STARRED_COLUMN_INDEX = 1; protected static final int HEADER_PHOTO_ID_COLUMN_INDEX = 2; protected static final int HEADER_PRESENCE_STATUS_COLUMN_INDEX = 3; protected static final int HEADER_CONTACT_ID_COLUMN_INDEX = 4; protected static final int HEADER_LOOKUP_KEY_COLUMN_INDEX = 5; //Projection used for finding the most recent social status. protected static final String[] SOCIAL_PROJECTION = new String[] { Loading @@ -113,18 +116,29 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList //Projection used for looking up contact id from phone number protected static final String[] PHONE_LOOKUP_PROJECTION = new String[] { PhoneLookup._ID, PhoneLookup.LOOKUP_KEY, }; protected static final int PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX = 0; protected static final int PHONE_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX = 1; //Projection used for looking up contact id from email address protected static final String[] EMAIL_LOOKUP_PROJECTION = new String[] { RawContacts.CONTACT_ID, Contacts.LOOKUP_KEY, }; protected static final int EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX = 0; protected static final int EMAIL_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX = 1; protected static final String[] CONTACT_LOOKUP_PROJECTION = new String[] { Contacts._ID, }; protected static final int CONTACT_LOOKUP_ID_COLUMN_INDEX = 0; private static final int TOKEN_CONTACT_INFO = 0; private static final int TOKEN_SOCIAL = 1; private static final int TOKEN_PHONE_LOOKUP = 2; private static final int TOKEN_EMAIL_LOOKUP = 3; private static final int TOKEN_LOOKUP_CONTACT_FOR_SOCIAL_QUERY = 4; public ContactHeaderWidget(Context context) { this(context, null); Loading @@ -151,8 +165,7 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList mStarredView = (CheckBox)findViewById(R.id.star); mStarredView.setOnClickListener(this); mPhotoView = (ImageView)findViewById(R.id.photo); mPhotoView.setOnClickListener(this); mPhotoView = (FasttrackBadgeWidget) findViewById(R.id.photo); mPhotoView.setOnLongClickListener(this); mPresenceView = (ImageView) findViewById(R.id.presence); Loading Loading @@ -217,12 +230,46 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { try{ if (token == TOKEN_CONTACT_INFO) { switch (token) { case TOKEN_CONTACT_INFO: { bindContactInfo(cursor); invalidate(); } else if (token == TOKEN_SOCIAL) { break; } case TOKEN_SOCIAL: { bindSocial(cursor); invalidate(); break; } case TOKEN_PHONE_LOOKUP: { if (cursor != null && cursor.moveToFirst()) { long contactId = cursor.getLong(PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX); String lookupKey = cursor.getString( PHONE_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX); bindFromContactUri(Contacts.getLookupUri(contactId, lookupKey)); } else { setDisplayName((String) cookie, null); } break; } case TOKEN_EMAIL_LOOKUP: { if (cursor != null && cursor.moveToFirst()) { long contactId = cursor.getLong(EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX); String lookupKey = cursor.getString( EMAIL_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX); bindFromContactUri(Contacts.getLookupUri(contactId, lookupKey)); } else { setDisplayName((String) cookie, null); } break; } case TOKEN_LOOKUP_CONTACT_FOR_SOCIAL_QUERY: { if (cursor != null && cursor.moveToFirst()) { long contactId = cursor.getLong(CONTACT_LOOKUP_ID_COLUMN_INDEX); startSocialQuery(ContentUris.withAppendedId( Activities.CONTENT_CONTACT_STATUS_URI, contactId)); } } } } finally { if (cursor != null) { Loading Loading @@ -300,33 +347,31 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList * Convenience method for binding all available data from an existing * contact. * * @param contactId the contact id of the contact whose info should be displayed. * @param conatctUri a {Contacts.CONTENT_LOOKUP_URI} style URI. */ public void bindFromContactId(long contactId) { mContactId = contactId; mContactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, mContactId); public void bindFromContactLookupUri(Uri contactLookupUri) { mContactUri = contactLookupUri; bindContactUri(mContactUri); bindSocialUri(ContentUris.withAppendedId(Activities.CONTENT_CONTACT_STATUS_URI, mContactId)); } // Query for the contactId so we can do the social query. mQueryHandler.startQuery(TOKEN_LOOKUP_CONTACT_FOR_SOCIAL_QUERY, null, contactLookupUri, CONTACT_LOOKUP_PROJECTION, null, null, null); /** * Convenience method for binding {@link Contacts} header details from a * {@link Contacts#CONTENT_URI} reference. */ public void bindContactUri(Uri contactUri) { mQueryHandler.startQuery(TOKEN_CONTACT_INFO, null, contactUri, HEADER_PROJECTION, null, null, null); startContactQuery(contactLookupUri); } /** * Convenience method for binding {@link Activities} header details from a * {@link Activities#CONTENT_CONTACT_STATUS_URI}. * Convenience method for binding all available data from an existing * contact. * * @param conatctUri a {Contacts.CONTENT_URI} style URI. */ public void bindSocialUri(Uri contactSocial) { mStatusUri = contactSocial; mQueryHandler.startQuery(TOKEN_SOCIAL, null, mStatusUri, SOCIAL_PROJECTION, null, null, null); public void bindFromContactUri(Uri contactUri) { mContactUri = contactUri; long contactId = ContentUris.parseId(contactUri); startContactQuery(contactUri); startSocialQuery(ContentUris.withAppendedId( Activities.CONTENT_CONTACT_STATUS_URI, contactId)); } /** Loading @@ -338,21 +383,9 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList * address, one of them will be chosen to bind to. */ public void bindFromEmail(String emailAddress) { Cursor c = null; try { c = mContentResolver.query(Uri.withAppendedPath(Email.CONTENT_FILTER_EMAIL_URI, Uri .encode(emailAddress)), EMAIL_LOOKUP_PROJECTION, null, null, null); if (c != null && c.moveToFirst()) { long contactId = c.getLong(EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX); bindFromContactId(contactId); } else { setDisplayName(emailAddress, null); } } finally { if (c != null) { c.close(); } } mQueryHandler.startQuery(TOKEN_EMAIL_LOOKUP, emailAddress, Uri.withAppendedPath(Email.CONTENT_LOOKUP_URI, Uri.encode(emailAddress)), EMAIL_LOOKUP_PROJECTION, null, null, null); } /** Loading @@ -364,22 +397,19 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList * number, one of them will be chosen to bind to. */ public void bindFromPhoneNumber(String number) { Cursor c = null; try { c = mContentResolver.query( Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)), mQueryHandler.startQuery(TOKEN_PHONE_LOOKUP, number, Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, number), PHONE_LOOKUP_PROJECTION, null, null, null); if (c != null && c.moveToFirst()) { long contactId = c.getLong(PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX); bindFromContactId(contactId); } else { setDisplayName(number, null); } } finally { if (c != null) { c.close(); } private void startSocialQuery(Uri contactSocial) { mQueryHandler.startQuery(TOKEN_SOCIAL, null, contactSocial, SOCIAL_PROJECTION, null, null, null); } private void startContactQuery(Uri contactUri) { mQueryHandler.startQuery(TOKEN_CONTACT_INFO, null, contactUri, HEADER_PROJECTION, null, null, null); } /** Loading @@ -390,6 +420,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList // TODO: Bring back phonetic name final String displayName = c.getString(HEADER_DISPLAY_NAME_COLUMN_INDEX); final long contactId = c.getLong(HEADER_CONTACT_ID_COLUMN_INDEX); final String lookupKey = c.getString(HEADER_LOOKUP_KEY_COLUMN_INDEX); final String phoneticName = null; this.setDisplayName(displayName, null); Loading @@ -402,6 +434,7 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList photoBitmap = loadPlaceholderPhoto(null); } mPhotoView.setImageBitmap(photoBitmap); mPhotoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey)); //Set the presence status int presence = c.getInt(HEADER_PRESENCE_STATUS_COLUMN_INDEX); Loading @@ -423,27 +456,11 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList return; } switch (view.getId()) { case R.id.star: { if (view.getId() == R.id.star) { // Toggle "starred" state final ContentValues values = new ContentValues(1); values.put(Contacts.STARRED, mStarredView.isChecked()); mContentResolver.update(mContactUri, values, null, null); break; } case R.id.photo: { // Photo launches contact detail action final Intent intent = new Intent(Intents.SHOW_OR_CREATE_CONTACT, mContactUri); final Rect target = getTargetRect(view); intent.putExtra(Intents.EXTRA_TARGET_RECT, target); intent.putExtra(Intents.EXTRA_MODE, Intents.MODE_SMALL); if (mExcludeMimes != null) { // Exclude specific MIME-types when requested intent.putExtra(Intents.EXTRA_EXCLUDE_MIMES, mExcludeMimes); } mContext.startActivity(intent); break; } } } Loading core/res/res/drawable-hdpi/title_bar_medium.png 0 → 100644 +427 B Loading image diff... core/res/res/drawable-mdpi/title_bar_medium.png 0 → 100644 +14.7 KiB Loading image diff... core/res/res/layout/contact_header.xml +6 −6 Original line number Diff line number Diff line Loading @@ -19,17 +19,17 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/title_bar_tall" android:background="@drawable/title_bar_medium" android:paddingRight="5dip" android:gravity="center_vertical"> <ImageView android:id="@+id/photo" android:layout_width="56dip" android:layout_height="62dip" <android.widget.FasttrackBadgeWidget android:id="@+id/photo" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginRight="10dip" android:layout_marginLeft="10dip" android:scaleType="fitCenter" android:background="@drawable/fasttrack_badge_middle_large"/> style="@*android:style/Widget.FasttrackBadgeWidget.WindowSmall" /> /> <LinearLayout android:layout_width="0dip" Loading Loading
core/java/com/android/internal/widget/ContactHeaderWidget.java +100 −83 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; import android.widget.FasttrackBadgeWidget; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; Loading @@ -64,15 +65,13 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList private TextView mDisplayNameView; private TextView mPhoneticNameView; private CheckBox mStarredView; private ImageView mPhotoView; private FasttrackBadgeWidget mPhotoView; private ImageView mPresenceView; private TextView mStatusView; private int mNoPhotoResource; private QueryHandler mQueryHandler; protected long mContactId; protected Uri mContactUri; protected Uri mStatusUri; protected String[] mExcludeMimes = null; Loading @@ -94,6 +93,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList Contacts.STARRED, Contacts.PHOTO_ID, Contacts.PRESENCE_STATUS, Contacts._ID, Contacts.LOOKUP_KEY, }; protected static final int HEADER_DISPLAY_NAME_COLUMN_INDEX = 0; //TODO: We need to figure out how we're going to get the phonetic name. Loading @@ -101,6 +102,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList protected static final int HEADER_STARRED_COLUMN_INDEX = 1; protected static final int HEADER_PHOTO_ID_COLUMN_INDEX = 2; protected static final int HEADER_PRESENCE_STATUS_COLUMN_INDEX = 3; protected static final int HEADER_CONTACT_ID_COLUMN_INDEX = 4; protected static final int HEADER_LOOKUP_KEY_COLUMN_INDEX = 5; //Projection used for finding the most recent social status. protected static final String[] SOCIAL_PROJECTION = new String[] { Loading @@ -113,18 +116,29 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList //Projection used for looking up contact id from phone number protected static final String[] PHONE_LOOKUP_PROJECTION = new String[] { PhoneLookup._ID, PhoneLookup.LOOKUP_KEY, }; protected static final int PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX = 0; protected static final int PHONE_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX = 1; //Projection used for looking up contact id from email address protected static final String[] EMAIL_LOOKUP_PROJECTION = new String[] { RawContacts.CONTACT_ID, Contacts.LOOKUP_KEY, }; protected static final int EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX = 0; protected static final int EMAIL_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX = 1; protected static final String[] CONTACT_LOOKUP_PROJECTION = new String[] { Contacts._ID, }; protected static final int CONTACT_LOOKUP_ID_COLUMN_INDEX = 0; private static final int TOKEN_CONTACT_INFO = 0; private static final int TOKEN_SOCIAL = 1; private static final int TOKEN_PHONE_LOOKUP = 2; private static final int TOKEN_EMAIL_LOOKUP = 3; private static final int TOKEN_LOOKUP_CONTACT_FOR_SOCIAL_QUERY = 4; public ContactHeaderWidget(Context context) { this(context, null); Loading @@ -151,8 +165,7 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList mStarredView = (CheckBox)findViewById(R.id.star); mStarredView.setOnClickListener(this); mPhotoView = (ImageView)findViewById(R.id.photo); mPhotoView.setOnClickListener(this); mPhotoView = (FasttrackBadgeWidget) findViewById(R.id.photo); mPhotoView.setOnLongClickListener(this); mPresenceView = (ImageView) findViewById(R.id.presence); Loading Loading @@ -217,12 +230,46 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { try{ if (token == TOKEN_CONTACT_INFO) { switch (token) { case TOKEN_CONTACT_INFO: { bindContactInfo(cursor); invalidate(); } else if (token == TOKEN_SOCIAL) { break; } case TOKEN_SOCIAL: { bindSocial(cursor); invalidate(); break; } case TOKEN_PHONE_LOOKUP: { if (cursor != null && cursor.moveToFirst()) { long contactId = cursor.getLong(PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX); String lookupKey = cursor.getString( PHONE_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX); bindFromContactUri(Contacts.getLookupUri(contactId, lookupKey)); } else { setDisplayName((String) cookie, null); } break; } case TOKEN_EMAIL_LOOKUP: { if (cursor != null && cursor.moveToFirst()) { long contactId = cursor.getLong(EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX); String lookupKey = cursor.getString( EMAIL_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX); bindFromContactUri(Contacts.getLookupUri(contactId, lookupKey)); } else { setDisplayName((String) cookie, null); } break; } case TOKEN_LOOKUP_CONTACT_FOR_SOCIAL_QUERY: { if (cursor != null && cursor.moveToFirst()) { long contactId = cursor.getLong(CONTACT_LOOKUP_ID_COLUMN_INDEX); startSocialQuery(ContentUris.withAppendedId( Activities.CONTENT_CONTACT_STATUS_URI, contactId)); } } } } finally { if (cursor != null) { Loading Loading @@ -300,33 +347,31 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList * Convenience method for binding all available data from an existing * contact. * * @param contactId the contact id of the contact whose info should be displayed. * @param conatctUri a {Contacts.CONTENT_LOOKUP_URI} style URI. */ public void bindFromContactId(long contactId) { mContactId = contactId; mContactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, mContactId); public void bindFromContactLookupUri(Uri contactLookupUri) { mContactUri = contactLookupUri; bindContactUri(mContactUri); bindSocialUri(ContentUris.withAppendedId(Activities.CONTENT_CONTACT_STATUS_URI, mContactId)); } // Query for the contactId so we can do the social query. mQueryHandler.startQuery(TOKEN_LOOKUP_CONTACT_FOR_SOCIAL_QUERY, null, contactLookupUri, CONTACT_LOOKUP_PROJECTION, null, null, null); /** * Convenience method for binding {@link Contacts} header details from a * {@link Contacts#CONTENT_URI} reference. */ public void bindContactUri(Uri contactUri) { mQueryHandler.startQuery(TOKEN_CONTACT_INFO, null, contactUri, HEADER_PROJECTION, null, null, null); startContactQuery(contactLookupUri); } /** * Convenience method for binding {@link Activities} header details from a * {@link Activities#CONTENT_CONTACT_STATUS_URI}. * Convenience method for binding all available data from an existing * contact. * * @param conatctUri a {Contacts.CONTENT_URI} style URI. */ public void bindSocialUri(Uri contactSocial) { mStatusUri = contactSocial; mQueryHandler.startQuery(TOKEN_SOCIAL, null, mStatusUri, SOCIAL_PROJECTION, null, null, null); public void bindFromContactUri(Uri contactUri) { mContactUri = contactUri; long contactId = ContentUris.parseId(contactUri); startContactQuery(contactUri); startSocialQuery(ContentUris.withAppendedId( Activities.CONTENT_CONTACT_STATUS_URI, contactId)); } /** Loading @@ -338,21 +383,9 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList * address, one of them will be chosen to bind to. */ public void bindFromEmail(String emailAddress) { Cursor c = null; try { c = mContentResolver.query(Uri.withAppendedPath(Email.CONTENT_FILTER_EMAIL_URI, Uri .encode(emailAddress)), EMAIL_LOOKUP_PROJECTION, null, null, null); if (c != null && c.moveToFirst()) { long contactId = c.getLong(EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX); bindFromContactId(contactId); } else { setDisplayName(emailAddress, null); } } finally { if (c != null) { c.close(); } } mQueryHandler.startQuery(TOKEN_EMAIL_LOOKUP, emailAddress, Uri.withAppendedPath(Email.CONTENT_LOOKUP_URI, Uri.encode(emailAddress)), EMAIL_LOOKUP_PROJECTION, null, null, null); } /** Loading @@ -364,22 +397,19 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList * number, one of them will be chosen to bind to. */ public void bindFromPhoneNumber(String number) { Cursor c = null; try { c = mContentResolver.query( Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)), mQueryHandler.startQuery(TOKEN_PHONE_LOOKUP, number, Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, number), PHONE_LOOKUP_PROJECTION, null, null, null); if (c != null && c.moveToFirst()) { long contactId = c.getLong(PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX); bindFromContactId(contactId); } else { setDisplayName(number, null); } } finally { if (c != null) { c.close(); } private void startSocialQuery(Uri contactSocial) { mQueryHandler.startQuery(TOKEN_SOCIAL, null, contactSocial, SOCIAL_PROJECTION, null, null, null); } private void startContactQuery(Uri contactUri) { mQueryHandler.startQuery(TOKEN_CONTACT_INFO, null, contactUri, HEADER_PROJECTION, null, null, null); } /** Loading @@ -390,6 +420,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList // TODO: Bring back phonetic name final String displayName = c.getString(HEADER_DISPLAY_NAME_COLUMN_INDEX); final long contactId = c.getLong(HEADER_CONTACT_ID_COLUMN_INDEX); final String lookupKey = c.getString(HEADER_LOOKUP_KEY_COLUMN_INDEX); final String phoneticName = null; this.setDisplayName(displayName, null); Loading @@ -402,6 +434,7 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList photoBitmap = loadPlaceholderPhoto(null); } mPhotoView.setImageBitmap(photoBitmap); mPhotoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey)); //Set the presence status int presence = c.getInt(HEADER_PRESENCE_STATUS_COLUMN_INDEX); Loading @@ -423,27 +456,11 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList return; } switch (view.getId()) { case R.id.star: { if (view.getId() == R.id.star) { // Toggle "starred" state final ContentValues values = new ContentValues(1); values.put(Contacts.STARRED, mStarredView.isChecked()); mContentResolver.update(mContactUri, values, null, null); break; } case R.id.photo: { // Photo launches contact detail action final Intent intent = new Intent(Intents.SHOW_OR_CREATE_CONTACT, mContactUri); final Rect target = getTargetRect(view); intent.putExtra(Intents.EXTRA_TARGET_RECT, target); intent.putExtra(Intents.EXTRA_MODE, Intents.MODE_SMALL); if (mExcludeMimes != null) { // Exclude specific MIME-types when requested intent.putExtra(Intents.EXTRA_EXCLUDE_MIMES, mExcludeMimes); } mContext.startActivity(intent); break; } } } Loading
core/res/res/layout/contact_header.xml +6 −6 Original line number Diff line number Diff line Loading @@ -19,17 +19,17 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/title_bar_tall" android:background="@drawable/title_bar_medium" android:paddingRight="5dip" android:gravity="center_vertical"> <ImageView android:id="@+id/photo" android:layout_width="56dip" android:layout_height="62dip" <android.widget.FasttrackBadgeWidget android:id="@+id/photo" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginRight="10dip" android:layout_marginLeft="10dip" android:scaleType="fitCenter" android:background="@drawable/fasttrack_badge_middle_large"/> style="@*android:style/Widget.FasttrackBadgeWidget.WindowSmall" /> /> <LinearLayout android:layout_width="0dip" Loading