Home | History | Annotate | Download | only in list
      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  */
     16 package com.android.contacts.list;
     17 
     18 import android.content.Intent;
     19 import android.os.Bundle;
     20 import android.text.TextUtils;
     21 import android.view.LayoutInflater;
     22 import android.view.Menu;
     23 import android.view.MenuInflater;
     24 import android.view.MenuItem;
     25 import android.view.View;
     26 import android.view.ViewGroup;
     27 
     28 import com.android.contacts.R;
     29 import com.android.contacts.group.GroupUtil;
     30 import com.android.contacts.logging.ListEvent;
     31 
     32 import java.util.List;
     33 import java.util.TreeSet;
     34 
     35 /** Displays a list of emails with check boxes. */
     36 public class MultiSelectEmailAddressesListFragment
     37         extends MultiSelectContactsListFragment<MultiSelectEmailAddressesListAdapter>{
     38 
     39     public MultiSelectEmailAddressesListFragment() {
     40         setPhotoLoaderEnabled(true);
     41         setSectionHeaderDisplayEnabled(false);
     42         setSearchMode(false);
     43         setHasOptionsMenu(true);
     44         setListType(ListEvent.ListType.PICK_EMAIL);
     45     }
     46 
     47     @Override
     48     public MultiSelectEmailAddressesListAdapter createListAdapter() {
     49         final MultiSelectEmailAddressesListAdapter adapter =
     50                 new MultiSelectEmailAddressesListAdapter(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         final long[] itemIds = getActivity().getIntent().getLongArrayExtra(
    116                 UiIntentActions.SELECTION_ITEM_LIST);
    117         final boolean[] selectedFlags = getActivity().getIntent().getBooleanArrayExtra(
    118                 UiIntentActions.SELECTION_DEFAULT_SELECTION);
    119         if (itemIds != null && selectedFlags != null && itemIds.length == selectedFlags.length) {
    120             TreeSet<Long> selectedIds = new TreeSet<>();
    121             for (int i = 0; i < itemIds.length; i++) {
    122                 if (selectedFlags[i]) {
    123                     selectedIds.add(itemIds[i]);
    124                 }
    125             }
    126             getAdapter().setSelectedContactIds(selectedIds);
    127             onSelectedContactsChanged();
    128         }
    129     }
    130 
    131     @Override
    132     protected boolean onItemLongClick(int position, long id) {
    133         return true;
    134     }
    135 
    136     @Override
    137     protected View inflateView(LayoutInflater inflater, ViewGroup container) {
    138         return inflater.inflate(com.android.contacts.R.layout.contact_list_content, null);
    139     }
    140 }
    141