summaryrefslogtreecommitdiffstats
path: root/src/com/android/contacts/editor/RawContactEditorView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/contacts/editor/RawContactEditorView.java')
-rwxr-xr-x[-rw-r--r--]src/com/android/contacts/editor/RawContactEditorView.java105
1 files changed, 98 insertions, 7 deletions
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 39fe95ae9..974475c10 100644..100755
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -20,11 +20,13 @@ import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Parcelable;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -41,11 +43,15 @@ import android.widget.TextView;
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.PhoneAccountType;
+import com.android.contacts.common.model.account.SimAccountType;
import com.android.contacts.common.model.account.AccountType.EditType;
import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.common.model.RawContactDelta;
+import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.common.SimContactsConstants;
import com.google.common.base.Objects;
import java.util.ArrayList;
@@ -66,6 +72,7 @@ public class RawContactEditorView extends BaseRawContactEditorView {
private static final String KEY_SUPER_INSTANCE_STATE = "superInstanceState";
private LayoutInflater mInflater;
+ private Context mContext;
private StructuredNameEditorView mName;
private PhoneticNameEditorView mPhoneticName;
@@ -94,10 +101,12 @@ public class RawContactEditorView extends BaseRawContactEditorView {
public RawContactEditorView(Context context) {
super(context);
+ mContext = context;
}
public RawContactEditorView(Context context, AttributeSet attrs) {
super(context, attrs);
+ mContext = context;
}
@Override
@@ -271,6 +280,37 @@ public class RawContactEditorView extends BaseRawContactEditorView {
mGroupMembershipView.setEnabled(isEnabled());
}
+ if (SimContactsConstants.ACCOUNT_TYPE_SIM.equals(type.accountType)) {
+ String accountName = state.getAccountName();
+ int sub = SimContactsConstants.SUB_1;
+ if (SimContactsConstants.SIM_NAME_2.equals(accountName)) {
+ sub = SimContactsConstants.SUB_2;
+ }
+ if (!MoreContactUtils.canSaveAnr(sub)) {
+ ArrayList<ValuesDelta> phoneDelta = mState
+ .getMimeEntries(Phone.CONTENT_ITEM_TYPE);
+ if (phoneDelta != null) {
+ for (ValuesDelta entry : phoneDelta) {
+ if (Phone.TYPE_HOME == entry.getAsLong(Phone.TYPE)) {
+ mState.getMimeEntries(Phone.CONTENT_ITEM_TYPE)
+ .remove(entry);
+ break;
+ }
+ }
+ }
+ }
+
+ if(!MoreContactUtils.canSaveEmail(sub)){
+ ArrayList<ValuesDelta> temp = mState
+ .getMimeEntries(Email.CONTENT_ITEM_TYPE);
+ if (temp != null) {
+ mState.getMimeEntries(Email.CONTENT_ITEM_TYPE).clear();
+ }
+ }
+
+ //sim card can't store expand fields,so set it disabled.
+ mName.setExpansionViewContainerDisabled();
+ }
// Create editor sections for each possible data kind
for (DataKind kind : type.getSortedDataKinds()) {
// Skip kind of not editable
@@ -280,12 +320,16 @@ public class RawContactEditorView extends BaseRawContactEditorView {
if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
// Handle special case editor for structured name
final ValuesDelta primary = state.getPrimaryEntry(mimeType);
- mName.setValues(
- type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME),
- primary, state, false, vig);
- mPhoneticName.setValues(
+ DataKind dataKind = type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME);
+ mName.setValues(dataKind, primary, state, false, vig);
+ if (!(SimContactsConstants.ACCOUNT_TYPE_SIM).equals(type.accountType)) {
+ mPhoneticName.setValues(
type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME),
primary, state, false, vig);
+ }
+ else {
+ mPhoneticName.setVisibility(View.GONE);
+ }
} else if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
// Handle special case editor for photos
final ValuesDelta primary = state.getPrimaryEntry(mimeType);
@@ -294,6 +338,55 @@ public class RawContactEditorView extends BaseRawContactEditorView {
if (mGroupMembershipView != null) {
mGroupMembershipView.setState(state);
}
+ } else if (Email.CONTENT_ITEM_TYPE.equals(mimeType) && kind.fieldList != null) {
+ final KindSectionView section = (KindSectionView)mInflater.inflate(
+ R.layout.item_kind_section, mFields, false);
+ section.setEnabled(isEnabled());
+ section.setState(kind, state, false, vig);
+ mFields.addView(section);
+ if (SimContactsConstants.ACCOUNT_TYPE_SIM.equals(type.accountType) ) {
+ String accountName = state.getAccountName();
+ int sub = SimContactsConstants.SUB_1;
+ if (SimContactsConstants.SIM_NAME_2.equals(accountName)) {
+ sub = SimContactsConstants.SUB_2;
+ }
+ if (!MoreContactUtils.canSaveEmail(sub)) {
+ mFields.removeView(section);
+ } else {
+ kind.typeOverallMax = MoreContactUtils.getOneSimEmailCount(sub);
+ }
+ }
+ } else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType) && kind.fieldList != null) {
+ final KindSectionView section = (KindSectionView)mInflater.inflate(
+ R.layout.item_kind_section, mFields, false);
+ if (SimContactsConstants.ACCOUNT_TYPE_SIM
+ .equals(type.accountType)) {
+ String accountName = state.getAccountName();
+ int sub = SimContactsConstants.SUB_1;
+ if (SimContactsConstants.SIM_NAME_2.equals(accountName)) {
+ sub = SimContactsConstants.SUB_2;
+ }
+ EditType typeHome = new EditType(Phone.TYPE_HOME,
+ Phone.getTypeLabelResource(Phone.TYPE_HOME));
+ if (!MoreContactUtils.canSaveAnr(sub)) {
+ kind.typeOverallMax = 1;
+ if (null != kind.typeList) {
+ // When the sim card is not 3g the interface should
+ // remove the TYPE_HOME number view.
+ kind.typeList.remove(typeHome);
+ }
+ } else {
+ kind.typeOverallMax = MoreContactUtils.getOneSimAnrCount(sub) +1;
+ if (null != kind.typeList && !kind.typeList.contains(typeHome)) {
+ // When the sim card is 3g the interface should
+ // add the TYPE_HOME number view.
+ kind.typeList.add(typeHome);
+ }
+ }
+ }
+ section.setEnabled(isEnabled());
+ section.setState(kind, state, false, vig);
+ mFields.addView(section);
} else if (Organization.CONTENT_ITEM_TYPE.equals(mimeType)) {
// Create the organization section
final KindSectionView section = (KindSectionView) mInflater.inflate(
@@ -340,8 +433,6 @@ public class RawContactEditorView extends BaseRawContactEditorView {
mFields.addView(mGroupMembershipView);
}
- updatePhoneticNameVisibility();
-
addToDefaultGroupIfNeeded();