1ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford/*
2ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * Copyright (C) 2016 The Android Open Source Project
3ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford *
4ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * Licensed under the Apache License, Version 2.0 (the "License");
5ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * you may not use this file except in compliance with the License.
6ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * You may obtain a copy of the License at
7ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford *
8ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford *      http://www.apache.org/licenses/LICENSE-2.0
9ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford *
10ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * Unless required by applicable law or agreed to in writing, software
11ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * distributed under the License is distributed on an "AS IS" BASIS,
12ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * See the License for the specific language governing permissions and
14ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford * limitations under the License.
15ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford */
16ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midfordpackage com.android.contacts.list;
17ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
18b460f44f6517f269bac35f339f57e603669f45d7Sean Midfordimport android.content.Intent;
194b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midfordimport android.os.Bundle;
209970f301c1944c3d8155e1718ac34abbe8f69199Sean Midfordimport android.text.TextUtils;
21ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midfordimport android.view.LayoutInflater;
22b460f44f6517f269bac35f339f57e603669f45d7Sean Midfordimport android.view.Menu;
23b460f44f6517f269bac35f339f57e603669f45d7Sean Midfordimport android.view.MenuInflater;
24b460f44f6517f269bac35f339f57e603669f45d7Sean Midfordimport android.view.MenuItem;
25ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midfordimport android.view.View;
26ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midfordimport android.view.ViewGroup;
27ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
28b460f44f6517f269bac35f339f57e603669f45d7Sean Midfordimport com.android.contacts.R;
299970f301c1944c3d8155e1718ac34abbe8f69199Sean Midfordimport com.android.contacts.group.GroupUtil;
300a49afa2ad697307cc04ef4cb86570574fa720f2Gary Maiimport com.android.contacts.logging.ListEvent;
31ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
329970f301c1944c3d8155e1718ac34abbe8f69199Sean Midfordimport java.util.List;
334b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midfordimport java.util.TreeSet;
344b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford
35ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford/** Displays a list of phone numbers with check boxes. */
36ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midfordpublic class MultiSelectPhoneNumbersListFragment
37ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        extends MultiSelectContactsListFragment<MultiSelectPhoneNumbersListAdapter> {
38ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
39ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    public MultiSelectPhoneNumbersListFragment() {
40ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        setPhotoLoaderEnabled(true);
4185405d033aab3d6b5858ba0beb1e14acdca6b9a7Sean Midford        setSectionHeaderDisplayEnabled(false);
42ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        setSearchMode(false);
43b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        setHasOptionsMenu(true);
44ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        setListType(ListEvent.ListType.PICK_PHONE);
45ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    }
46ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
47ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    @Override
48ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    public MultiSelectPhoneNumbersListAdapter createListAdapter() {
49ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        final MultiSelectPhoneNumbersListAdapter adapter =
50ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford                new MultiSelectPhoneNumbersListAdapter(getActivity());
51ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        adapter.setArguments(getArguments());
52ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        return adapter;
53ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    }
54ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
55ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    @Override
56b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    public void onCreateOptionsMenu(Menu menu, final MenuInflater inflater) {
57b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        super.onCreateOptionsMenu(menu, inflater);
58b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        inflater.inflate(R.menu.items_multi_select, menu);
59b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    }
60b460f44f6517f269bac35f339f57e603669f45d7Sean Midford
61b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    @Override
62b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    public void onPrepareOptionsMenu(Menu menu) {
63b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        final MenuItem item = menu.findItem(R.id.menu_send);
64b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        item.setVisible(getAdapter().hasSelectedItems());
65b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        item.getActionView().setOnClickListener(new View.OnClickListener() {
66b460f44f6517f269bac35f339f57e603669f45d7Sean Midford            @Override
67b460f44f6517f269bac35f339f57e603669f45d7Sean Midford            public void onClick(View v) {
68b460f44f6517f269bac35f339f57e603669f45d7Sean Midford                onOptionsItemSelected(item);
69b460f44f6517f269bac35f339f57e603669f45d7Sean Midford            }
70b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        });
71b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    }
72b460f44f6517f269bac35f339f57e603669f45d7Sean Midford
73b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    @Override
749970f301c1944c3d8155e1718ac34abbe8f69199Sean Midford    public void onActivityResult(int requestCode, int resultCode, Intent data) {
759970f301c1944c3d8155e1718ac34abbe8f69199Sean Midford        getActivity().finish();
769970f301c1944c3d8155e1718ac34abbe8f69199Sean Midford    }
779970f301c1944c3d8155e1718ac34abbe8f69199Sean Midford
789970f301c1944c3d8155e1718ac34abbe8f69199Sean Midford    @Override
79b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    public boolean onOptionsItemSelected(MenuItem item) {
80b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott        if (item.getItemId() == R.id.menu_send) {
81b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott            final String scheme = getActivity().getIntent().getStringExtra(
82b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott                    UiIntentActions.SELECTION_SEND_SCHEME);
83b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott            final String title = getActivity().getIntent().getStringExtra(
84b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott                    UiIntentActions.SELECTION_SEND_TITLE);
85b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott            final List<String> items = GroupUtil.getSendToDataForIds(
86b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott                    getActivity(), getAdapter().getSelectedContactIdsArray(), scheme);
87b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott            final String list = TextUtils.join(",", items);
88b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott            GroupUtil.startSendToSelectionActivity(this, list, scheme, title);
89b697ed768fb817f94524f6c3992547665df331c4Marcus Hagerott            return true;
90b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        }
91b460f44f6517f269bac35f339f57e603669f45d7Sean Midford        return super.onOptionsItemSelected(item);
92b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    }
93b460f44f6517f269bac35f339f57e603669f45d7Sean Midford
94b460f44f6517f269bac35f339f57e603669f45d7Sean Midford    @Override
954b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford    public View onCreateView(LayoutInflater inflater, ViewGroup container,
964b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford            Bundle savedInstanceState) {
974b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford        final long[] selectedIds = getActivity().getIntent().getLongArrayExtra(
984b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford                UiIntentActions.SELECTION_DEFAULT_SELECTION);
994b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford        if (selectedIds != null && selectedIds.length != 0) {
1004b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford            final TreeSet<Long> selectedIdsTree = new TreeSet<>();
1014b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford            for (int i = 0; i < selectedIds.length; i++) {
1024b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford                selectedIdsTree.add(selectedIds[i]);
1034b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford            }
1044b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford            getAdapter().setSelectedContactIds(selectedIdsTree);
1054b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford            onSelectedContactsChanged();
1064b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford        }
1074b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford        return super.onCreateView(inflater, container, savedInstanceState);
1084b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford    }
1094b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford
1104b2ccd27dbb05d7cc1d340ce18182ccb2b9a3326Sean Midford    @Override
111ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    public void onStart() {
112ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        super.onStart();
113ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        displayCheckBoxes(true);
114ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    }
115ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
116ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    @Override
117ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    protected boolean onItemLongClick(int position, long id) {
118ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford        return true;
119ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    }
120ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford
121ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    @Override
122ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
1233f6a2444e0134b7380cdb2e13abf4bf1163336d0Arthur Wang        return inflater.inflate(com.android.contacts.R.layout.contact_list_content, null);
124ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford    }
125ff6f1bb6782fe92b8745ef4acb6c622fef3d0cbcSean Midford}
126