121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra/* 221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * Copyright (C) 2015 The Android Open Source Project 321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * 421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * Licensed under the Apache License, Version 2.0 (the "License"); 521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * you may not use this file except in compliance with the License. 621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * You may obtain a copy of the License at 721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * 821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * http://www.apache.org/licenses/LICENSE-2.0 921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * 1021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * Unless required by applicable law or agreed to in writing, software 1121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * distributed under the License is distributed on an "AS IS" BASIS, 1221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * See the License for the specific language governing permissions and 1421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra * limitations under the License. 1521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra */ 1621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodrapackage com.android.dialer.app.filterednumber; 1721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 1821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.app.ListFragment; 1921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.app.LoaderManager; 2021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.content.Context; 2121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.content.CursorLoader; 2221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.content.Loader; 2321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.database.Cursor; 2421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.os.Bundle; 2521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.provider.ContactsContract.CommonDataKinds.Phone; 2621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.support.v7.app.ActionBar; 2721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.support.v7.app.AppCompatActivity; 2821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.view.LayoutInflater; 2921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.view.View; 3021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport android.view.ViewGroup; 3121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport com.android.dialer.app.R; 3221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport com.android.dialer.blocking.FilteredNumbersUtil; 3321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodraimport com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener; 3421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 3521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra/** TODO(calderwoodra): documentation */ 3621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodrapublic class ViewNumbersToImportFragment extends ListFragment 3721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra implements LoaderManager.LoaderCallbacks<Cursor>, View.OnClickListener { 3821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 39183cb71663320f16149d83eeebaff7795a4b55f2linyuh private ViewNumbersToImportAdapter adapter; 4021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 4121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 4221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public Context getContext() { 4321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra return getActivity(); 4421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 4521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 4621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 4721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onActivityCreated(Bundle savedInstanceState) { 4821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra super.onActivityCreated(savedInstanceState); 4921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 50183cb71663320f16149d83eeebaff7795a4b55f2linyuh if (adapter == null) { 51183cb71663320f16149d83eeebaff7795a4b55f2linyuh adapter = 5221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra ViewNumbersToImportAdapter.newViewNumbersToImportAdapter( 5321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getContext(), getActivity().getFragmentManager()); 5421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 55183cb71663320f16149d83eeebaff7795a4b55f2linyuh setListAdapter(adapter); 5621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 5721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 5821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 5921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onDestroy() { 6021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra setListAdapter(null); 6121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra super.onDestroy(); 6221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 6321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 6421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 6521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onCreate(Bundle savedInstanceState) { 6621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra super.onCreate(savedInstanceState); 6721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getLoaderManager().initLoader(0, null, this); 6821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 6921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 7021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 7121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onResume() { 7221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra super.onResume(); 7321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 7421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); 7521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra actionBar.setTitle(R.string.import_send_to_voicemail_numbers_label); 7621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra actionBar.setDisplayShowCustomEnabled(false); 7721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra actionBar.setDisplayHomeAsUpEnabled(true); 7821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra actionBar.setDisplayShowHomeEnabled(true); 7921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra actionBar.setDisplayShowTitleEnabled(true); 8021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 8121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getActivity().findViewById(R.id.cancel_button).setOnClickListener(this); 8221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getActivity().findViewById(R.id.import_button).setOnClickListener(this); 8321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 8421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 8521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 8621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public View onCreateView( 8721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 8821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra return inflater.inflate(R.layout.view_numbers_to_import_fragment, container, false); 8921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 9021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 9121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 9221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public Loader<Cursor> onCreateLoader(int id, Bundle args) { 9321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra final CursorLoader cursorLoader = 9421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra new CursorLoader( 9521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getContext(), 9621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra Phone.CONTENT_URI, 9721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra FilteredNumbersUtil.PhoneQuery.PROJECTION, 9821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra FilteredNumbersUtil.PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE, 9921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra null, 10021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra null); 10121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra return cursorLoader; 10221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 10321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 10421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 10521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 106183cb71663320f16149d83eeebaff7795a4b55f2linyuh adapter.swapCursor(data); 10721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 10821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 10921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 11021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onLoaderReset(Loader<Cursor> loader) { 111183cb71663320f16149d83eeebaff7795a4b55f2linyuh adapter.swapCursor(null); 11221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 11321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra 11421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 11521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onClick(final View view) { 11621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra if (view.getId() == R.id.import_button) { 11721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra FilteredNumbersUtil.importSendToVoicemailContacts( 11821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getContext(), 11921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra new ImportSendToVoicemailContactsListener() { 12021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra @Override 12121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra public void onImportComplete() { 12221e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra if (getActivity() != null) { 12321e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getActivity().onBackPressed(); 12421e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 12521e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 12621e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra }); 12721e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } else if (view.getId() == R.id.cancel_button) { 12821e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra getActivity().onBackPressed(); 12921e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 13021e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra } 13121e24b6d9355e5e64a594b3b32cb4c8301e3330bcalderwoodra} 132