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