1b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project/* 2b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 3b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 4b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * you may not use this file except in compliance with the License. 6b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * You may obtain a copy of the License at 7b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 8b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 10b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * See the License for the specific language governing permissions and 14b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * limitations under the License. 15b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 16b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 17b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectpackage com.android.phone; 18b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 19b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.app.Activity; 20b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.content.AsyncQueryHandler; 21b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.content.ContentResolver; 22b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.content.Intent; 23b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.database.Cursor; 24b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.net.Uri; 25b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.os.Bundle; 26b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.os.Handler; 27b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.text.TextUtils; 28b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.util.Log; 29b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.Window; 30b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.widget.Toast; 31b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 32b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport static android.view.Window.PROGRESS_VISIBILITY_OFF; 33b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport static android.view.Window.PROGRESS_VISIBILITY_ON; 34b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 35b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project/** 36b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Activity to let the user delete an FDN contact. 37b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 38b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectpublic class DeleteFdnContactScreen extends Activity { 39a1a9601840e50e18ff8ca4be9b888e592287577bDianne Hackborn private static final String LOG_TAG = PhoneGlobals.LOG_TAG; 40b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final boolean DBG = false; 41b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 42b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final String INTENT_EXTRA_NAME = "name"; 43b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final String INTENT_EXTRA_NUMBER = "number"; 44b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 45b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final int PIN2_REQUEST_CODE = 100; 46b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 47b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private String mName; 48b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private String mNumber; 49b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private String mPin2; 50b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 51b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected QueryHandler mQueryHandler; 52b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 53b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private Handler mHandler = new Handler(); 54b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 55b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 56b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onCreate(Bundle icicle) { 57b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super.onCreate(icicle); 58b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 59b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project resolveIntent(); 60b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 61b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project authenticatePin2(); 62b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 63b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 64b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project setContentView(R.layout.delete_fdn_contact_screen); 65b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 66b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 67b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 689e037a83101c5a75ee8e71fc04ac9404de6c66b2Daisuke Miyakawa protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 69b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("onActivityResult"); 70b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 71b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project switch (requestCode) { 72b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project case PIN2_REQUEST_CODE: 73b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Bundle extras = (intent != null) ? intent.getExtras() : null; 74b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (extras != null) { 75b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mPin2 = extras.getString("pin2"); 76b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project showStatus(getResources().getText( 77b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project R.string.deleting_fdn_contact)); 78b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project deleteContact(); 79b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } else { 80b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project // if they cancelled, then we just cancel too. 81b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("onActivityResult: CANCELLED"); 82b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project displayProgress(false); 83b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project finish(); 84b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 85b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project break; 86b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 87b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 88b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 89b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void resolveIntent() { 90b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Intent intent = getIntent(); 91b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 92b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mName = intent.getStringExtra(INTENT_EXTRA_NAME); 93b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mNumber = intent.getStringExtra(INTENT_EXTRA_NUMBER); 94b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 95397ec720bec08963fed5da40719674918ef7722fMikael Danielsson if (TextUtils.isEmpty(mNumber)) { 96b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project finish(); 97b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 98b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 99b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 100b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void deleteContact() { 101b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project StringBuilder buf = new StringBuilder(); 102397ec720bec08963fed5da40719674918ef7722fMikael Danielsson if (TextUtils.isEmpty(mName)) { 103397ec720bec08963fed5da40719674918ef7722fMikael Danielsson buf.append("number='"); 104397ec720bec08963fed5da40719674918ef7722fMikael Danielsson } else { 105397ec720bec08963fed5da40719674918ef7722fMikael Danielsson buf.append("tag='"); 106397ec720bec08963fed5da40719674918ef7722fMikael Danielsson buf.append(mName); 107397ec720bec08963fed5da40719674918ef7722fMikael Danielsson buf.append("' AND number='"); 108397ec720bec08963fed5da40719674918ef7722fMikael Danielsson } 109b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project buf.append(mNumber); 110b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project buf.append("' AND pin2='"); 111b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project buf.append(mPin2); 112b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project buf.append("'"); 113b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 114c51f5ac3de9db72a11dfbb1cefd8cc72f7a0fc7cWink Saville Uri uri = Uri.parse("content://icc/fdn"); 115b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 116b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mQueryHandler = new QueryHandler(getContentResolver()); 117b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mQueryHandler.startDelete(0, null, uri, buf.toString(), null); 118b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project displayProgress(true); 119b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 120b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 121b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void authenticatePin2() { 122b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Intent intent = new Intent(); 123b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project intent.setClass(this, GetPin2Screen.class); 124b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project startActivityForResult(intent, PIN2_REQUEST_CODE); 125b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 126b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 127b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void displayProgress(boolean flag) { 128b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project getWindow().setFeatureInt( 129b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Window.FEATURE_INDETERMINATE_PROGRESS, 130b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project flag ? PROGRESS_VISIBILITY_ON : PROGRESS_VISIBILITY_OFF); 131b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 132b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 133b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project // Replace the status field with a toast to make things appear similar 134b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project // to the rest of the settings. Removed the useless status field. 135b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void showStatus(CharSequence statusMsg) { 136b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (statusMsg != null) { 137b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Toast.makeText(this, statusMsg, Toast.LENGTH_SHORT) 138b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project .show(); 139b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 140b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 141b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 142b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void handleResult(boolean success) { 143b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (success) { 144b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("handleResult: success!"); 145b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project showStatus(getResources().getText(R.string.fdn_contact_deleted)); 146b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } else { 147b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("handleResult: failed!"); 148b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project showStatus(getResources().getText(R.string.pin2_invalid)); 149b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 150b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 151b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mHandler.postDelayed(new Runnable() { 152e392a4a3f9d0bfd5aa0df490093c4b83d823571aDaisuke Miyakawa @Override 153b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public void run() { 154b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project finish(); 155b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 156b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project }, 2000); 157b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 158b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 159b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 160b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private class QueryHandler extends AsyncQueryHandler { 161b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public QueryHandler(ContentResolver cr) { 162b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(cr); 163b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 164b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 165b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 166b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onQueryComplete(int token, Object cookie, Cursor c) { 167b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 168b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 169e392a4a3f9d0bfd5aa0df490093c4b83d823571aDaisuke Miyakawa @Override 170e392a4a3f9d0bfd5aa0df490093c4b83d823571aDaisuke Miyakawa protected void onInsertComplete(int token, Object cookie, Uri uri) { 171b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 172b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 173e392a4a3f9d0bfd5aa0df490093c4b83d823571aDaisuke Miyakawa @Override 174b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onUpdateComplete(int token, Object cookie, int result) { 175b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 176b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 177e392a4a3f9d0bfd5aa0df490093c4b83d823571aDaisuke Miyakawa @Override 178b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project protected void onDeleteComplete(int token, Object cookie, int result) { 179b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("onDeleteComplete"); 180b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project displayProgress(false); 181b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project handleResult(result > 0); 182b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 183b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 184b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 185b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 186b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void log(String msg) { 187b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Log.d(LOG_TAG, "[DeleteFdnContact] " + msg); 188b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 189b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project} 190