Loading src/com/android/contacts/GroupListLoader.java +6 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ public final class GroupListLoader extends CursorLoader { Groups._ID, Groups.TITLE, Groups.SUMMARY_COUNT, Groups.GROUP_IS_READ_ONLY, Groups.SYSTEM_ID, }; public final static int ACCOUNT_NAME = 0; Loading @@ -48,16 +50,18 @@ public final class GroupListLoader extends CursorLoader { public final static int GROUP_ID = 3; public final static int TITLE = 4; public final static int MEMBER_COUNT = 5; public final static int IS_READ_ONLY = 6; public final static int SYSTEM_ID = 7; private static final Uri GROUP_LIST_URI = Groups.CONTENT_SUMMARY_URI; public GroupListLoader(Context context) { // Sort groups from all accounts alphabettically and in a localized way. super(context, GROUP_LIST_URI, COLUMNS, DEFAULT_SELECTION, null, Groups.ACCOUNT_TYPE + ", " + Groups.ACCOUNT_NAME + ", " + Groups.DATA_SET + ", " + Groups.TITLE + " COLLATE NOCASE ASC"); Groups.TITLE + " COLLATE LOCALIZED ASC"); } } src/com/android/contacts/activities/PeopleActivity.java +3 −0 Original line number Diff line number Diff line Loading @@ -929,6 +929,9 @@ public class PeopleActivity extends AppCompatContactsActivity implements if (groupListItems != null) { // Add each group for (GroupListItem groupListItem : groupListItems) { if (GroupUtil.isEmptyFFCGroup(groupListItem)) { continue; } final String title = groupListItem.getTitle(); final MenuItem menuItem = subMenu.add(R.id.nav_groups_items, Menu.NONE, Menu.NONE, title); Loading src/com/android/contacts/group/GroupListItem.java +14 −1 Original line number Diff line number Diff line Loading @@ -27,9 +27,12 @@ public final class GroupListItem { private final String mTitle; private final boolean mIsFirstGroupInAccount; private final int mMemberCount; private final boolean mIsReadOnly; private final String mSystemId; public GroupListItem(String accountName, String accountType, String dataSet, long groupId, String title, boolean isFirstGroupInAccount, int memberCount) { String title, boolean isFirstGroupInAccount, int memberCount, boolean isReadOnly, String systemId) { mAccountName = accountName; mAccountType = accountType; mDataSet = dataSet; Loading @@ -37,6 +40,8 @@ public final class GroupListItem { mTitle = title; mIsFirstGroupInAccount = isFirstGroupInAccount; mMemberCount = memberCount; mIsReadOnly = isReadOnly; mSystemId = systemId; } public String getAccountName() { Loading Loading @@ -70,4 +75,12 @@ public final class GroupListItem { public boolean isFirstGroupInAccount() { return mIsFirstGroupInAccount; } public boolean isReadOnly() { return mIsReadOnly; } public String getSystemId() { return mSystemId; } } No newline at end of file src/com/android/contacts/group/GroupUtil.java +28 −1 Original line number Diff line number Diff line Loading @@ -22,14 +22,20 @@ import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract.Groups; import android.text.TextUtils; import android.widget.ImageView; import com.android.contacts.GroupListLoader; import com.android.contacts.activities.GroupMembersActivity; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; import com.android.contacts.common.model.account.GoogleAccountType; import com.google.common.base.Objects; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * Group utility methods. */ Loading @@ -38,6 +44,10 @@ public final class GroupUtil { private static final String LEGACY_CONTACTS_AUTHORITY = "contacts"; private static final String LEGACY_CONTACTS_URI = "content://contacts/groups"; // System IDs of FFC groups in Google accounts private static final Set<String> FFC_GROUPS = new HashSet(Arrays.asList("Friends", "Family", "Coworkers")); private GroupUtil() { } Loading @@ -52,6 +62,8 @@ public final class GroupUtil { long groupId = cursor.getLong(GroupListLoader.GROUP_ID); String title = cursor.getString(GroupListLoader.TITLE); int memberCount = cursor.getInt(GroupListLoader.MEMBER_COUNT); boolean isReadOnly = cursor.getInt(GroupListLoader.IS_READ_ONLY) == 1; String systemId = cursor.getString(GroupListLoader.SYSTEM_ID); // Figure out if this is the first group for this account name / account type pair by // checking the previous entry. This is to determine whether or not we need to display an Loading @@ -71,7 +83,7 @@ public final class GroupUtil { } return new GroupListItem(accountName, accountType, dataSet, groupId, title, isFirstGroupInAccount, memberCount); isFirstGroupInAccount, memberCount, isReadOnly, systemId); } /** Loading Loading @@ -122,4 +134,19 @@ public final class GroupUtil { final Uri legacyContentUri = Uri.parse(LEGACY_CONTACTS_URI); return ContentUris.withAppendedId(legacyContentUri, groupId); } /** * Returns true if it's an empty and read-only group of a Google account and the system ID of * the group is one of "Friends", "Family" and "Coworkers". */ public static boolean isEmptyFFCGroup(GroupListItem groupListItem) { return GoogleAccountType.ACCOUNT_TYPE.equals(groupListItem.getAccountType()) && groupListItem.isReadOnly() && isSystemIdFFC(groupListItem.getSystemId()) && (groupListItem.getMemberCount() <= 0); } private static boolean isSystemIdFFC(String systemId) { return !TextUtils.isEmpty(systemId) && FFC_GROUPS.contains(systemId); } } No newline at end of file Loading
src/com/android/contacts/GroupListLoader.java +6 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ public final class GroupListLoader extends CursorLoader { Groups._ID, Groups.TITLE, Groups.SUMMARY_COUNT, Groups.GROUP_IS_READ_ONLY, Groups.SYSTEM_ID, }; public final static int ACCOUNT_NAME = 0; Loading @@ -48,16 +50,18 @@ public final class GroupListLoader extends CursorLoader { public final static int GROUP_ID = 3; public final static int TITLE = 4; public final static int MEMBER_COUNT = 5; public final static int IS_READ_ONLY = 6; public final static int SYSTEM_ID = 7; private static final Uri GROUP_LIST_URI = Groups.CONTENT_SUMMARY_URI; public GroupListLoader(Context context) { // Sort groups from all accounts alphabettically and in a localized way. super(context, GROUP_LIST_URI, COLUMNS, DEFAULT_SELECTION, null, Groups.ACCOUNT_TYPE + ", " + Groups.ACCOUNT_NAME + ", " + Groups.DATA_SET + ", " + Groups.TITLE + " COLLATE NOCASE ASC"); Groups.TITLE + " COLLATE LOCALIZED ASC"); } }
src/com/android/contacts/activities/PeopleActivity.java +3 −0 Original line number Diff line number Diff line Loading @@ -929,6 +929,9 @@ public class PeopleActivity extends AppCompatContactsActivity implements if (groupListItems != null) { // Add each group for (GroupListItem groupListItem : groupListItems) { if (GroupUtil.isEmptyFFCGroup(groupListItem)) { continue; } final String title = groupListItem.getTitle(); final MenuItem menuItem = subMenu.add(R.id.nav_groups_items, Menu.NONE, Menu.NONE, title); Loading
src/com/android/contacts/group/GroupListItem.java +14 −1 Original line number Diff line number Diff line Loading @@ -27,9 +27,12 @@ public final class GroupListItem { private final String mTitle; private final boolean mIsFirstGroupInAccount; private final int mMemberCount; private final boolean mIsReadOnly; private final String mSystemId; public GroupListItem(String accountName, String accountType, String dataSet, long groupId, String title, boolean isFirstGroupInAccount, int memberCount) { String title, boolean isFirstGroupInAccount, int memberCount, boolean isReadOnly, String systemId) { mAccountName = accountName; mAccountType = accountType; mDataSet = dataSet; Loading @@ -37,6 +40,8 @@ public final class GroupListItem { mTitle = title; mIsFirstGroupInAccount = isFirstGroupInAccount; mMemberCount = memberCount; mIsReadOnly = isReadOnly; mSystemId = systemId; } public String getAccountName() { Loading Loading @@ -70,4 +75,12 @@ public final class GroupListItem { public boolean isFirstGroupInAccount() { return mIsFirstGroupInAccount; } public boolean isReadOnly() { return mIsReadOnly; } public String getSystemId() { return mSystemId; } } No newline at end of file
src/com/android/contacts/group/GroupUtil.java +28 −1 Original line number Diff line number Diff line Loading @@ -22,14 +22,20 @@ import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract.Groups; import android.text.TextUtils; import android.widget.ImageView; import com.android.contacts.GroupListLoader; import com.android.contacts.activities.GroupMembersActivity; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; import com.android.contacts.common.model.account.GoogleAccountType; import com.google.common.base.Objects; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * Group utility methods. */ Loading @@ -38,6 +44,10 @@ public final class GroupUtil { private static final String LEGACY_CONTACTS_AUTHORITY = "contacts"; private static final String LEGACY_CONTACTS_URI = "content://contacts/groups"; // System IDs of FFC groups in Google accounts private static final Set<String> FFC_GROUPS = new HashSet(Arrays.asList("Friends", "Family", "Coworkers")); private GroupUtil() { } Loading @@ -52,6 +62,8 @@ public final class GroupUtil { long groupId = cursor.getLong(GroupListLoader.GROUP_ID); String title = cursor.getString(GroupListLoader.TITLE); int memberCount = cursor.getInt(GroupListLoader.MEMBER_COUNT); boolean isReadOnly = cursor.getInt(GroupListLoader.IS_READ_ONLY) == 1; String systemId = cursor.getString(GroupListLoader.SYSTEM_ID); // Figure out if this is the first group for this account name / account type pair by // checking the previous entry. This is to determine whether or not we need to display an Loading @@ -71,7 +83,7 @@ public final class GroupUtil { } return new GroupListItem(accountName, accountType, dataSet, groupId, title, isFirstGroupInAccount, memberCount); isFirstGroupInAccount, memberCount, isReadOnly, systemId); } /** Loading Loading @@ -122,4 +134,19 @@ public final class GroupUtil { final Uri legacyContentUri = Uri.parse(LEGACY_CONTACTS_URI); return ContentUris.withAppendedId(legacyContentUri, groupId); } /** * Returns true if it's an empty and read-only group of a Google account and the system ID of * the group is one of "Friends", "Family" and "Coworkers". */ public static boolean isEmptyFFCGroup(GroupListItem groupListItem) { return GoogleAccountType.ACCOUNT_TYPE.equals(groupListItem.getAccountType()) && groupListItem.isReadOnly() && isSystemIdFFC(groupListItem.getSystemId()) && (groupListItem.getMemberCount() <= 0); } private static boolean isSystemIdFFC(String systemId) { return !TextUtils.isEmpty(systemId) && FFC_GROUPS.contains(systemId); } } No newline at end of file