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