1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/* 2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2015 The Android Open Source Project 3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License. 6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at 7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software 11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and 14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License. 15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 16ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpackage com.android.dialer.app.list; 17ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.app.Activity; 19ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.os.Bundle; 20ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.support.v7.app.ActionBar; 21ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.support.v7.app.AppCompatActivity; 22ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.telephony.PhoneNumberUtils; 23ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.text.Editable; 24ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.text.TextUtils; 25ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.text.TextWatcher; 26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.util.TypedValue; 27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.view.View; 28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.widget.AdapterView; 29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.widget.EditText; 30ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.widget.Toast; 31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.contacts.common.list.ContactEntryListAdapter; 32ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.contacts.common.util.ContactDisplayUtils; 33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.app.R; 34ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.app.widget.SearchEditTextLayout; 35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.blocking.BlockNumberDialogFragment; 36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; 37ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener; 388369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanianimport com.android.dialer.common.LogUtil; 3910b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport com.android.dialer.location.GeoUtil; 408369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanianimport com.android.dialer.logging.InteractionEvent; 41ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.logging.Logger; 42ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 43ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpublic class BlockedListSearchFragment extends RegularSearchFragment 44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian implements BlockNumberDialogFragment.Callback { 45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 46ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private final TextWatcher mPhoneSearchQueryTextListener = 47ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian new TextWatcher() { 48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 49ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 50ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 51ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 52ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onTextChanged(CharSequence s, int start, int before, int count) { 53ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian setQueryString(s.toString()); 54ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 55ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 56ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 57ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void afterTextChanged(Editable s) {} 58ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian }; 59ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private final SearchEditTextLayout.Callback mSearchLayoutCallback = 60ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian new SearchEditTextLayout.Callback() { 61ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 62ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onBackButtonClicked() { 63ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getActivity().onBackPressed(); 64ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 65ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 66ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 67ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onSearchViewClicked() {} 68ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian }; 69ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler; 70ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private EditText mSearchView; 71ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 72ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 73ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onCreate(Bundle savedInstanceState) { 74ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onCreate(savedInstanceState); 75ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 76ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian setShowEmptyListForNullQuery(true); 77ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /* 78ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Pass in the empty string here so ContactEntryListFragment#setQueryString interprets it as 79ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * an empty search query, rather than as an uninitalized value. In the latter case, the 80ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * adapter returned by #createListAdapter is used, which populates the view with contacts. 81ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Passing in the empty string forces ContactEntryListFragment to interpret it as an empty 82ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * query, which results in showing an empty view 83ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 84ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian setQueryString(getQueryString() == null ? "" : getQueryString()); 85ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mFilteredNumberAsyncQueryHandler = new FilteredNumberAsyncQueryHandler(getContext()); 86ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 87ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 88ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 89ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onResume() { 90ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onResume(); 91ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 92ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); 93ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian actionBar.setCustomView(R.layout.search_edittext); 94ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian actionBar.setDisplayShowCustomEnabled(true); 95ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian actionBar.setDisplayHomeAsUpEnabled(false); 96ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian actionBar.setDisplayShowHomeEnabled(false); 97ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 98ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final SearchEditTextLayout searchEditTextLayout = 99ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian (SearchEditTextLayout) actionBar.getCustomView().findViewById(R.id.search_view_container); 100ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian searchEditTextLayout.expand(false, true); 101ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian searchEditTextLayout.setCallback(mSearchLayoutCallback); 102ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian searchEditTextLayout.setBackgroundDrawable(null); 103ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 104ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mSearchView = (EditText) searchEditTextLayout.findViewById(R.id.search_view); 105ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener); 106ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mSearchView.setHint(R.string.block_number_search_hint); 107ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 108ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian searchEditTextLayout 109ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .findViewById(R.id.search_box_expanded) 110ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .setBackgroundColor(getContext().getResources().getColor(android.R.color.white)); 111ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 112ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (!TextUtils.isEmpty(getQueryString())) { 113ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mSearchView.setText(getQueryString()); 114ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 115ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 116ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // TODO: Don't set custom text size; use default search text size. 117ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mSearchView.setTextSize( 118ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian TypedValue.COMPLEX_UNIT_PX, 119ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getResources().getDimension(R.dimen.blocked_number_search_text_size)); 120ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 121ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 122ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 123ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian protected ContactEntryListAdapter createListAdapter() { 124ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian BlockedListSearchAdapter adapter = new BlockedListSearchAdapter(getActivity()); 125ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian adapter.setDisplayPhotos(true); 126ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Don't show SIP addresses. 127ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian adapter.setUseCallableUri(false); 128ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Keep in sync with the queryString set in #onCreate 129ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian adapter.setQueryString(getQueryString() == null ? "" : getQueryString()); 130ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return adapter; 131ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 132ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 133ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 134ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 135ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onItemClick(parent, view, position, id); 136ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final int adapterPosition = position - getListView().getHeaderViewsCount(); 137ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final BlockedListSearchAdapter adapter = (BlockedListSearchAdapter) getAdapter(); 138ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final int shortcutType = adapter.getShortcutTypeFromPosition(adapterPosition); 139ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final Integer blockId = (Integer) view.getTag(R.id.block_id); 140ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final String number; 141ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian switch (shortcutType) { 142ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian case DialerPhoneNumberListAdapter.SHORTCUT_INVALID: 143ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Handles click on a search result, either contact or nearby places result. 144ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian number = adapter.getPhoneNumber(adapterPosition); 145ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian blockContactNumber(number, blockId); 146ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 147ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian case DialerPhoneNumberListAdapter.SHORTCUT_BLOCK_NUMBER: 148ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Handles click on 'Block number' shortcut to add the user query as a number. 149ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian number = adapter.getQueryString(); 150ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian blockNumber(number); 151ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 152ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian default: 1538369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian LogUtil.w( 1548369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian "BlockedListSearchFragment.onItemClick", 1558369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian "ignoring unsupported shortcut type: " + shortcutType); 156ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 157ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 158ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 159ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 160ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 161ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian protected void onItemClick(int position, long id) { 162ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Prevent SearchFragment.onItemClicked from being called. 163ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 164ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 165ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private void blockNumber(final String number) { 166ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final String countryIso = GeoUtil.getCurrentCountryIso(getContext()); 167ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final OnCheckBlockedListener onCheckListener = 168ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian new OnCheckBlockedListener() { 169ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 170ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onCheckComplete(Integer id) { 171ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (id == null) { 172ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian BlockNumberDialogFragment.show( 173ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian id, 174ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian number, 175ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian countryIso, 176ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian PhoneNumberUtils.formatNumber(number, countryIso), 177ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian R.id.blocked_numbers_activity_container, 178ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getFragmentManager(), 179ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian BlockedListSearchFragment.this); 180ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } else if (id == FilteredNumberAsyncQueryHandler.INVALID_ID) { 181ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Toast.makeText( 182ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getContext(), 183ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian ContactDisplayUtils.getTtsSpannedPhoneNumber( 184ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getResources(), R.string.invalidNumber, number), 185ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Toast.LENGTH_SHORT) 186ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .show(); 187ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } else { 188ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Toast.makeText( 189ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getContext(), 190ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian ContactDisplayUtils.getTtsSpannedPhoneNumber( 191ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getResources(), R.string.alreadyBlocked, number), 192ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Toast.LENGTH_SHORT) 193ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .show(); 194ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 195ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 196ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian }; 197ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mFilteredNumberAsyncQueryHandler.isBlockedNumber(onCheckListener, number, countryIso); 198ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 199ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 200ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 201ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onFilterNumberSuccess() { 202ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Logger.get(getContext()).logInteraction(InteractionEvent.Type.BLOCK_NUMBER_MANAGEMENT_SCREEN); 203ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian goBack(); 204ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 205ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 206ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 207ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onUnfilterNumberSuccess() { 2088369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian LogUtil.e( 2098369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian "BlockedListSearchFragment.onUnfilterNumberSuccess", 2108369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian "unblocked a number from the BlockedListSearchFragment"); 211ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian goBack(); 212ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 213ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 214ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private void goBack() { 215ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Activity activity = getActivity(); 216ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (activity == null) { 217ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 218ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 219ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian activity.onBackPressed(); 220ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 221ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 222ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 223ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onChangeFilteredNumberUndo() { 224ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getAdapter().notifyDataSetChanged(); 225ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 226ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 227ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private void blockContactNumber(final String number, final Integer blockId) { 228ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (blockId != null) { 229ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Toast.makeText( 230ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getContext(), 231ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian ContactDisplayUtils.getTtsSpannedPhoneNumber( 232ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getResources(), R.string.alreadyBlocked, number), 233ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Toast.LENGTH_SHORT) 234ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .show(); 235ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 236ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 237ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 238ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian BlockNumberDialogFragment.show( 239ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian blockId, 240ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian number, 241ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian GeoUtil.getCurrentCountryIso(getContext()), 242ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian number, 243ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian R.id.blocked_numbers_activity_container, 244ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getFragmentManager(), 245ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian this); 246ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 247ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian} 248