summaryrefslogtreecommitdiff
path: root/src/com/android/phone/EnableFdnScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/phone/EnableFdnScreen.java')
-rw-r--r--src/com/android/phone/EnableFdnScreen.java150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/com/android/phone/EnableFdnScreen.java b/src/com/android/phone/EnableFdnScreen.java
new file mode 100644
index 00000000..0db47c36
--- /dev/null
+++ b/src/com/android/phone/EnableFdnScreen.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2006 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.
+ */
+
+package com.android.phone;
+
+import android.app.Activity;
+import android.os.AsyncResult;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.text.method.DigitsKeyListener;
+import android.util.Log;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.internal.telephony.CommandException;
+import com.android.internal.telephony.Phone;
+
+/**
+ * UI to enable/disable FDN.
+ */
+public class EnableFdnScreen extends Activity {
+ private static final String LOG_TAG = PhoneGlobals.LOG_TAG;
+ private static final boolean DBG = false;
+
+ private static final int ENABLE_FDN_COMPLETE = 100;
+
+ private LinearLayout mPinFieldContainer;
+ private EditText mPin2Field;
+ private TextView mStatusField;
+ private boolean mEnable;
+ private Phone mPhone;
+
+ private Handler mHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case ENABLE_FDN_COMPLETE:
+ AsyncResult ar = (AsyncResult) msg.obj;
+ handleResult(ar);
+ break;
+ }
+
+ return;
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ setContentView(R.layout.enable_fdn_screen);
+ setupView();
+
+ mPhone = PhoneGlobals.getPhone();
+ mEnable = !mPhone.getIccCard().getIccFdnEnabled();
+
+ int id = mEnable ? R.string.enable_fdn : R.string.disable_fdn;
+ setTitle(getResources().getText(id));
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mPhone = PhoneGlobals.getPhone();
+ }
+
+ private void setupView() {
+ mPin2Field = (EditText) findViewById(R.id.pin);
+ mPin2Field.setKeyListener(DigitsKeyListener.getInstance());
+ mPin2Field.setMovementMethod(null);
+ mPin2Field.setOnClickListener(mClicked);
+
+ mPinFieldContainer = (LinearLayout) findViewById(R.id.pinc);
+ mStatusField = (TextView) findViewById(R.id.status);
+ }
+
+ private void showStatus(CharSequence statusMsg) {
+ if (statusMsg != null) {
+ mStatusField.setText(statusMsg);
+ mStatusField.setVisibility(View.VISIBLE);
+ mPinFieldContainer.setVisibility(View.GONE);
+ } else {
+ mPinFieldContainer.setVisibility(View.VISIBLE);
+ mStatusField.setVisibility(View.GONE);
+ }
+ }
+
+ private String getPin2() {
+ return mPin2Field.getText().toString();
+ }
+
+ private void enableFdn() {
+ Message callback = Message.obtain(mHandler, ENABLE_FDN_COMPLETE);
+ mPhone.getIccCard().setIccFdnEnabled(mEnable, getPin2(), callback);
+ if (DBG) log("enableFdn: please wait...");
+ }
+
+ private void handleResult(AsyncResult ar) {
+ if (ar.exception == null) {
+ if (DBG) log("handleResult: success!");
+ showStatus(getResources().getText(mEnable ?
+ R.string.enable_fdn_ok : R.string.disable_fdn_ok));
+ } else if (ar.exception instanceof CommandException
+ /* && ((CommandException)ar.exception).getCommandError() ==
+ CommandException.Error.GENERIC_FAILURE */ ) {
+ if (DBG) log("handleResult: failed!");
+ showStatus(getResources().getText(
+ R.string.pin_failed));
+ }
+
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ finish();
+ }
+ }, 3000);
+ }
+
+ private View.OnClickListener mClicked = new View.OnClickListener() {
+ public void onClick(View v) {
+ if (TextUtils.isEmpty(mPin2Field.getText())) {
+ return;
+ }
+
+ showStatus(getResources().getText(
+ R.string.enable_in_progress));
+
+ enableFdn();
+ }
+ };
+
+ private void log(String msg) {
+ Log.d(LOG_TAG, "[EnableSimPin] " + msg);
+ }
+}