Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47f0263b authored by Daisuke Miyakawa's avatar Daisuke Miyakawa Committed by Android (Google) Code Review
Browse files

Merge "Reduce the number of columns for group queries" into ics-mr1

parents 18e2b6f4 a9393726
Loading
Loading
Loading
Loading
+50 −39
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 */
package com.android.contacts;

import com.android.contacts.list.ContactListAdapter;
import com.android.contacts.preference.ContactsPreferences;

import android.content.Context;
@@ -35,51 +34,63 @@ import java.util.List;
 */
public final class GroupMemberLoader extends CursorLoader {

    /**
     * Projection map is taken from {@link ContactListAdapter}
     */
    private static final String[] PROJECTION_DATA = new String[] {
        // TODO: Pull Projection_data out into util class
    public static class GroupEditorQuery {
        private static final String[] PROJECTION = new String[] {
            Data.CONTACT_ID,                        // 0
            Data.RAW_CONTACT_ID,                    // 1
            Data.DISPLAY_NAME_PRIMARY,              // 2
        Data.DISPLAY_NAME_ALTERNATIVE,          // 3
        Data.SORT_KEY_PRIMARY,                  // 4
        Data.STARRED,                           // 5
        Data.CONTACT_PRESENCE,                  // 6
        Data.CONTACT_CHAT_CAPABILITY,           // 7
        Data.PHOTO_ID,                          // 8
        Data.PHOTO_URI,                         // 9
        Data.PHOTO_THUMBNAIL_URI,               // 10
        Data.LOOKUP_KEY,                        // 11
        Data.PHONETIC_NAME,                     // 12
        Data.HAS_PHONE_NUMBER,                  // 13
        Data.CONTACT_STATUS,                    // 14
            Data.PHOTO_URI,                         // 3
            Data.LOOKUP_KEY,                        // 4
        };

        public static final int CONTACT_ID                   = 0;
        public static final int RAW_CONTACT_ID               = 1;
        public static final int CONTACT_DISPLAY_NAME_PRIMARY = 2;
        public static final int CONTACT_PHOTO_URI            = 3;
        public static final int CONTACT_LOOKUP_KEY           = 4;
    }

    public static class GroupDetailQuery {
        private static final String[] PROJECTION = new String[] {
            Data.PHOTO_ID,                          // 0
            Data.PHOTO_URI,                         // 1
            Data.LOOKUP_KEY,                        // 2
            Data.DISPLAY_NAME_PRIMARY,              // 3
            Data.CONTACT_PRESENCE,                  // 4
            Data.CONTACT_STATUS,                    // 5
        };

        public static final int CONTACT_PHOTO_ID             = 0;
        public static final int CONTACT_PHOTO_URI            = 1;
        public static final int CONTACT_LOOKUP_KEY           = 2;
        public static final int CONTACT_DISPLAY_NAME_PRIMARY = 3;
        public static final int CONTACT_PRESENCE_STATUS      = 4;
        public static final int CONTACT_STATUS               = 5;
    }

    private final long mGroupId;

    public static final int CONTACT_ID_COLUMN_INDEX = 0;
    public static final int RAW_CONTACT_ID_COLUMN_INDEX = 1;
    public static final int CONTACT_DISPLAY_NAME_PRIMARY_COLUMN_INDEX = 2;
    public static final int CONTACT_DISPLAY_NAME_ALTERNATIVE_COLUMN_INDEX = 3;
    public static final int CONTACT_SORT_KEY_PRIMARY_COLUMN_INDEX = 4;
    public static final int CONTACT_STARRED_COLUMN_INDEX = 5;
    public static final int CONTACT_PRESENCE_STATUS_COLUMN_INDEX = 6;
    public static final int CONTACT_CHAT_CAPABILITY_COLUMN_INDEX = 7;
    public static final int CONTACT_PHOTO_ID_COLUMN_INDEX = 8;
    public static final int CONTACT_PHOTO_URI_COLUMN_INDEX = 9;
    public static final int CONTACT_PHOTO_THUMBNAIL_URI_COLUMN_INDEX = 10;
    public static final int CONTACT_LOOKUP_KEY_COLUMN_INDEX = 11;
    public static final int CONTACT_PHONETIC_NAME_COLUMN_INDEX = 12;
    public static final int CONTACT_HAS_PHONE_COLUMN_INDEX = 13;
    public static final int CONTACT_STATUS_COLUMN_INDEX = 14;

    public GroupMemberLoader(Context context, long groupId) {
    /**
     * @return GroupMemberLoader object which can be used in group editor.
     */
    public static GroupMemberLoader constructLoaderForGroupEditorQuery(
            Context context, long groupId) {
        return new GroupMemberLoader(context, groupId, GroupEditorQuery.PROJECTION);
    }

    /**
     * @return GroupMemberLoader object used in group detail page.
     */
    public static GroupMemberLoader constructLoaderForGroupDetailQuery(
            Context context, long groupId) {
        return new GroupMemberLoader(context, groupId, GroupDetailQuery.PROJECTION);
    }

    private GroupMemberLoader(Context context, long groupId, String[] projection) {
        super(context);
        mGroupId = groupId;
        setUri(createUri());
        setProjection(PROJECTION_DATA);
        setProjection(projection);
        setSelection(createSelection());
        setSelectionArgs(createSelectionArgs());

+1 −1
Original line number Diff line number Diff line
@@ -254,7 +254,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {

        @Override
        public CursorLoader onCreateLoader(int id, Bundle args) {
            return new GroupMemberLoader(mContext, mGroupId);
            return GroupMemberLoader.constructLoaderForGroupDetailQuery(mContext, mGroupId);
        }

        @Override
+7 −9
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.contacts.group;
import com.android.contacts.ContactPhotoManager;
import com.android.contacts.ContactSaveService;
import com.android.contacts.GroupMemberLoader;
import com.android.contacts.GroupMemberLoader.GroupEditorQuery;
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
import com.android.contacts.activities.GroupEditorActivity;
@@ -781,7 +782,7 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog

        @Override
        public CursorLoader onCreateLoader(int id, Bundle args) {
            return new GroupMemberLoader(mContext, mGroupId);
            return GroupMemberLoader.constructLoaderForGroupEditorQuery(mContext, mGroupId);
        }

        @Override
@@ -789,14 +790,11 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog
            List<Member> listExistingMembers = new ArrayList<Member>();
            data.moveToPosition(-1);
            while (data.moveToNext()) {
                long contactId = data.getLong(GroupMemberLoader.CONTACT_ID_COLUMN_INDEX);
                long rawContactId = data.getLong(GroupMemberLoader.RAW_CONTACT_ID_COLUMN_INDEX);
                String lookupKey = data.getString(
                        GroupMemberLoader.CONTACT_LOOKUP_KEY_COLUMN_INDEX);
                String displayName = data.getString(
                        GroupMemberLoader.CONTACT_DISPLAY_NAME_PRIMARY_COLUMN_INDEX);
                String photoUri = data.getString(
                        GroupMemberLoader.CONTACT_PHOTO_URI_COLUMN_INDEX);
                long contactId = data.getLong(GroupEditorQuery.CONTACT_ID);
                long rawContactId = data.getLong(GroupEditorQuery.RAW_CONTACT_ID);
                String lookupKey = data.getString(GroupEditorQuery.CONTACT_LOOKUP_KEY);
                String displayName = data.getString(GroupEditorQuery.CONTACT_DISPLAY_NAME_PRIMARY);
                String photoUri = data.getString(GroupEditorQuery.CONTACT_PHOTO_URI);
                listExistingMembers.add(new Member(rawContactId, lookupKey, contactId,
                        displayName, photoUri));
            }
+8 −8
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ import com.android.contacts.ContactStatusUtil;
import com.android.contacts.ContactTileLoaderFactory;
import com.android.contacts.ContactsUtils;
import com.android.contacts.GroupMemberLoader;
import com.android.contacts.GroupMemberLoader.GroupDetailQuery;
import com.android.contacts.R;
import com.android.contacts.list.ContactTileAdapter.DisplayType;

import android.content.ContentUris;
import android.content.Context;
@@ -36,7 +38,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.TextView;

import java.util.ArrayList;

@@ -156,13 +157,12 @@ public class ContactTileAdapter extends BaseAdapter {
         * the correct {@link Cursor}s will be given.
         */
        if (mDisplayType == DisplayType.GROUP_MEMBERS) {
            mIdIndex = GroupMemberLoader.CONTACT_PHOTO_ID_COLUMN_INDEX;
            mLookupIndex = GroupMemberLoader.CONTACT_LOOKUP_KEY_COLUMN_INDEX;
            mPhotoUriIndex = GroupMemberLoader.CONTACT_PHOTO_URI_COLUMN_INDEX;
            mNameIndex = GroupMemberLoader.CONTACT_DISPLAY_NAME_PRIMARY_COLUMN_INDEX;
            mStarredIndex = GroupMemberLoader.CONTACT_STARRED_COLUMN_INDEX;
            mPresenceIndex = GroupMemberLoader.CONTACT_PRESENCE_STATUS_COLUMN_INDEX;
            mStatusIndex = GroupMemberLoader.CONTACT_STATUS_COLUMN_INDEX;
            mIdIndex = GroupDetailQuery.CONTACT_PHOTO_ID;
            mLookupIndex = GroupDetailQuery.CONTACT_LOOKUP_KEY;
            mPhotoUriIndex = GroupDetailQuery.CONTACT_PHOTO_URI;
            mNameIndex = GroupDetailQuery.CONTACT_DISPLAY_NAME_PRIMARY;
            mPresenceIndex = GroupDetailQuery.CONTACT_PRESENCE_STATUS;
            mStatusIndex = GroupDetailQuery.CONTACT_STATUS;
        } else {
            mIdIndex = ContactTileLoaderFactory.CONTACT_ID;
            mLookupIndex = ContactTileLoaderFactory.LOOKUP_KEY;