diff options
Diffstat (limited to 'src/com/android/contacts/editor/RawContactEditorView.java')
-rwxr-xr-x[-rw-r--r--] | src/com/android/contacts/editor/RawContactEditorView.java | 105 |
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(); |