1/*
2 * Copyright (C) 2016 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.contacts.list;
17
18import android.content.Intent;
19import android.os.Bundle;
20import android.text.TextUtils;
21import android.view.LayoutInflater;
22import android.view.Menu;
23import android.view.MenuInflater;
24import android.view.MenuItem;
25import android.view.View;
26import android.view.ViewGroup;
27
28import com.android.contacts.R;
29import com.android.contacts.group.GroupUtil;
30import com.android.contacts.logging.ListEvent;
31
32import java.util.List;
33import java.util.TreeSet;
34
35/** Displays a list of phone numbers with check boxes. */
36public class MultiSelectPhoneNumbersListFragment
37        extends MultiSelectContactsListFragment<MultiSelectPhoneNumbersListAdapter> {
38
39    public MultiSelectPhoneNumbersListFragment() {
40        setPhotoLoaderEnabled(true);
41        setSectionHeaderDisplayEnabled(false);
42        setSearchMode(false);
43        setHasOptionsMenu(true);
44        setListType(ListEvent.ListType.PICK_PHONE);
45    }
46
47    @Override
48    public MultiSelectPhoneNumbersListAdapter createListAdapter() {
49        final MultiSelectPhoneNumbersListAdapter adapter =
50                new MultiSelectPhoneNumbersListAdapter(getActivity());
51        adapter.setArguments(getArguments());
52        return adapter;
53    }
54
55    @Override
56    public void onCreateOptionsMenu(Menu menu, final MenuInflater inflater) {
57        super.onCreateOptionsMenu(menu, inflater);
58        inflater.inflate(R.menu.items_multi_select, menu);
59    }
60
61    @Override
62    public void onPrepareOptionsMenu(Menu menu) {
63        final MenuItem item = menu.findItem(R.id.menu_send);
64        item.setVisible(getAdapter().hasSelectedItems());
65        item.getActionView().setOnClickListener(new View.OnClickListener() {
66            @Override
67            public void onClick(View v) {
68                onOptionsItemSelected(item);
69            }
70        });
71    }
72
73    @Override
74    public void onActivityResult(int requestCode, int resultCode, Intent data) {
75        getActivity().finish();
76    }
77
78    @Override
79    public boolean onOptionsItemSelected(MenuItem item) {
80        if (item.getItemId() == R.id.menu_send) {
81            final String scheme = getActivity().getIntent().getStringExtra(
82                    UiIntentActions.SELECTION_SEND_SCHEME);
83            final String title = getActivity().getIntent().getStringExtra(
84                    UiIntentActions.SELECTION_SEND_TITLE);
85            final List<String> items = GroupUtil.getSendToDataForIds(
86                    getActivity(), getAdapter().getSelectedContactIdsArray(), scheme);
87            final String list = TextUtils.join(",", items);
88            GroupUtil.startSendToSelectionActivity(this, list, scheme, title);
89            return true;
90        }
91        return super.onOptionsItemSelected(item);
92    }
93
94    @Override
95    public View onCreateView(LayoutInflater inflater, ViewGroup container,
96            Bundle savedInstanceState) {
97        final long[] selectedIds = getActivity().getIntent().getLongArrayExtra(
98                UiIntentActions.SELECTION_DEFAULT_SELECTION);
99        if (selectedIds != null && selectedIds.length != 0) {
100            final TreeSet<Long> selectedIdsTree = new TreeSet<>();
101            for (int i = 0; i < selectedIds.length; i++) {
102                selectedIdsTree.add(selectedIds[i]);
103            }
104            getAdapter().setSelectedContactIds(selectedIdsTree);
105            onSelectedContactsChanged();
106        }
107        return super.onCreateView(inflater, container, savedInstanceState);
108    }
109
110    @Override
111    public void onStart() {
112        super.onStart();
113        displayCheckBoxes(true);
114    }
115
116    @Override
117    protected boolean onItemLongClick(int position, long id) {
118        return true;
119    }
120
121    @Override
122    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
123        return inflater.inflate(com.android.contacts.R.layout.contact_list_content, null);
124    }
125}
126