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

Commit 2219c604 authored by Wenyi Wang's avatar Wenyi Wang Committed by Android (Google) Code Review
Browse files

Merge "Dismiss import dialog after it's clicked" into ub-contactsdialer-h-dev

parents de3a99e7 c3322286
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -703,9 +703,9 @@ public abstract class ContactsDrawerActivity extends AppCompatContactsActivity i
            onAccountChosen(accounts.get(0), /* extraArgs */ null);
            return;
        }
        SelectAccountDialogFragment.show(getFragmentManager(), null,
                R.string.dialog_new_group_account, AccountListFilter.ACCOUNTS_GROUP_WRITABLE,
                /* extraArgs */ null, TAG_SELECT_ACCOUNT_DIALOG);
        SelectAccountDialogFragment.show(getFragmentManager(), R.string.dialog_new_group_account,
                AccountListFilter.ACCOUNTS_GROUP_WRITABLE, /* extraArgs */ null,
                TAG_SELECT_ACCOUNT_DIALOG);
    }

    @Override
+13 −50
Original line number Diff line number Diff line
@@ -25,9 +25,6 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.text.TextUtilsCompat;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -54,12 +51,11 @@ import java.util.List;
/**
 * An dialog invoked to import/export contacts.
 */
public class ImportDialogFragment extends DialogFragment
        implements SelectAccountDialogFragment.Listener {
public class ImportDialogFragment extends DialogFragment {
    public static final String TAG = "ImportDialogFragment";

    private static final String KEY_RES_ID = "resourceId";
    private static final String KEY_SUBSCRIPTION_ID = "subscriptionId";
    public static final String KEY_RES_ID = "resourceId";
    public static final String KEY_SUBSCRIPTION_ID = "subscriptionId";

    public static final String EXTRA_SIM_ONLY = "extraSimOnly";

@@ -178,21 +174,17 @@ public class ImportDialogFragment extends DialogFragment
                new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                boolean dismissDialog;
                final int resId = adapter.getItem(which).mChoiceResourceId;
                if (resId == R.string.import_from_sim) {
                    dismissDialog = handleSimImportRequest(adapter.getItem(which).mSim);
                    handleSimImportRequest(adapter.getItem(which).mSim);
                } else if (resId == R.string.import_from_vcf_file) {
                        dismissDialog = handleImportRequest(resId, SimCard.NO_SUBSCRIPTION_ID);
                    handleImportRequest(resId, SimCard.NO_SUBSCRIPTION_ID);
                } else {
                    dismissDialog = true;
                    Log.e(TAG, "Unexpected resource: "
                            + getActivity().getResources().getResourceEntryName(resId));
                }
                if (dismissDialog) {
                dialog.dismiss();
            }
            }
        };

        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), getTheme())
