Adding support for new field: Groups.GROUP_IS_READ_ONLY

Bug: 3214137
Change-Id: I8cbae752b9ed417c8050cd74d7ba1d7d33d10b5b
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 2548a45..c72f0d8 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -890,23 +890,25 @@
                     mRequest.getActionCode() == ContactsRequest.ACTION_DEFAULT);
         }
 
-        boolean groupSelected = false;
+        boolean groupActionsEnabled = false;
         if (mListFragment instanceof DefaultContactBrowseListFragment) {
             ContactListFilter filter =
                     ((DefaultContactBrowseListFragment)mListFragment).getFilter();
-            if (filter != null && filter.filterType == ContactListFilter.FILTER_TYPE_GROUP) {
-                groupSelected = true;
+            if (filter != null
+                    && filter.filterType == ContactListFilter.FILTER_TYPE_GROUP
+                    && !filter.groupReadOnly) {
+                groupActionsEnabled = true;
             }
         }
 
         MenuItem renameGroup = menu.findItem(R.id.menu_rename_group);
         if (renameGroup != null) {
-            renameGroup.setVisible(groupSelected);
+            renameGroup.setVisible(groupActionsEnabled);
         }
 
         MenuItem deleteGroup = menu.findItem(R.id.menu_delete_group);
         if (deleteGroup != null) {
-            deleteGroup.setVisible(groupSelected);
+            deleteGroup.setVisible(groupActionsEnabled);
         }
 
         return true;
diff --git a/src/com/android/contacts/list/ContactListFilter.java b/src/com/android/contacts/list/ContactListFilter.java
index 2b212fd..dcaf608 100644
--- a/src/com/android/contacts/list/ContactListFilter.java
+++ b/src/com/android/contacts/list/ContactListFilter.java
@@ -40,6 +40,7 @@
     private static final String KEY_ACCOUNT_TYPE = "filter.accountType";
     private static final String KEY_GROUP_ID = "filter.groupId";
     private static final String KEY_GROUP_SOURCE_ID = "filter.groupSourceId";
+    private static final String KEY_GROUP_READ_ONLY = "filter.groupReadOnly";
 
     public int filterType;
     public String accountType;
@@ -47,6 +48,7 @@
     public Drawable icon;
     public long groupId;
     public String groupSourceId;
+    public boolean groupReadOnly;
     public String title;
     private String mId;
 
@@ -63,13 +65,14 @@
         this.title = title;
     }
 
-    public ContactListFilter(
-            String accountType, String accountName, long groupId, String groupSourceId, String title) {
+    public ContactListFilter(String accountType, String accountName, long groupId,
+            String groupSourceId, boolean groupReadOnly, String title) {
         this.filterType = ContactListFilter.FILTER_TYPE_GROUP;
         this.accountType = accountType;
         this.accountName = accountName;
         this.groupId = groupId;
         this.groupSourceId = groupSourceId;
+        this.groupReadOnly = groupReadOnly;
         this.title = title;
     }
 
@@ -159,6 +162,7 @@
             .putString(KEY_ACCOUNT_TYPE, filter == null ? null : filter.accountType)
             .putLong(KEY_GROUP_ID, filter == null ? -1 : filter.groupId)
             .putString(KEY_GROUP_SOURCE_ID, filter == null ? null : filter.groupSourceId)
+            .putBoolean(KEY_GROUP_READ_ONLY, filter == null ? false : filter.groupReadOnly)
             .apply();
     }
 
@@ -173,6 +177,7 @@
         filter.accountType = prefs.getString(KEY_ACCOUNT_TYPE, null);
         filter.groupId = prefs.getLong(KEY_GROUP_ID, -1);
         filter.groupSourceId = prefs.getString(KEY_GROUP_SOURCE_ID, null);
+        filter.groupReadOnly = prefs.getBoolean(KEY_GROUP_READ_ONLY, false);
         return filter;
     }
 
diff --git a/src/com/android/contacts/list/ContactListFilterLoader.java b/src/com/android/contacts/list/ContactListFilterLoader.java
index adb7c7f..8ad9168 100644
--- a/src/com/android/contacts/list/ContactListFilterLoader.java
+++ b/src/com/android/contacts/list/ContactListFilterLoader.java
@@ -45,6 +45,7 @@
             Groups.TITLE,
             Groups.AUTO_ADD,
             Groups.SOURCE_ID,
+            Groups.GROUP_IS_READ_ONLY,
         };
 
         public static final int ID = 0;
@@ -53,6 +54,7 @@
         public static final int TITLE = 3;
         public static final int IS_DEFAULT_GROUP = 4;       // Using the AUTO_ADD group as default
         public static final int SOURCE_ID = 5;
+        public static final int GROUP_IS_READ_ONLY = 6;
 
         private static final String SELECTION =
                 Groups.DELETED + "=0 AND " + Groups.FAVORITES + "=0";
@@ -88,6 +90,7 @@
             while (cursor.moveToNext()) {
                 long groupId = cursor.getLong(GroupQuery.ID);
                 String groupSourceId = cursor.getString(GroupQuery.SOURCE_ID);
+                boolean groupReadOnly = cursor.getInt(GroupQuery.GROUP_IS_READ_ONLY) != 0;
                 String accountType = cursor.getString(GroupQuery.ACCOUNT_TYPE);
                 String accountName = cursor.getString(GroupQuery.ACCOUNT_NAME);
                 boolean defaultGroup = false;
@@ -106,8 +109,8 @@
                     }
                 } else {
                     String title = cursor.getString(GroupQuery.TITLE);
-                    results.add(new ContactListFilter(
-                            accountType, accountName, groupId, groupSourceId, title));
+                    results.add(new ContactListFilter(accountType, accountName, groupId,
+                            groupSourceId, groupReadOnly, title));
                 }
             }
         } finally {