ContactBrowseListFragment.java revision 416b569901ce4c577c1f76c3f29496d1adab29e1
1/*
2 * Copyright (C) 2010 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 com.android.contacts.ContactsListActivity;
19import com.android.contacts.R;
20
21import android.content.Intent;
22import android.net.Uri;
23import android.view.LayoutInflater;
24import android.view.View;
25import android.view.ViewGroup;
26
27/**
28 * Fragment containing a contact list used for browsing (as compared to
29 * picking a contact with one of the PICK intents).
30 */
31public class ContactBrowseListFragment extends ContactEntryListFragment {
32
33    private OnContactBrowserActionListener mListener;
34    private boolean mEditMode;
35    private boolean mCreateContactEnabled;
36
37    public void setOnContactListActionListener(OnContactBrowserActionListener listener) {
38        mListener = listener;
39    }
40
41    public boolean isSearchAllContactsItemPosition(int position) {
42        return isSearchMode() && position == getAdapter().getCount() - 1;
43    }
44
45    @Override
46    protected void onItemClick(int position, long id) {
47        if (isSearchAllContactsItemPosition(position)) {
48            mListener.onSearchAllContactsAction((String)null);
49        } else if (isEditMode()) {
50            if (position == 0 && !isSearchMode() && isCreateContactEnabled()) {
51                mListener.onCreateNewContactAction();
52            } else {
53                ContactEntryListAdapter adapter = getAdapter();
54                adapter.moveToPosition(position);
55                mListener.onEditContactAction(adapter.getContactUri());
56            }
57        } else {
58            ContactEntryListAdapter adapter = getAdapter();
59            adapter.moveToPosition(position);
60            mListener.onViewContactAction(adapter.getContactUri());
61        }
62    }
63
64    @Override
65    protected ContactEntryListAdapter createListAdapter() {
66        ContactItemListAdapter adapter =
67                new ContactItemListAdapter((ContactsListActivity)getActivity());
68        adapter.setSectionHeaderDisplayEnabled(isSectionHeaderDisplayEnabled());
69        adapter.setDisplayPhotos(isPhotoLoaderEnabled());
70        return adapter;
71    }
72
73    @Override
74    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
75        if (isSearchMode()) {
76            return inflater.inflate(R.layout.contacts_search_content, null);
77        } else if (isSearchResultsMode()) {
78            return inflater.inflate(R.layout.contacts_list_search_results, null);
79        } else {
80            return inflater.inflate(R.layout.contacts_list_content, null);
81        }
82    }
83
84    public void setEditMode(boolean flag) {
85        mEditMode = flag;
86    }
87
88    public boolean isEditMode() {
89        return mEditMode;
90    }
91
92    public void setCreateContactEnabled(boolean flag) {
93        this.mCreateContactEnabled = flag;
94    }
95
96    public boolean isCreateContactEnabled() {
97        return mCreateContactEnabled;
98    }
99
100    public void viewContact(Uri contactUri) {
101        mListener.onViewContactAction(contactUri);
102    }
103
104    public void editContact(Uri contactUri) {
105        mListener.onEditContactAction(contactUri);
106    }
107
108    public void deleteContact(Uri contactUri) {
109        mListener.onDeleteContactAction(contactUri);
110    }
111
112    public void addToFavorites(Uri contactUri) {
113        mListener.onAddToFavoritesAction(contactUri);
114    }
115
116    public void removeFromFavorites(Uri contactUri) {
117        mListener.onRemoveFromFavoritesAction(contactUri);
118    }
119
120    public void callContact(Uri contactUri) {
121        mListener.onCallContactAction(contactUri);
122    }
123
124    public void smsContact(Uri contactUri) {
125        mListener.onSmsContactAction(contactUri);
126    }
127}
128