1/* 2 * Copyright (C) 2015 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 */ 16package com.android.dialer.filterednumber; 17 18import android.app.ListFragment; 19import android.app.LoaderManager; 20import android.content.Context; 21import android.content.CursorLoader; 22import android.content.Loader; 23import android.database.Cursor; 24import android.os.AsyncTask; 25import android.os.Bundle; 26import android.provider.ContactsContract.CommonDataKinds.Phone; 27import android.provider.ContactsContract.Contacts; 28import android.support.v7.app.ActionBar; 29import android.support.v7.app.AppCompatActivity; 30import android.text.TextUtils; 31import android.util.Log; 32import android.view.LayoutInflater; 33import android.view.View; 34import android.view.ViewGroup; 35 36import com.android.dialer.R; 37import com.android.dialer.database.FilteredNumberContract; 38import com.android.dialer.filterednumber.FilteredNumbersUtil.ImportSendToVoicemailContactsListener; 39 40public class ViewNumbersToImportFragment extends ListFragment 41 implements LoaderManager.LoaderCallbacks<Cursor>, 42 View.OnClickListener { 43 44 private ViewNumbersToImportAdapter mAdapter; 45 46 @Override 47 public Context getContext() { 48 return getActivity(); 49 } 50 51 @Override 52 public void onActivityCreated(Bundle savedInstanceState) { 53 super.onActivityCreated(savedInstanceState); 54 55 if (mAdapter == null) { 56 mAdapter = ViewNumbersToImportAdapter.newViewNumbersToImportAdapter( 57 getContext(), getActivity().getFragmentManager()); 58 } 59 setListAdapter(mAdapter); 60 } 61 62 @Override 63 public void onDestroy() { 64 setListAdapter(null); 65 super.onDestroy(); 66 } 67 68 @Override 69 public void onCreate(Bundle savedInstanceState) { 70 super.onCreate(savedInstanceState); 71 getLoaderManager().initLoader(0, null, this); 72 } 73 74 @Override 75 public void onResume() { 76 super.onResume(); 77 78 ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); 79 actionBar.setTitle(R.string.import_send_to_voicemail_numbers_label); 80 actionBar.setDisplayShowCustomEnabled(false); 81 actionBar.setDisplayHomeAsUpEnabled(true); 82 actionBar.setDisplayShowHomeEnabled(true); 83 actionBar.setDisplayShowTitleEnabled(true); 84 85 getActivity().findViewById(R.id.cancel_button).setOnClickListener(this); 86 getActivity().findViewById(R.id.import_button).setOnClickListener(this); 87 } 88 89 @Override 90 public View onCreateView( 91 LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 92 return inflater.inflate(R.layout.view_numbers_to_import_fragment, container, false); 93 } 94 95 @Override 96 public Loader<Cursor> onCreateLoader(int id, Bundle args) { 97 final CursorLoader cursorLoader = new CursorLoader( 98 getContext(), 99 Phone.CONTENT_URI, 100 FilteredNumbersUtil.PhoneQuery.PROJECTION, 101 FilteredNumbersUtil.PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE, 102 null, 103 null); 104 return cursorLoader; 105 } 106 107 @Override 108 public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 109 mAdapter.swapCursor(data); 110 } 111 112 @Override 113 public void onLoaderReset(Loader<Cursor> loader) { 114 mAdapter.swapCursor(null); 115 } 116 117 @Override 118 public void onClick(final View view) { 119 if (view.getId() == R.id.import_button) { 120 FilteredNumbersUtil.importSendToVoicemailContacts(getContext(), 121 new ImportSendToVoicemailContactsListener() { 122 @Override 123 public void onImportComplete() { 124 if (getActivity() != null) { 125 getActivity().onBackPressed(); 126 } 127 } 128 }); 129 } else if (view.getId() == R.id.cancel_button) { 130 getActivity().onBackPressed(); 131 } 132 } 133} 134