Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16ec89ab authored by blong's avatar blong Committed by Roman Birg
Browse files

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
parent cf2a710e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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>
+29 −5
Original line number Diff line number Diff line
@@ -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)) {
        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,9 +704,14 @@ public class ContactSaveService extends IntentService {
            return RESULT_NUMBER_INVALID;
        }

        if (!TextUtils.isEmpty(email) && email.length() >= MAX_EMAIL_LENGTH) {
        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)) {
            if (!hasChinese(tag)) {
+46 −13
Original line number Diff line number Diff line
@@ -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() {
+5 −1
Original line number Diff line number Diff line
@@ -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();
                }
+1 −0
Original line number Diff line number Diff line
@@ -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);
        }
    }

Loading