Apply the quick contact color to default photos in the compact editor
Bug 19124091
Change-Id: I375fc8c88ab7b1bd452fbeab0e3e6444b83be094
diff --git a/res/layout/compact_contact_editor_fragment.xml b/res/layout/compact_contact_editor_fragment.xml
index a61b290..1a0788e 100644
--- a/res/layout/compact_contact_editor_fragment.xml
+++ b/res/layout/compact_contact_editor_fragment.xml
@@ -37,7 +37,8 @@
android:layout_gravity="center_horizontal"
android:orientation="vertical">
- <ImageView android:id="@+id/photo"
+ <com.android.contacts.widget.QuickContactImageView
+ android:id="@+id/photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
diff --git a/src/com/android/contacts/activities/ContactEditorBaseActivity.java b/src/com/android/contacts/activities/ContactEditorBaseActivity.java
index e4e9049..46edc31 100644
--- a/src/com/android/contacts/activities/ContactEditorBaseActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorBaseActivity.java
@@ -161,6 +161,12 @@
public static final String INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED =
"finishActivityOnSaveCompleted";
+ /**
+ * Intent key to pass the calculated photo palette calculated by
+ * {@link com.android.contacts.quickcontact.QuickContactActivity} to the compact editor.
+ */
+ public static final String INTENT_KEY_MATERIAL_PALETTE = "materialPalette";
+
protected ContactEditor mFragment;
private boolean mFinishActivityOnSaveCompleted;
diff --git a/src/com/android/contacts/editor/CompactContactEditorFragment.java b/src/com/android/contacts/editor/CompactContactEditorFragment.java
index c93f873..5635d09 100644
--- a/src/com/android/contacts/editor/CompactContactEditorFragment.java
+++ b/src/com/android/contacts/editor/CompactContactEditorFragment.java
@@ -19,10 +19,12 @@
import com.android.contacts.ContactSaveService;
import com.android.contacts.R;
import com.android.contacts.activities.CompactContactEditorActivity;
+import com.android.contacts.activities.ContactEditorBaseActivity;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.RawContactDelta;
import com.android.contacts.common.model.RawContactDeltaList;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.detail.PhotoSelectionHandler;
import com.android.contacts.util.ContactPhotoUtils;
@@ -50,6 +52,7 @@
private static final String KEY_PHOTO_URI = "photo_uri";
private static final String KEY_PHOTO_RAW_CONTACT_ID = "photo_raw_contact_id";
private static final String KEY_UPDATED_PHOTOS = "updated_photos";
+ private static final String KEY_MATERIAL_PALETTE = "material_palette";
/**
* Displays a PopupWindow with photo edit options.
@@ -112,6 +115,7 @@
private Uri mPhotoUri;
private long mPhotoRawContactId;
private Bundle mUpdatedPhotos = new Bundle();
+ private MaterialColorMapUtils.MaterialPalette mMaterialPalette;
@Override
public void onCreate(Bundle savedState) {
@@ -121,6 +125,10 @@
mPhotoUri = savedState.getParcelable(KEY_PHOTO_URI);
mPhotoRawContactId = savedState.getLong(KEY_PHOTO_RAW_CONTACT_ID);
mUpdatedPhotos = savedState.getParcelable(KEY_UPDATED_PHOTOS);
+ mMaterialPalette = savedState.getParcelable(KEY_MATERIAL_PALETTE);
+ } else {
+ mMaterialPalette = getActivity().getIntent().getParcelableExtra(
+ ContactEditorBaseActivity.INTENT_KEY_MATERIAL_PALETTE);
}
}
@@ -139,6 +147,9 @@
outState.putParcelable(KEY_PHOTO_URI, mPhotoUri);
outState.putLong(KEY_PHOTO_RAW_CONTACT_ID, mPhotoRawContactId);
outState.putParcelable(KEY_UPDATED_PHOTOS, mUpdatedPhotos);
+ if (mMaterialPalette != null) {
+ outState.putParcelable(KEY_MATERIAL_PALETTE, mMaterialPalette);
+ }
super.onSaveInstanceState(outState);
}
@@ -162,7 +173,7 @@
final CompactRawContactsEditorView editorView = getContent();
editorView.setListener(this);
- editorView.setState(mState, mViewIdGenerator);
+ editorView.setState(mState, mMaterialPalette, mViewIdGenerator);
editorView.setEnabled(isEnabled());
editorView.setVisibility(View.VISIBLE);
diff --git a/src/com/android/contacts/editor/CompactHeaderView.java b/src/com/android/contacts/editor/CompactHeaderView.java
index d150902..5634b8a 100644
--- a/src/com/android/contacts/editor/CompactHeaderView.java
+++ b/src/com/android/contacts/editor/CompactHeaderView.java
@@ -24,9 +24,11 @@
import com.android.contacts.common.model.RawContactDelta;
import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.editor.CompactContactEditorFragment.PhotoHandler;
import com.android.contacts.util.ContactPhotoUtils;
import com.android.contacts.util.SchedulingUtils;
+import com.android.contacts.widget.QuickContactImageView;
import android.content.Context;
import android.graphics.Bitmap;
@@ -59,8 +61,9 @@
private ValuesDelta mValuesDelta;
private boolean mReadOnly;
private boolean mIsPhotoSet;
+ private MaterialColorMapUtils.MaterialPalette mMaterialPalette;
- private ImageView mPhotoImageView;
+ private QuickContactImageView mPhotoImageView;
public CompactHeaderView(Context context) {
this(context, null);
@@ -81,14 +84,17 @@
super.onFinishInflate();
mContactPhotoManager = ContactPhotoManager.getInstance(getContext());
- mPhotoImageView = (ImageView) findViewById(R.id.photo);
+ mPhotoImageView = (QuickContactImageView) findViewById(R.id.photo);
mPhotoImageView.setOnClickListener(this);
}
public void setValues(DataKind dataKind, ValuesDelta valuesDelta,
- RawContactDelta rawContactDelta, boolean readOnly, ViewIdGenerator viewIdGenerator) {
+ RawContactDelta rawContactDelta, boolean readOnly,
+ MaterialColorMapUtils.MaterialPalette materialPalette,
+ ViewIdGenerator viewIdGenerator) {
mValuesDelta = valuesDelta;
mReadOnly = readOnly;
+ mMaterialPalette = materialPalette;
setId(viewIdGenerator.getId(rawContactDelta, dataKind, valuesDelta, /* viewIndex =*/ 0));
@@ -122,6 +128,10 @@
}
}
+ if (!mIsPhotoSet && mMaterialPalette != null) {
+ mPhotoImageView.setTint(materialPalette.mPrimaryColor);
+ }
+
// Make the photo a square
SchedulingUtils.doOnPreDraw(this, /* drawNextFrame =*/ false, new Runnable() {
@Override
diff --git a/src/com/android/contacts/editor/CompactRawContactsEditorView.java b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
index 7506f5a..6560ad0 100644
--- a/src/com/android/contacts/editor/CompactRawContactsEditorView.java
+++ b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
@@ -25,6 +25,7 @@
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountType.EditField;
import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.editor.CompactContactEditorFragment.PhotoHandler;
import android.content.Context;
@@ -70,6 +71,7 @@
private AccountTypeManager mAccountTypeManager;
private LayoutInflater mLayoutInflater;
private ViewIdGenerator mViewIdGenerator;
+ private MaterialColorMapUtils.MaterialPalette mMaterialPalette;
private CompactHeaderView mHeader;
private ViewGroup mNames;
@@ -182,7 +184,9 @@
return mPhotoRawContactId;
}
- public void setState(RawContactDeltaList rawContactDeltas, ViewIdGenerator viewIdGenerator) {
+ public void setState(RawContactDeltaList rawContactDeltas,
+ MaterialColorMapUtils.MaterialPalette materialPalette,
+ ViewIdGenerator viewIdGenerator) {
mNames.removeAllViews();
mPhoneticNames.removeAllViews();
mNicknames.removeAllViews();
@@ -197,6 +201,7 @@
mViewIdGenerator = viewIdGenerator;
setId(mViewIdGenerator.getId(rawContactDeltas.get(0), /* dataKind =*/ null,
/* valuesDelta =*/ null, ViewIdGenerator.NO_VIEW_INDEX));
+ mMaterialPalette = materialPalette;
addHeaderView(rawContactDeltas, viewIdGenerator);
addStructuredNameView(rawContactDeltas);
@@ -224,7 +229,7 @@
final ValuesDelta valuesDelta = rawContactDelta.getSuperPrimaryEntry(
dataKind.mimeType, /* forceSelection =*/ true);
mHeader.setValues(dataKind, valuesDelta, rawContactDelta,
- /* readOnly =*/ !dataKind.editable, viewIdGenerator);
+ /* readOnly =*/ !dataKind.editable, mMaterialPalette, viewIdGenerator);
return;
}
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index bec1568..cf6cc47 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -92,6 +92,7 @@
import com.android.contacts.ContactsActivity;
import com.android.contacts.NfcHandler;
import com.android.contacts.R;
+import com.android.contacts.activities.ContactEditorBaseActivity;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ClipboardUtils;
import com.android.contacts.common.Collapser;
@@ -2151,6 +2152,10 @@
final Intent intent = new Intent(Intent.ACTION_EDIT, mContactData.getLookupUri());
intent.setPackage(this.getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ if (mHasComputedThemeColor) {
+ intent.putExtra(ContactEditorBaseActivity.INTENT_KEY_MATERIAL_PALETTE,
+ new MaterialPalette(mColorFilterColor, mStatusBarColor));
+ }
return intent;
}