@@ -238,18 +230,15 @@ public class ImportDialogFragment extends DialogFragment
        }
    }

    private boolean handleSimImportRequest(SimCard sim) {
    private void handleSimImportRequest(SimCard sim) {
        SimImportFragment.newInstance(sim.getSubscriptionId()).show(getFragmentManager(),
                "SimImport");
        return true;
    }

    /**
     * Handle "import from SD".
     *
     * @return {@code true} if the dialog show be closed.  {@code false} otherwise.
     */
    private boolean handleImportRequest(int resId, int subscriptionId) {
    private void handleImportRequest(int resId, int subscriptionId) {
        // There are three possibilities:
        // - more than one accounts -> ask the user
        // - just one account -> use the account without asking the user
@@ -263,39 +252,13 @@ public class ImportDialogFragment extends DialogFragment
            args.putInt(KEY_RES_ID, resId);
            args.putInt(KEY_SUBSCRIPTION_ID, subscriptionId);
            SelectAccountDialogFragment.show(
                    getFragmentManager(), this,
                    R.string.dialog_new_contact_account,
                    getFragmentManager(), R.string.dialog_new_contact_account,
                    AccountListFilter.ACCOUNTS_CONTACT_WRITABLE, args);

            // In this case, because this DialogFragment is used as a target fragment to
            // SelectAccountDialogFragment, we can't close it yet.  We close the dialog when
            // we get a callback from it.
            return false;
        }

        } else {
            AccountSelectionUtil.doImport(getActivity(), resId,
                    (size == 1 ? accountList.get(0) : null),
                    (CompatUtils.isMSIMCompatible() ? subscriptionId : -1));
        return true; // Close the dialog.
    }

    /**
     * Called when an account is selected on {@link SelectAccountDialogFragment}.
     */
    @Override
    public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
        AccountSelectionUtil.doImport(getActivity(), extraArgs.getInt(KEY_RES_ID),
                account, extraArgs.getInt(KEY_SUBSCRIPTION_ID));

        // At this point the dialog is still showing (which is why we can use getActivity() above)
        // So close it.
        dismiss();
        }

    @Override
    public void onAccountSelectorCancelled() {
        // See onAccountChosen() -- at this point the dialog is still showing.  Close it.
        dismiss();
    }

    private CharSequence getSimDescription(SimCard sim, int index) {
+16 −2
Original line number Diff line number Diff line
@@ -34,15 +34,19 @@ import android.view.View;
import android.view.ViewGroup;

import com.android.contacts.common.R;
import com.android.contacts.common.interactions.ImportDialogFragment;
import com.android.contacts.common.list.ProviderStatusWatcher;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.preference.DisplayOptionsPreferenceFragment.ProfileListener;
import com.android.contacts.common.preference.DisplayOptionsPreferenceFragment.ProfileQuery;
import com.android.contacts.common.util.AccountSelectionUtil;
import com.android.contacts.editor.SelectAccountDialogFragment;

/**
 * Contacts settings.
 */
public final class ContactsPreferenceActivity extends PreferenceActivity implements
        ProfileListener {
public final class ContactsPreferenceActivity extends PreferenceActivity
        implements ProfileListener, SelectAccountDialogFragment.Listener {

    private static final String TAG_ABOUT = "about_contacts";
    private static final String TAG_DISPLAY_OPTIONS = "display_options";
@@ -210,4 +214,14 @@ public final class ContactsPreferenceActivity extends PreferenceActivity impleme
                getFragmentManager().findFragmentByTag(TAG_DISPLAY_OPTIONS);
        fragment.updateMyInfoPreference(hasProfile, displayName, contactId);
    }

    @Override
    public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
        AccountSelectionUtil.doImport(this, extraArgs.getInt(ImportDialogFragment
                .KEY_RES_ID), account, extraArgs.getInt(ImportDialogFragment.KEY_SUBSCRIPTION_ID));
    }

    @Override
    public void onAccountSelectorCancelled() {
    }
}
+7 −26
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.DialogInterface;
import android.os.Bundle;
@@ -48,22 +47,18 @@ public final class SelectAccountDialogFragment extends DialogFragment {
     * Show the dialog.
     *
     * @param fragmentManager {@link FragmentManager}.
     * @param targetFragment {@link Fragment} that implements {@link Listener}.
     * @param titleResourceId resource ID to use as the title.
     * @param accountListFilter account filter.
     * @param extraArgs Extra arguments, which will later be passed to
     *     {@link Listener#onAccountChosen}.  {@code null} will be converted to
     *     {@link Bundle#EMPTY}.
     */
    public static <F extends Fragment & Listener> void show(FragmentManager fragmentManager,
            F targetFragment, int titleResourceId,
    public static void show(FragmentManager fragmentManager, int titleResourceId,
            AccountListFilter accountListFilter, Bundle extraArgs) {
        show(fragmentManager, targetFragment, titleResourceId, accountListFilter, extraArgs,
                /* tag */ null);
        show(fragmentManager, titleResourceId, accountListFilter, extraArgs, /* tag */ null);
    }

    public static <F extends Fragment & Listener> void show(FragmentManager fragmentManager,
            F targetFragment, int titleResourceId,
    public static void show(FragmentManager fragmentManager, int titleResourceId,
            AccountListFilter accountListFilter, Bundle extraArgs, String tag) {
        final Bundle args = new Bundle();
        args.putInt(KEY_TITLE_RES_ID, titleResourceId);
@@ -72,9 +67,6 @@ public final class SelectAccountDialogFragment extends DialogFragment {

        final SelectAccountDialogFragment instance = new SelectAccountDialogFragment();
        instance.setArguments(args);
        if (targetFragment != null) {
            instance.setTargetFragment(targetFragment, 0);
        }
        instance.show(fragmentManager, tag);
    }

@@ -115,14 +107,8 @@ public final class SelectAccountDialogFragment extends DialogFragment {
        }
    }

    @Override
    public void onSaveInstanceState(Bundle b) {
        setTargetFragment(null, -1);
        super.onSaveInstanceState(b);
    }

    /**
     * Calls {@link Listener#onAccountChosen} of {@code targetFragment}.
     * Calls {@link Listener#onAccountChosen}.
     */
    private void onAccountSelected(AccountWithDataSet account) {
        final Listener listener = getListener();
@@ -133,15 +119,10 @@ public final class SelectAccountDialogFragment extends DialogFragment {

    private Listener getListener() {
        Listener listener = null;
        final Fragment targetFragment = getTargetFragment();
        if (targetFragment == null) {
        final Activity activity = getActivity();
        if (activity != null && activity instanceof Listener) {
            listener = (Listener) activity;
        }
        } else if (targetFragment instanceof Listener) {
            listener = (Listener) targetFragment;
        }
        return listener;
    }