Consolidate utility methods to start QuickContact (1/2)
Test: Manually start QuickContact from
1. DefaultContactBrowseListFragment
2. Me profile (preferences)
3. Group members
4. Duplicates (with result)
5. Editor (after save)
6. Shortcuts
Bug: 31666272
Change-Id: I0ad41bdefb69bcc680488dd39e74f02b2b8a4c65
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 2c18744..9990e9f 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -571,10 +571,6 @@
final Intent intent = new Intent(this, ContactsPreferenceActivity.class);
intent.putExtra(ContactsPreferenceActivity.EXTRA_NEW_LOCAL_PROFILE,
CompactContactEditorFragment.INTENT_EXTRA_NEW_LOCAL_PROFILE);
- intent.putExtra(ContactsPreferenceActivity.EXTRA_MODE_FULLY_EXPANDED,
- QuickContactActivity.MODE_FULLY_EXPANDED);
- intent.putExtra(ContactsPreferenceActivity.EXTRA_PREVIOUS_SCREEN_TYPE,
- QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE);
return intent;
}
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 09963f2..bd106df 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -72,7 +72,6 @@
import com.android.contacts.list.ContactsRequest;
import com.android.contacts.list.ContactsUnavailableFragment;
import com.android.contacts.list.DefaultContactBrowseListFragment;
-import com.android.contacts.quickcontact.QuickContactActivity;
import com.android.contacts.util.SyncUtil;
import com.android.contactsbind.FeatureHighlightHelper;
import com.android.contactsbind.ObjectFactory;
@@ -339,11 +338,8 @@
switch (mRequest.getActionCode()) {
case ContactsRequest.ACTION_VIEW_CONTACT: {
- final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
- PeopleActivity.this, mRequest.getContactUri(),
- QuickContactActivity.MODE_FULLY_EXPANDED);
- intent.putExtra(QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE, ScreenType.UNKNOWN);
- ImplicitIntentsUtil.startActivityInApp(this, intent);
+ ImplicitIntentsUtil.startQuickContact(
+ this, mRequest.getContactUri(), ScreenType.UNKNOWN);
return false;
}
case ContactsRequest.ACTION_INSERT_GROUP: {
diff --git a/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java b/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java
index dbf3cb9..f544c7b 100644
--- a/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java
+++ b/src/com/android/contacts/common/preference/ContactsPreferenceActivity.java
@@ -40,15 +40,11 @@
private static final String TAG_DISPLAY_OPTIONS = "display_options";
private String mNewLocalProfileExtra;
- private String mPreviousScreenExtra;
- private int mModeFullyExpanded;
private boolean mAreContactsAvailable;
private ProviderStatusWatcher mProviderStatusWatcher;
public static final String EXTRA_NEW_LOCAL_PROFILE = "newLocalProfile";
- public static final String EXTRA_MODE_FULLY_EXPANDED = "modeFullyExpanded";
- public static final String EXTRA_PREVIOUS_SCREEN_TYPE = "previousScreenType";
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -62,16 +58,12 @@
mProviderStatusWatcher = ProviderStatusWatcher.getInstance(this);
mNewLocalProfileExtra = getIntent().getStringExtra(EXTRA_NEW_LOCAL_PROFILE);
- mModeFullyExpanded = getIntent().getIntExtra(EXTRA_MODE_FULLY_EXPANDED,
- QuickContact.MODE_LARGE);
- mPreviousScreenExtra = getIntent().getStringExtra(EXTRA_PREVIOUS_SCREEN_TYPE);
final int providerStatus = mProviderStatusWatcher.getProviderStatus();
mAreContactsAvailable = providerStatus == ProviderStatus.STATUS_NORMAL;
if (savedInstanceState == null) {
final DisplayOptionsPreferenceFragment fragment = DisplayOptionsPreferenceFragment
- .newInstance(mNewLocalProfileExtra, mPreviousScreenExtra, mModeFullyExpanded,
- mAreContactsAvailable);
+ .newInstance(mNewLocalProfileExtra, mAreContactsAvailable);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, fragment, TAG_DISPLAY_OPTIONS)
.commit();
diff --git a/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
index 3bbdbb1..89208a8 100644
--- a/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
+++ b/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
@@ -61,9 +61,7 @@
private static final int REQUEST_CODE_CUSTOM_CONTACTS_FILTER = 0;
private static final String ARG_CONTACTS_AVAILABLE = "are_contacts_available";
- private static final String ARG_MODE_FULLY_EXPANDED = "mode_fully_expanded";
private static final String ARG_NEW_LOCAL_PROFILE = "new_local_profile";
- private static final String ARG_PREVIOUS_SCREEN = "previous_screen";
private static final String KEY_ABOUT = "about";
private static final String KEY_ACCOUNTS = "accounts";
@@ -115,8 +113,6 @@
}
private String mNewLocalProfileExtra;
- private String mPreviousScreenExtra;
- private int mModeFullyExpanded;
private boolean mAreContactsAvailable;
private boolean mHasProfile;
@@ -149,12 +145,10 @@
};
public static DisplayOptionsPreferenceFragment newInstance(String newLocalProfileExtra,
- String previousScreenExtra, int modeFullyExpanded, boolean areContactsAvailable) {
+ boolean areContactsAvailable) {
final DisplayOptionsPreferenceFragment fragment = new DisplayOptionsPreferenceFragment();
final Bundle args = new Bundle();
args.putString(ARG_NEW_LOCAL_PROFILE, newLocalProfileExtra);
- args.putString(ARG_PREVIOUS_SCREEN, previousScreenExtra);
- args.putInt(ARG_MODE_FULLY_EXPANDED, modeFullyExpanded);
args.putBoolean(ARG_CONTACTS_AVAILABLE, areContactsAvailable);
fragment.setArguments(args);
return fragment;
@@ -179,8 +173,6 @@
final Bundle args = getArguments();
mNewLocalProfileExtra = args.getString(ARG_NEW_LOCAL_PROFILE);
- mPreviousScreenExtra = args.getString(ARG_PREVIOUS_SCREEN);
- mModeFullyExpanded = args.getInt(ARG_MODE_FULLY_EXPANDED);
mAreContactsAvailable = args.getBoolean(ARG_CONTACTS_AVAILABLE);
removeUnsupportedPreferences();
@@ -312,18 +304,15 @@
ExportDialogFragment.show(getFragmentManager(), ContactsPreferenceActivity.class,
ExportDialogFragment.EXPORT_MODE_ALL_CONTACTS);
return true;
- }else if (KEY_MY_INFO.equals(prefKey)) {
- final Intent intent;
+ } else if (KEY_MY_INFO.equals(prefKey)) {
if (mHasProfile) {
final Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, mProfileContactId);
- intent = ImplicitIntentsUtil.composeQuickContactIntent(getContext(), uri,
- mModeFullyExpanded);
- intent.putExtra(mPreviousScreenExtra, ScreenType.ME_CONTACT);
+ ImplicitIntentsUtil.startQuickContact(getActivity(), uri, ScreenType.ME_CONTACT);
} else {
- intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
+ final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
intent.putExtra(mNewLocalProfileExtra, true);
+ ImplicitIntentsUtil.startActivityInApp(getActivity(), intent);
}
- ImplicitIntentsUtil.startActivityInApp(getActivity(), intent);
return true;
} else if (KEY_ACCOUNTS.equals(prefKey)) {
ImplicitIntentsUtil.startActivityOutsideApp(getContext(),
diff --git a/src/com/android/contacts/common/util/ImplicitIntentsUtil.java b/src/com/android/contacts/common/util/ImplicitIntentsUtil.java
index 19d171c..3ed59b3 100644
--- a/src/com/android/contacts/common/util/ImplicitIntentsUtil.java
+++ b/src/com/android/contacts/common/util/ImplicitIntentsUtil.java
@@ -16,6 +16,7 @@
package com.android.contacts.common.util;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -27,6 +28,7 @@
import android.provider.Settings;
import android.text.TextUtils;
+import com.android.contacts.common.logging.ScreenEvent.ScreenType;
import com.android.contacts.common.model.account.GoogleAccountType;
import com.android.contacts.quickcontact.QuickContactActivity;
@@ -96,16 +98,55 @@
}
/**
+ * Starts QuickContact in app with the default mode and specified previous screen type.
+ */
+ public static void startQuickContact(Activity activity, Uri contactLookupUri,
+ int previousScreenType) {
+ startQuickContact(activity, contactLookupUri, previousScreenType, /* requestCode */ -1);
+ }
+
+ /**
+ * Starts QuickContact for result with the default mode and specified previous screen type.
+ */
+ public static void startQuickContactForResult(Activity activity, Uri contactLookupUri,
+ int previousScreenType, int requestCode) {
+ startQuickContact(activity, contactLookupUri, previousScreenType, requestCode);
+ }
+
+ private static void startQuickContact(Activity activity, Uri contactLookupUri,
+ int previousScreenType, int requestCode) {
+ final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
+ activity, contactLookupUri, previousScreenType);
+
+ if (requestCode >= 0) {
+ activity.startActivityForResult(intent, requestCode);
+ } else {
+ startActivityInApp(activity, intent);
+ }
+ }
+
+ /**
+ * Returns an implicit intent for opening QuickContacts with the default mode and specified
+ * previous screen type.
+ */
+ public static Intent composeQuickContactIntent(Context context, Uri contactLookupUri,
+ int previousScreenType) {
+ return composeQuickContactIntent(context, contactLookupUri,
+ QuickContactActivity.MODE_FULLY_EXPANDED, previousScreenType);
+ }
+
+ /**
* Returns an implicit intent for opening QuickContacts.
*/
public static Intent composeQuickContactIntent(Context context, Uri contactLookupUri,
- int extraMode) {
+ int mode, int previousScreenType) {
final Intent intent = new Intent(context, QuickContactActivity.class);
intent.setAction(QuickContact.ACTION_QUICK_CONTACT);
intent.setData(contactLookupUri);
- intent.putExtra(QuickContact.EXTRA_MODE, extraMode);
+ intent.putExtra(QuickContact.EXTRA_MODE, mode);
// Make sure not to show QuickContacts on top of another QuickContacts.
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ intent.putExtra(QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE, previousScreenType);
return intent;
}
@@ -134,7 +175,7 @@
public static Intent getIntentForQuickContactLauncherShortcut(Context context, Uri contactUri) {
final Intent intent = composeQuickContactIntent(context, contactUri,
- QuickContact.MODE_LARGE);
+ QuickContact.MODE_LARGE, ScreenType.UNKNOWN);
intent.setPackage(context.getPackageName());
// When starting from the launcher, start in a new, cleared task.
diff --git a/src/com/android/contacts/editor/CompactContactEditorFragment.java b/src/com/android/contacts/editor/CompactContactEditorFragment.java
index f228b70..4142a79 100644
--- a/src/com/android/contacts/editor/CompactContactEditorFragment.java
+++ b/src/com/android/contacts/editor/CompactContactEditorFragment.java
@@ -21,7 +21,6 @@
import android.app.Fragment;
import android.app.LoaderManager;
import android.content.ActivityNotFoundException;
-import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
@@ -1547,10 +1546,8 @@
if (saveSucceeded && contactLookupUri != null) {
final Uri lookupUri = ContactEditorUtils.maybeConvertToLegacyLookupUri(
mContext, contactLookupUri, mLookupUri);
- resultIntent = ImplicitIntentsUtil.composeQuickContactIntent(mContext,
- lookupUri, QuickContactActivity.MODE_FULLY_EXPANDED);
- resultIntent.putExtra(QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE,
- ScreenType.EDITOR);
+ resultIntent = ImplicitIntentsUtil.composeQuickContactIntent(
+ mContext, lookupUri, ScreenType.EDITOR);
resultIntent.putExtra(QuickContactActivity.EXTRA_CONTACT_EDITED, true);
} else {
resultIntent = null;
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index f7897bc..fd3c670 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -58,7 +58,6 @@
import com.android.contacts.list.ContactsRequest;
import com.android.contacts.list.MultiSelectContactsListFragment;
import com.android.contacts.list.UiIntentActions;
-import com.android.contacts.quickcontact.QuickContactActivity;
import java.util.ArrayList;
import java.util.HashSet;
@@ -613,11 +612,8 @@
final int count = getAdapter().getCount();
Logger.logListEvent(ListEvent.ActionType.CLICK, ListEvent.ListType.GROUP, count,
/* clickedIndex */ position, /* numSelected */ 0);
- final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
- getContext(), uri, QuickContactActivity.MODE_FULLY_EXPANDED);
- intent.putExtra(
- QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE, ScreenEvent.ScreenType.LIST_GROUP);
- startActivity(intent);
+ ImplicitIntentsUtil.startQuickContact(
+ getActivity(), uri, ScreenEvent.ScreenType.LIST_GROUP);
}
@Override
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 67293d1..dd45fc2 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -54,7 +54,6 @@
import com.android.contacts.ContactsDrawerActivity;
import com.android.contacts.R;
import com.android.contacts.activities.ActionBarAdapter;
-import com.android.contacts.activities.PeopleActivity;
import com.android.contacts.common.Experiments;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.list.ContactEntryListFragment;
@@ -773,7 +772,6 @@
@Override
public void onSelectionChange() {
-
}
@Override
@@ -784,8 +782,6 @@
ContactsContract.QuickContact.showQuickContact(getContext(), new Rect(),
contactLookupUri, QuickContactActivity.MODE_FULLY_EXPANDED, null);
} else {
- final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
- getContext(), contactLookupUri, QuickContactActivity.MODE_FULLY_EXPANDED);
final int previousScreen;
if (isSearchMode()) {
previousScreen = ScreenEvent.ScreenType.SEARCH;
@@ -800,12 +796,14 @@
previousScreen = ScreenEvent.ScreenType.LIST_ACCOUNT;
}
}
+
Logger.logListEvent(ListEvent.ActionType.CLICK,
/* listType */ getListTypeIncludingSearch(),
/* count */ getAdapter().getCount(),
/* clickedIndex */ position, /* numSelected */ 0);
- intent.putExtra(QuickContactActivity.EXTRA_PREVIOUS_SCREEN_TYPE, previousScreen);
- ImplicitIntentsUtil.startActivityInApp(getContext(), intent);
+
+ ImplicitIntentsUtil.startQuickContact(
+ getActivity(), contactLookupUri, previousScreen);
}
}