Merge "Don't allow read-only photos to be changed in compact editor" into mnc-dev
diff --git a/src/com/android/contacts/editor/CompactPhotoEditorView.java b/src/com/android/contacts/editor/CompactPhotoEditorView.java
index 0b1cbe8..0aa5af3 100644
--- a/src/com/android/contacts/editor/CompactPhotoEditorView.java
+++ b/src/com/android/contacts/editor/CompactPhotoEditorView.java
@@ -73,7 +73,9 @@
private MaterialPalette mMaterialPalette;
private QuickContactImageView mPhotoImageView;
+ private View mPhotoIcon;
private View mPhotoIconOverlay;
+ private View mPhotoTouchInterceptOverlay;
public CompactPhotoEditorView(Context context) {
this(context, null);
@@ -107,8 +109,9 @@
mContactPhotoManager = ContactPhotoManager.getInstance(getContext());
mPhotoImageView = (QuickContactImageView) findViewById(R.id.photo);
+ mPhotoIcon = findViewById(R.id.photo_icon);
mPhotoIconOverlay = findViewById(R.id.photo_icon_overlay);
- findViewById(R.id.photo_touch_intercept_overlay).setOnClickListener(this);
+ mPhotoTouchInterceptOverlay = findViewById(R.id.photo_touch_intercept_overlay);
}
public void setValues(DataKind dataKind, ValuesDelta valuesDelta,
@@ -118,6 +121,13 @@
mReadOnly = readOnly;
mMaterialPalette = materialPalette;
+ if (mReadOnly) {
+ mPhotoIcon.setVisibility(View.GONE);
+ mPhotoIconOverlay.setVisibility(View.GONE);
+ } else {
+ mPhotoTouchInterceptOverlay.setOnClickListener(this);
+ }
+
setId(viewIdGenerator.getId(rawContactDelta, dataKind, valuesDelta, /* viewIndex =*/ 0));
if (valuesDelta == null) {
diff --git a/src/com/android/contacts/editor/CompactRawContactsEditorView.java b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
index 3a567fb..669e400 100644
--- a/src/com/android/contacts/editor/CompactRawContactsEditorView.java
+++ b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
@@ -293,15 +293,15 @@
rawContactDelta, accountType, Photo.CONTENT_ITEM_TYPE);
final DataKind dataKind = accountType.getKindForMimetype(Photo.CONTENT_ITEM_TYPE);
- if (dataKind != null) {
+ if (dataKind != null && dataKind.editable) {
for (ValuesDelta valuesDelta
: rawContactDelta.getMimeEntries(Photo.CONTENT_ITEM_TYPE)) {
if (valuesDelta != null && valuesDelta.getId() != null
&& valuesDelta.getId().equals(photoId)) {
mPhotoRawContactId = rawContactDelta.getRawContactId();
mPhoto.setValues(dataKind, valuesDelta, rawContactDelta,
- /* readOnly =*/ !dataKind.editable, mMaterialPalette,
- viewIdGenerator);
+ !accountType.areContactsWritable(),
+ mMaterialPalette, viewIdGenerator);
return;
}
}
@@ -313,13 +313,13 @@
if (!rawContactDelta.isVisible()) continue;
final AccountType accountType = rawContactDelta.getAccountType(mAccountTypeManager);
final DataKind dataKind = accountType.getKindForMimetype(Photo.CONTENT_ITEM_TYPE);
- if (dataKind != null) {
+ if (dataKind != null && dataKind.editable) {
final ValuesDelta valuesDelta = getNonEmptySuperPrimaryValuesDeltas(
rawContactDelta, Photo.CONTENT_ITEM_TYPE, dataKind);
if (valuesDelta != null) {
mPhotoRawContactId = rawContactDelta.getRawContactId();
mPhoto.setValues(dataKind, valuesDelta, rawContactDelta,
- /* readOnly =*/ !dataKind.editable, mMaterialPalette,
+ !accountType.areContactsWritable(), mMaterialPalette,
viewIdGenerator);
return;
}
@@ -330,13 +330,13 @@
if (!rawContactDelta.isVisible()) continue;
final AccountType accountType = rawContactDelta.getAccountType(mAccountTypeManager);
final DataKind dataKind = accountType.getKindForMimetype(Photo.CONTENT_ITEM_TYPE);
- if (dataKind != null) {
+ if (dataKind != null && dataKind.editable) {
final List<ValuesDelta> valuesDeltas = getNonEmptyValuesDeltas(
rawContactDelta, Photo.CONTENT_ITEM_TYPE, dataKind);
if (valuesDeltas != null && !valuesDeltas.isEmpty()) {
mPhotoRawContactId = rawContactDelta.getRawContactId();
mPhoto.setValues(dataKind, valuesDeltas.get(0), rawContactDelta,
- /* readOnly =*/ !dataKind.editable, mMaterialPalette,
+ !accountType.areContactsWritable(), mMaterialPalette,
viewIdGenerator);
return;
}
@@ -347,13 +347,13 @@
if (!rawContactDelta.isVisible()) continue;
final AccountType accountType = rawContactDelta.getAccountType(mAccountTypeManager);
final DataKind dataKind = accountType.getKindForMimetype(Photo.CONTENT_ITEM_TYPE);
- if (dataKind != null) {
+ if (dataKind != null && dataKind.editable) {
final ValuesDelta valuesDelta = rawContactDelta.getSuperPrimaryEntry(
dataKind.mimeType, /* forceSelection =*/ true);
if (valuesDelta != null) {
mPhotoRawContactId = rawContactDelta.getRawContactId();
mPhoto.setValues(dataKind, valuesDelta, rawContactDelta,
- /* readOnly =*/ !dataKind.editable, mMaterialPalette,
+ !accountType.areContactsWritable(), mMaterialPalette,
viewIdGenerator);
return;
}
@@ -461,15 +461,12 @@
private void addEditorViews(RawContactDeltaList rawContactDeltas) {
for (RawContactDelta rawContactDelta : rawContactDeltas) {
- if (!rawContactDelta.isVisible()) {
- continue;
- }
+ if (!rawContactDelta.isVisible()) continue;
final AccountType accountType = rawContactDelta.getAccountType(mAccountTypeManager);
for (DataKind dataKind : accountType.getSortedDataKinds()) {
- if (!dataKind.editable) {
- continue;
- }
+ if (!dataKind.editable) continue;
+
final String mimeType = dataKind.mimeType;
vlog(mimeType + " " + dataKind.fieldList.size() + " field(s)");
if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)