17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/* 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2007 The Android Open Source Project 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License. 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software 117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License. 157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone; 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport static android.view.Window.PROGRESS_VISIBILITY_OFF; 207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport static android.view.Window.PROGRESS_VISIBILITY_ON; 217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.app.ListActivity; 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.AsyncQueryHandler; 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.ContentResolver; 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Context; 267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Intent; 277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.database.Cursor; 287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.net.Uri; 297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Bundle; 307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.provider.Settings; 317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log; 327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.Window; 337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.CursorAdapter; 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.SimpleCursorAdapter; 357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.widget.TextView; 367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/** 3830a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * Abbreviated Dial Numbers (ADN) list activity for the Phone app. By default, this class will show 3930a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * you all Service Dialing Numbers (SDN) that are supported by a service provider. SDNs are a form 4030a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * of speed dial for accessing service provider contacts like "#MIN" for getting user minutes. 4130a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * To see this class in use, trigger the radio info screen by dialing *#*#INFO#*#* and open the 4230a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * menu. 4330a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * This class can also be used as a base class for simple contact lists that can be represented with 4430a294d9b5b6ae36bb057b70c9a76e6bcd365f2cSantos Cordon * only labels and numbers. 457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class ADNList extends ListActivity { 477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final String TAG = "ADNList"; 487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final boolean DBG = false; 497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String[] COLUMN_NAMES = new String[] { 517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon "name", 527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon "number", 537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon "emails" 547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }; 557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int NAME_COLUMN = 0; 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int NUMBER_COLUMN = 1; 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int EMAILS_COLUMN = 2; 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final int[] VIEW_NAMES = new int[] { 617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.R.id.text1, 627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.R.id.text2 637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon }; 647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int QUERY_TOKEN = 0; 667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int INSERT_TOKEN = 1; 677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int UPDATE_TOKEN = 2; 687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected static final int DELETE_TOKEN = 3; 697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected QueryHandler mQueryHandler; 727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected CursorAdapter mCursorAdapter; 737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected Cursor mCursor = null; 747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private TextView mEmptyText; 767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected int mInitialSelection = -1; 787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onCreate(Bundle icicle) { 817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onCreate(icicle); 827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon setContentView(R.layout.adn_list); 847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEmptyText = (TextView) findViewById(android.R.id.empty); 857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mQueryHandler = new QueryHandler(getContentResolver()); 867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onResume() { 907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onResume(); 917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon query(); 927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onStop() { 967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onStop(); 977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (mCursor != null) { 987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCursor.deactivate(); 997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected Uri resolveIntent() { 1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Intent intent = getIntent(); 1047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (intent.getData() == null) { 1057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon intent.setData(Uri.parse("content://icc/adn")); 1067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return intent.getData(); 1097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void query() { 1127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Uri uri = resolveIntent(); 1137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("query: starting an async query"); 1147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mQueryHandler.startQuery(QUERY_TOKEN, null, uri, COLUMN_NAMES, 1157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon null, null, null); 1167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon displayProgress(true); 1177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void reQuery() { 1207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon query(); 1217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void setAdapter() { 1247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // NOTE: 1257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // As it it written, the positioning code below is NOT working. 1267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // However, this current non-working state is in compliance with 1277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // the UI paradigm, so we can't really do much to change it. 1287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // In the future, if we wish to get this "positioning" correct, 1307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // we'll need to do the following: 1317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 1. Change the layout to in the cursor adapter to: 1327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // android.R.layout.simple_list_item_checked 1337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 2. replace the selection / focus code with: 1347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 1357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // getListView().setItemChecked(mInitialSelection, true); 1367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Since the positioning is really only useful for the dialer's 1387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // SpecialCharSequence case (dialing '2#' to get to the 2nd 1397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // contact for instance), it doesn't make sense to mess with 1407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // the usability of the activity just for this case. 1417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // These artifacts include: 1437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 1. UI artifacts (checkbox and highlight at the same time) 1447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 2. Allowing the user to edit / create new SIM contacts when 1457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // the user is simply trying to retrieve a number into the d 1467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // dialer. 1477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (mCursorAdapter == null) { 1497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCursorAdapter = newAdapter(); 1507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon setListAdapter(mCursorAdapter); 1527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 1537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCursorAdapter.changeCursor(mCursor); 1547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (mInitialSelection >=0 && mInitialSelection < mCursorAdapter.getCount()) { 1577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon setSelection(mInitialSelection); 1587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon getListView().setFocusableInTouchMode(true); 1597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon boolean gotfocus = getListView().requestFocus(); 1607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected CursorAdapter newAdapter() { 1647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return new SimpleCursorAdapter(this, 1657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.R.layout.simple_list_item_2, 1667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCursor, COLUMN_NAMES, VIEW_NAMES); 1677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void displayProgress(boolean loading) { 1707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("displayProgress: " + loading); 1717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mEmptyText.setText(loading ? R.string.simContacts_emptyLoading: 1737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon (isAirplaneModeOn(this) ? R.string.simContacts_airplaneMode : 1747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.simContacts_empty)); 1757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon getWindow().setFeatureInt( 1767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Window.FEATURE_INDETERMINATE_PROGRESS, 1777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon loading ? PROGRESS_VISIBILITY_ON : PROGRESS_VISIBILITY_OFF); 1787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static boolean isAirplaneModeOn(Context context) { 1817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return Settings.System.getInt(context.getContentResolver(), 1827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.AIRPLANE_MODE_ON, 0) != 0; 1837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private class QueryHandler extends AsyncQueryHandler { 1867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public QueryHandler(ContentResolver cr) { 1877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super(cr); 1887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 1917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onQueryComplete(int token, Object cookie, Cursor c) { 1927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("onQueryComplete: cursor.count=" + c.getCount()); 1937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCursor = c; 1947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon setAdapter(); 1957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon displayProgress(false); 1967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Cursor is refreshed and inherited classes may have menu items depending on it. 1987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon invalidateOptionsMenu(); 1997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 2027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onInsertComplete(int token, Object cookie, Uri uri) { 2037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("onInsertComplete: requery"); 2047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon reQuery(); 2057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 2087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onUpdateComplete(int token, Object cookie, int result) { 2097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("onUpdateComplete: requery"); 2107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon reQuery(); 2117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 2147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onDeleteComplete(int token, Object cookie, int result) { 2157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) log("onDeleteComplete: requery"); 2167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon reQuery(); 2177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void log(String msg) { 2217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Log.d(TAG, "[ADNList] " + msg); 2227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 224