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