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