Loading src/com/android/contacts/GroupMemberLoader.java +50 −39 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ package com.android.contacts; import com.android.contacts.list.ContactListAdapter; import com.android.contacts.preference.ContactsPreferences; import android.content.Context; Loading @@ -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()); Loading src/com/android/contacts/group/GroupDetailFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading src/com/android/contacts/group/GroupEditorFragment.java +7 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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)); } Loading src/com/android/contacts/list/ContactTileAdapter.java +8 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading
src/com/android/contacts/GroupMemberLoader.java +50 −39 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ package com.android.contacts; import com.android.contacts.list.ContactListAdapter; import com.android.contacts.preference.ContactsPreferences; import android.content.Context; Loading @@ -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()); Loading
src/com/android/contacts/group/GroupDetailFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
src/com/android/contacts/group/GroupEditorFragment.java +7 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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)); } Loading
src/com/android/contacts/list/ContactTileAdapter.java +8 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading