AI 148291: FIX 1827599 -- [STOPSHIP] Unable to make EC with non-TMUS SIM
David Brown [Tue, 5 May 2009 04:15:05 +0000 (21:15 -0700)]
  Back in CL 138604, in response to bug 1695133 (from Vodafone), I removed
  the "Dismiss" button from the "SIM network unlock" panel.
  One consequence of that change is that there's now NO WAY to make an
  Emergency Call if your SIM is network-locked and you don't know the PIN.
  Unfortunately *that* behavior is unacceptable to TMUS.
  So this change restores the "Dismiss" button for all products EXCEPT
  vodafone.  I do this by using a new config.xml resource called
  sim_network_unlock_allow_dismiss, which is true by default, but set to
  false in the vendor/vodafone/vfeu_overlay resource hierarchy.
  TESTED:
  - Got into SIM_NETWORK_LOCKED state by faking the event from the sim
  - TESTED both possible values of sim_network_unlock_allow_dismiss.
  - If true (the default), the "Dismiss" button is present, and
  correctly dismisses the panel.
  - If false (like in the vodafone product) there's no "Dismiss"
  button.
  - Also tested the layout (with the Dismiss button) in both landscape and
  portrait modes.
  There's nothing new to translate; this change doesn't add any string
  resources.
  BUG=1827599

Automated import of CL 148291

res/layout/sim_ndp.xml
res/values/config.xml [new file with mode: 0644]
src/com/android/phone/SimNetworkDepersonalizationPanel.java

index 27f16bd..806db5b 100644 (file)
                 android:paddingRight="20dip"
                 android:layout_centerHorizontal="true" />
 
+        <!-- Dismiss button.  (Not present in some products; see
+             sim_network_unlock_allow_dismiss in config.xml.) -->
+        <Button android:id="@+id/ndp_dismiss"
+                android:layout_gravity="center_horizontal"
+                android:text="@string/sim_ndp_dismiss_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:paddingLeft="20dip"
+                android:paddingRight="20dip"
+                android:layout_centerHorizontal="true" />
+
     </LinearLayout>
 
     <LinearLayout android:id="@+id/status_panel"
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100644 (file)
index 0000000..5d1778a
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Phone app resources that may need to be customized
+     for different hardware or product builds. -->
+<resources>
+    <!-- Flag indicating whether the Phone app should provide
+         a "Dismiss" button on the SIM network unlock screen.
+         The default value is true.
+         If set to false, there will be *no way* to dismiss the SIM
+         network unlock screen if you don't enter the correct unlock code.
+         (One important consequence: there will be no way to make an
+         Emergency Call if your SIM is network-locked and you don't know
+         the PIN.) -->
+    <bool name="sim_network_unlock_allow_dismiss">true</bool>
+</resources>
index 2c45b3f..e8b35fe 100644 (file)
@@ -57,6 +57,7 @@ public class SimNetworkDepersonalizationPanel extends SimPanel {
     private TextView     mStatusText;
 
     private Button       mUnlockButton;
+    private Button       mDismissButton;
 
     //private textwatcher to control text entry.
     private TextWatcher mPinEntryWatcher = new TextWatcher() {
@@ -127,6 +128,18 @@ public class SimNetworkDepersonalizationPanel extends SimPanel {
         mUnlockButton = (Button) findViewById(R.id.ndp_unlock);
         mUnlockButton.setOnClickListener(mUnlockListener);
 
+        // The "Dismiss" button is present in some (but not all) products,
+        // based on the "sim_network_unlock_allow_dismiss" resource.
+        mDismissButton = (Button) findViewById(R.id.ndp_dismiss);
+        if (getContext().getResources().getBoolean(R.bool.sim_network_unlock_allow_dismiss)) {
+            if (DBG) log("Enabling 'Dismiss' button...");
+            mDismissButton.setVisibility(View.VISIBLE);
+            mDismissButton.setOnClickListener(mDismissListener);
+        } else {
+            if (DBG) log("Removing 'Dismiss' button...");
+            mDismissButton.setVisibility(View.GONE);
+        }
+
         //status panel is used since we're having problems with the alert dialog.
         mStatusPanel = (LinearLayout) findViewById(R.id.status_panel);
         mStatusText = (TextView) findViewById(R.id.status_text);
@@ -186,6 +199,13 @@ public class SimNetworkDepersonalizationPanel extends SimPanel {
         mStatusPanel.setVisibility(View.GONE);
     }
 
+    View.OnClickListener mDismissListener = new View.OnClickListener() {
+            public void onClick(View v) {
+                if (DBG) log("mDismissListener: skipping depersonalization...");
+                dismiss();
+            }
+        };
+
     private void log(String msg) {
         Log.v(TAG, "[SimNetworkDepersonalizationPanel] " + msg);
     }