Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0396cf7a authored by Walter Jang's avatar Walter Jang
Browse files

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
parent f20709b0
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -571,10 +571,6 @@ public abstract class ContactsDrawerActivity extends AppCompatContactsActivity i
        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;
    }

+2 −6
Original line number Diff line number Diff line
@@ -72,7 +72,6 @@ import com.android.contacts.list.ContactsIntentResolver;
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 @@ public class PeopleActivity extends ContactsDrawerActivity implements ProviderSt

        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: {
+1 −9
Original line number Diff line number Diff line
@@ -40,15 +40,11 @@ public final class ContactsPreferenceActivity extends PreferenceActivity impleme
    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 @@ public final class ContactsPreferenceActivity extends PreferenceActivity impleme
        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();
+5 −16
Original line number Diff line number Diff line
@@ -61,9 +61,7 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment
    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 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment
    }

    private String mNewLocalProfileExtra;
    private String mPreviousScreenExtra;
    private int mModeFullyExpanded;
    private boolean mAreContactsAvailable;

    private boolean mHasProfile;
@@ -149,12 +145,10 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment
    };

    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 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment

        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();
@@ -313,17 +305,14 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment
                    ExportDialogFragment.EXPORT_MODE_ALL_CONTACTS);
            return true;
        } else if (KEY_MY_INFO.equals(prefKey)) {
            final Intent intent;
            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);
            }
            return true;
        } else if (KEY_ACCOUNTS.equals(prefKey)) {
            ImplicitIntentsUtil.startActivityOutsideApp(getContext(),
+44 −3
Original line number Diff line number Diff line
@@ -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.ContactsContract.QuickContact;
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;

@@ -95,17 +97,56 @@ public class ImplicitIntentsUtil {
        context.startActivity(intent);
    }

    /**
     * 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 class ImplicitIntentsUtil {

    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.
Loading