150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng/*
250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * Copyright (C) 2012 The Android Open Source Project
350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng *
450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License");
550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * you may not use this file except in compliance with the License.
650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * You may obtain a copy of the License at
750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng *
850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng *      http://www.apache.org/licenses/LICENSE-2.0
950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng *
1050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * Unless required by applicable law or agreed to in writing, software
1150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS,
1250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * See the License for the specific language governing permissions and
1450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * limitations under the License
1550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng */
1650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
1750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengpackage com.android.contacts.list;
1850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
1950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengimport android.content.Context;
2050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengimport android.database.Cursor;
2150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
2250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengimport com.android.contacts.GroupMemberLoader;
23f8ee4c0d5458e0989e1c86ace0149d2751d8d0d1Yorke Leeimport com.android.contacts.common.list.ContactEntry;
24e776d0366d5bf2f93a0cd0f14e48804e564bccf2Chiao Chengimport com.android.contacts.common.list.ContactTileAdapter;
25e776d0366d5bf2f93a0cd0f14e48804e564bccf2Chiao Chengimport com.android.contacts.common.list.ContactTileView;
2650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengimport com.google.common.collect.Lists;
2750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
2850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengimport java.util.ArrayList;
2950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
3050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng/**
3150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng * Tile adapter for groups.
3250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng */
3350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Chengpublic class GroupMemberTileAdapter extends ContactTileAdapter {
3450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
3550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    public GroupMemberTileAdapter(Context context, ContactTileView.Listener listener, int numCols) {
3650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        super(context, listener, numCols, DisplayType.GROUP_MEMBERS);
3750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
3850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
3950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    @Override
4050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    protected void bindColumnIndices() {
4150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mIdIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_ID;
4250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mLookupIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_LOOKUP_KEY;
4350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mPhotoUriIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_PHOTO_URI;
4450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mNameIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_DISPLAY_NAME_PRIMARY;
4550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mPresenceIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_PRESENCE_STATUS;
4650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mStatusIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_STATUS;
4750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
4850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
4950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    @Override
5050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    protected void saveNumFrequentsFromCursor(Cursor cursor) {
5150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        mNumFrequents = 0;
5250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
5350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
5450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    @Override
5550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    public int getItemViewType(int position) {
5650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        return ViewTypes.STARRED;
5750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
5850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
5950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    @Override
6050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    protected int getDividerPosition(Cursor cursor) {
6150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        // No divider
6250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        return -1;
6350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
6450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
6550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    @Override
6650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    public int getCount() {
6750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        if (mContactCursor == null || mContactCursor.isClosed()) {
6850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng            return 0;
6950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        }
7050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
7150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        return getRowCount(mContactCursor.getCount());
7250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
7350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
7450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    @Override
7550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    public ArrayList<ContactEntry> getItem(int position) {
7650a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        final ArrayList<ContactEntry> resultList = Lists.newArrayListWithCapacity(mColumnCount);
7750a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        int contactIndex = position * mColumnCount;
7850a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng
7950a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        for (int columnCounter = 0; columnCounter < mColumnCount; columnCounter++) {
8050a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng            resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
8150a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng            contactIndex++;
8250a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        }
8350a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng        return resultList;
8450a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng    }
8550a7deaf3b45211807ef2319810edaa2b5d85db3Chiao Cheng}
86