summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblong <blong@codeaurora.org>2014-07-14 10:43:51 +0800
committerRoman Birg <roman@cyngn.com>2014-09-02 11:53:44 -0700
commit16ec89abfa2c0cc6c78039d6c64bbf54e3531c27 (patch)
tree90f0b4ec8945e576710f28e7debeb8fad7af02f8
parentcf2a710e89aec85183946592934c68fcfcc8e9ce (diff)
downloadpackages_apps_Contacts-16ec89abfa2c0cc6c78039d6c64bbf54e3531c27.tar.gz
packages_apps_Contacts-16ec89abfa2c0cc6c78039d6c64bbf54e3531c27.tar.bz2
packages_apps_Contacts-16ec89abfa2c0cc6c78039d6c64bbf54e3531c27.zip
Add the support for multi anr and email in SIM card
- support to add multi anr and email for SIM contacts CRs-Fixed: 696392 Change-Id: Icc1f7904c801dbd16207706b6121d73841b6c641
-rw-r--r--res/values/cm_strings.xml2
-rw-r--r--src/com/android/contacts/ContactSaveService.java34
-rw-r--r--src/com/android/contacts/detail/ContactLoaderFragment.java59
-rw-r--r--src/com/android/contacts/editor/ContactEditorFragment.java6
-rw-r--r--src/com/android/contacts/editor/KindSectionView.java1
-rw-r--r--src/com/android/contacts/editor/RawContactEditorView.java4
6 files changed, 86 insertions, 20 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 040d7d2e9..145d42eb8 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -234,4 +234,6 @@
<string name="voicemail">Voicemail</string>
<string name="select_call_title">Select call logs</string>
+
+ <string name="invalid_number_type">Error: Number type is invalid.</string>
</resources>
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index f958ceeec..6702ee3e0 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -180,6 +180,7 @@ public class ContactSaveService extends IntentService {
public static final int RESULT_NUMBER_INVALID = 9; // only for sim failure of number is valid
public static final int RESULT_MEMORY_FULL_FAILURE = 11; //for memory full exception
+ public static final int RESULT_NUMBER_TYPE_FAILURE =12; //only for sim failure of number TYPE
private final int MAX_NUM_LENGTH = 20;
private final int MAX_EMAIL_LENGTH = 40;
@@ -675,9 +676,27 @@ public class ContactSaveService extends IntentService {
return RESULT_NO_NUMBER_AND_EMAIL;
}
- if ((!TextUtils.isEmpty(number) && number.length() > MAX_NUM_LENGTH)
- || (!TextUtils.isEmpty(anr) && anr.length() > MAX_NUM_LENGTH)) {
- return RESULT_NUMBER_ANR_FAILURE;
+ if (!TextUtils.isEmpty(number)) {
+ if (number.length() > MAX_NUM_LENGTH) {
+ return RESULT_NUMBER_ANR_FAILURE;
+ } else if (number.contains(SimContactsConstants.STR_ANRS)) {
+ return RESULT_NUMBER_TYPE_FAILURE;
+ }
+ }
+
+ if (!TextUtils.isEmpty(anr)) {
+ String[] anrs = anr.split(",");
+ if (anrs != null) {
+ if (anrs.length > MoreContactUtils
+ .getOneSimAnrCount(subscription)) {
+ return RESULT_NUMBER_TYPE_FAILURE;
+ }
+ for (String mAnr : anrs) {
+ if (mAnr.length() > MAX_NUM_LENGTH) {
+ return RESULT_NUMBER_ANR_FAILURE;
+ }
+ }
+ }
}
if (!TextUtils.isEmpty(number) && TextUtils.isEmpty(PhoneNumberUtils
@@ -685,8 +704,13 @@ public class ContactSaveService extends IntentService {
return RESULT_NUMBER_INVALID;
}
- if (!TextUtils.isEmpty(email) && email.length() >= MAX_EMAIL_LENGTH) {
- return RESULT_EMAIL_FAILURE;
+ if (!TextUtils.isEmpty(email)) {
+ String[] emails = email.split(",");
+ for (String mEmail : emails) {
+ if (mEmail != null && mEmail.length() > MAX_EMAIL_LENGTH) {
+ return RESULT_EMAIL_FAILURE;
+ }
+ }
}
if (!TextUtils.isEmpty(tag)) {
diff --git a/src/com/android/contacts/detail/ContactLoaderFragment.java b/src/com/android/contacts/detail/ContactLoaderFragment.java
index cc9e94600..fe9cac767 100644
--- a/src/com/android/contacts/detail/ContactLoaderFragment.java
+++ b/src/com/android/contacts/detail/ContactLoaderFragment.java
@@ -617,8 +617,14 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
synchronized (this) {
int adnCountInSimContact = 1;
int anrCountInSimContact = 1;
+ int emailCountInSimContact = 0;
if (!MoreContactUtils.canSaveAnr(sub)) {
anrCountInSimContact = 0;
+ } else {
+ anrCountInSimContact = MoreContactUtils.getOneSimAnrCount(sub);
+ }
+ if (MoreContactUtils.canSaveEmail(sub)) {
+ emailCountInSimContact = MoreContactUtils.getOneSimEmailCount(sub);
}
int totalEmptyAdn = MoreContactUtils.getSimFreeCount(mContext, sub);
int totalEmptyAnr = MoreContactUtils.getSpareAnrCount(sub);
@@ -672,7 +678,10 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
int nameCount = (strName != null && !strName.equals("")) ? 1 : 0;
int groupNumCount = (arrayNumber.size() % numEntitySize) != 0 ? (arrayNumber
.size() / numEntitySize + 1) : (arrayNumber.size() / numEntitySize);
- int groupEmailCount = arrayEmail.size();
+ int groupEmailCount = emailCountInSimContact == 0 ? 0
+ : ((arrayEmail.size() % emailCountInSimContact) != 0 ? (arrayEmail
+ .size() / emailCountInSimContact + 1)
+ : (arrayEmail.size() / emailCountInSimContact));
int groupCount = Math.max(groupEmailCount, Math.max(nameCount, groupNumCount));
@@ -696,7 +705,13 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
for (int i = 0; i < groupEmailCount; i++) {
value = results.get(i);
- value.putEmail(arrayEmail.get(i));
+ ArrayList<String> emailItem = new ArrayList<String>();
+ for (int j = 0; j < emailCountInSimContact; j++) {
+ if ((i * emailCountInSimContact + j) < arrayEmail.size()) {
+ emailItem.add(arrayEmail.get(i * emailCountInSimContact + j));
+ }
+ }
+ value.putEmailList(emailItem);
}
ArrayList<String> emptyList = new ArrayList<String>();
@@ -708,7 +723,6 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
}
//get phone number from UsimEntity,then insert to SIM card
- String strEmail = null;
for (int i = 0; i < groupCount; i++) {
value = results.get(i);
if (value.containsNumber()) {
@@ -718,14 +732,33 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
}
if (value.containsEmail()) {
- strEmail = (String) value.getEmail();
+ arrayEmail = (ArrayList<String>) value.getEmailList();
} else {
- strEmail = null;
+ arrayEmail = emptyList;
}
String strNum = arrayNumber.size() > 0 ? arrayNumber.get(0) : null;
- String strAnrNum = arrayNumber.size() > 1 ? arrayNumber.get(1) : null;
+ StringBuilder strAnrNum = new StringBuilder();
+ for (int j = 1; j < arrayNumber.size(); j++) {
+ String s = arrayNumber.get(j);
+ if (s.length() > MoreContactUtils.MAX_LENGTH_NUMBER_IN_SIM) {
+ s = s.substring(
+ 0, MoreContactUtils.MAX_LENGTH_NUMBER_IN_SIM);
+ }
+ strAnrNum.append(s);
+ strAnrNum.append(",");
+ }
+ StringBuilder strEmail = new StringBuilder();
+ for (int j = 0; j < arrayEmail.size(); j++) {
+ String s = arrayEmail.get(j);
+ if (s.length() > MoreContactUtils.MAX_LENGTH_EMAIL_IN_SIM) {
+ s = s.substring(
+ 0, MoreContactUtils.MAX_LENGTH_EMAIL_IN_SIM);
+ }
+ strEmail.append(s);
+ strEmail.append(",");
+ }
itemUri = MoreContactUtils.insertToCard(mContext, strName, strNum,
- strEmail, strAnrNum, sub);
+ strEmail.toString(), strAnrNum.toString(), sub);
}
if (itemUri != null) {
msg.what = MSG_COPY_DONE;
@@ -877,18 +910,18 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
//supply phone number and email which could stored in one ADN
class UsimEntity {
private ArrayList<String> mNumberList = new ArrayList<String>();
- private String mEmail = null;
+ private ArrayList<String> mEmailList = new ArrayList<String>();
- public String getEmail() {
- return mEmail;
+ public ArrayList<String> getEmailList() {
+ return mEmailList;
}
public ArrayList<String> getNumberList() {
return mNumberList;
}
- public void putEmail(String email) {
- mEmail = email;
+ public void putEmailList(ArrayList<String> list) {
+ mEmailList = list;
}
public void putNumberList(ArrayList<String> list) {
@@ -896,7 +929,7 @@ public class ContactLoaderFragment extends Fragment implements FragmentKeyListen
}
public boolean containsEmail() {
- return mEmail != null;
+ return !mEmailList.isEmpty();
}
public boolean containsNumber() {
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index f5e05295a..adf92f4d6 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -1320,7 +1320,11 @@ public class ContactEditorFragment extends Fragment implements
} else if (result == ContactSaveService.RESULT_MEMORY_FULL_FAILURE) {
Toast.makeText(mContext, R.string.memory_card_full, Toast.LENGTH_SHORT)
.show();
- } else {
+ } else if(result == ContactSaveService.RESULT_NUMBER_TYPE_FAILURE) {
+ Toast.makeText(mContext, R.string.invalid_number_type, Toast.LENGTH_SHORT)
+ .show();
+ }
+ else {
Toast.makeText(mContext, R.string.contactSavedErrorToast, Toast.LENGTH_LONG)
.show();
}
diff --git a/src/com/android/contacts/editor/KindSectionView.java b/src/com/android/contacts/editor/KindSectionView.java
index 261286e47..532e49d05 100644
--- a/src/com/android/contacts/editor/KindSectionView.java
+++ b/src/com/android/contacts/editor/KindSectionView.java
@@ -118,6 +118,7 @@ public class KindSectionView extends LinearLayout implements EditorListener {
} else {
// Otherwise it's okay to delete this {@link Editor}
editor.deleteEditor();
+ updateAddFooterVisible(true);
}
}
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 8bf1a25b4..ebd29e5e3 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -359,6 +359,8 @@ public class RawContactEditorView extends BaseRawContactEditorView {
}
if (!MoreContactUtils.canSaveEmail(sub)) {
mFields.removeView(section);
+ } else {
+ kind.typeOverallMax = MoreContactUtils.getOneSimEmailCount(sub);
}
}
} else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType) && kind.fieldList != null) {
@@ -381,7 +383,7 @@ public class RawContactEditorView extends BaseRawContactEditorView {
kind.typeList.remove(typeHome);
}
} else {
- kind.typeOverallMax = 2;
+ 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.