pre-provide the mvno data of the edited apn

For mvno, user can add or edit mvno data field.
Pre-provide the mvno data of the edited apn when the user selects
one of the mvno types.
For example if user choose gid, populate the data field with the
current sim's gid1 data, or if user choose the SPN option, fill
in data with the current carrier string. If IMSI, fill in imsi data.

Change-Id: I1bc280054cc7cd37e78a279866cefd62872a19fb
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index f34abfa..2da2d76 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -94,6 +94,7 @@
     private boolean mNewApn;
     private boolean mFirstTime;
     private Resources mRes;
+    private TelephonyManager mTelephonyManager;
 
     /**
      * Standard projection for the interesting columns of a normal note.
@@ -224,6 +225,8 @@
         mCursor = managedQuery(mUri, sProjection, null, null);
         mCursor.moveToFirst();
 
+        mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
+
         fillUi();
     }
 
@@ -359,18 +362,30 @@
         }
     }
 
-    private String mvnoDescription(String raw) {
-        int mvnoIndex = mMvnoType.findIndexOfValue(raw);
+    private String mvnoDescription(String newValue) {
+        int mvnoIndex = mMvnoType.findIndexOfValue(newValue);
+        String oldValue = mMvnoType.getValue();
+
         if (mvnoIndex == -1) {
             return null;
         } else {
             String[] values = mRes.getStringArray(R.array.mvno_type_entries);
             if (values[mvnoIndex].equals("None")) {
                 mMvnoMatchData.setEnabled(false);
-                mMvnoMatchData.setText("");
             } else {
                 mMvnoMatchData.setEnabled(true);
             }
+            if (newValue != null && newValue.equals(oldValue) == false) {
+                if (values[mvnoIndex].equals("SPN")) {
+                    mMvnoMatchData.setText(mTelephonyManager.getSimOperatorName());
+                } else if (values[mvnoIndex].equals("IMSI")) {
+                    String numeric =
+                            SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC);
+                    mMvnoMatchData.setText(numeric + "x");
+                } else if (values[mvnoIndex].equals("GID")) {
+                    mMvnoMatchData.setText(mTelephonyManager.getGroupIdLevel1());
+                }
+            }
 
             try {
                 return values[mvnoIndex];