diff options
author | Isaac Katzenelson <isaack@android.com> | 2011-07-07 16:15:06 -0700 |
---|---|---|
committer | Isaac Katzenelson <isaack@android.com> | 2011-07-08 11:03:29 -0700 |
commit | 267073407439d7df012a2e0df577e39a1f89c4a8 (patch) | |
tree | b73d19a35443df2e7ee7dc7de722eb3a2d5c280b | |
parent | 58fc577bd7966e6566cdcac09589a0d3e05128e7 (diff) | |
download | packages_apps_Contacts-267073407439d7df012a2e0df577e39a1f89c4a8.tar.gz packages_apps_Contacts-267073407439d7df012a2e0df577e39a1f89c4a8.tar.bz2 packages_apps_Contacts-267073407439d7df012a2e0df577e39a1f89c4a8.zip |
Remove deleted groups from GroupBrowserList
Change-Id: Iea7435c6b1f569dd8ac5416b35470b9ae2f48761
5 files changed, 40 insertions, 10 deletions
diff --git a/src/com/android/contacts/GroupMetaDataLoader.java b/src/com/android/contacts/GroupMetaDataLoader.java index d900825c6..8533bb647 100644 --- a/src/com/android/contacts/GroupMetaDataLoader.java +++ b/src/com/android/contacts/GroupMetaDataLoader.java @@ -34,6 +34,7 @@ public final class GroupMetaDataLoader extends CursorLoader { Groups.AUTO_ADD, Groups.FAVORITES, Groups.GROUP_IS_READ_ONLY, + Groups.DELETED, }; public final static int ACCOUNT_NAME = 0; @@ -43,6 +44,7 @@ public final class GroupMetaDataLoader extends CursorLoader { public final static int AUTO_ADD = 4; public final static int FAVORITES = 5; public final static int IS_READ_ONLY = 6; + public final static int DELETED = 7; public GroupMetaDataLoader(Context context, Uri groupUri) { super(context, ensureIsGroupUri(groupUri), COLUMNS, Groups.ACCOUNT_TYPE + " NOT NULL AND " diff --git a/src/com/android/contacts/activities/GroupDetailActivity.java b/src/com/android/contacts/activities/GroupDetailActivity.java index 21900c679..c8f511b37 100644 --- a/src/com/android/contacts/activities/GroupDetailActivity.java +++ b/src/com/android/contacts/activities/GroupDetailActivity.java @@ -43,6 +43,7 @@ public class GroupDetailActivity extends ContactsActivity { R.id.group_detail_fragment); fragment.setListener(mFragmentListener); fragment.loadGroup(getIntent().getData()); + fragment.closeActivityAfterDelete(true); ActionBar actionBar = getActionBar(); if (actionBar != null) { diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java index 59b0cecda..4443a53f3 100644 --- a/src/com/android/contacts/group/GroupBrowseListFragment.java +++ b/src/com/android/contacts/group/GroupBrowseListFragment.java @@ -196,6 +196,8 @@ public class GroupBrowseListFragment extends Fragment String accountType = mGroupListCursor.getString(GroupMetaDataLoader.ACCOUNT_TYPE); long groupId = mGroupListCursor.getLong(GroupMetaDataLoader.GROUP_ID); String title = mGroupListCursor.getString(GroupMetaDataLoader.TITLE); + boolean deleted = + (mGroupListCursor.getInt(GroupMetaDataLoader.DELETED) == 1); boolean defaultGroup = mGroupListCursor.isNull(GroupMetaDataLoader.AUTO_ADD) ? false : mGroupListCursor.getInt(GroupMetaDataLoader.AUTO_ADD) != 0; @@ -204,8 +206,8 @@ public class GroupBrowseListFragment extends Fragment : mGroupListCursor.getInt(GroupMetaDataLoader.FAVORITES) != 0; // Don't show the "auto-added" (i.e. My Contacts) or "favorites" groups because - // they show up elsewhere in the app - if (defaultGroup || favorites) { + // they show up elsewhere in the app. Also skip groups that are marked as "deleted" + if (defaultGroup || favorites || deleted) { continue; } diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java index c4824aefa..fe2605ea2 100644 --- a/src/com/android/contacts/group/GroupDetailFragment.java +++ b/src/com/android/contacts/group/GroupDetailFragment.java @@ -90,6 +90,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener { private String mGroupName; private boolean mOptionsMenuEditable; + private boolean mCloseActivityAfterDelete; public GroupDetailFragment() { } @@ -190,11 +191,20 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener { @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { - bindGroupMetaData(data); - - // Retrieve the list of members - configureAdapter(mGroupId); - startGroupMembersLoader(); + data.moveToPosition(-1); + if (data.moveToNext()) { + boolean deleted = data.getInt(GroupMetaDataLoader.DELETED) == 1; + if (!deleted) { + bindGroupMetaData(data); + + // Retrieve the list of members + configureAdapter(mGroupId); + startGroupMembersLoader(); + return; + } + } + updateSize(null); + updateTitle(null); } @Override @@ -295,10 +305,15 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener { break; } case R.id.menu_delete_group: { - GroupDeletionDialogFragment.show(getFragmentManager(), mGroupId, mGroupName); + GroupDeletionDialogFragment.show(getFragmentManager(), mGroupId, mGroupName, + mCloseActivityAfterDelete); return true; } } return false; } + + public void closeActivityAfterDelete(boolean closeActivity) { + mCloseActivityAfterDelete = closeActivity; + } } diff --git a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java index 44d31be5b..c9c134214 100644 --- a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java +++ b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java @@ -33,8 +33,15 @@ public class GroupDeletionDialogFragment extends DialogFragment { private static final String ARG_GROUP_ID = "groupId"; private static final String ARG_LABEL = "label"; - public static void show(FragmentManager fragmentManager, long groupId, String label) { - GroupDeletionDialogFragment dialog = new GroupDeletionDialogFragment(); + private boolean mEndActivity; + + public GroupDeletionDialogFragment(boolean endActivity) { + mEndActivity = endActivity; + } + + public static void show(FragmentManager fragmentManager, long groupId, String label, + boolean endActivity) { + GroupDeletionDialogFragment dialog = new GroupDeletionDialogFragment(endActivity); Bundle args = new Bundle(); args.putLong(ARG_GROUP_ID, groupId); args.putString(ARG_LABEL, label); @@ -69,5 +76,8 @@ public class GroupDeletionDialogFragment extends DialogFragment { getActivity().startService(ContactSaveService.createGroupDeletionIntent( getActivity(), groupId)); + if (mEndActivity) { + getActivity().finish(); + } } } |