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