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

Commit 16bad29c authored by Katherine Kuan's avatar Katherine Kuan Committed by Android (Google) Code Review
Browse files

Merge "DO NOT MERGE Fix account list for group editing" into ics-factoryrom

parents f4bd01a7 a9655d2a
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.contacts;

import com.android.contacts.model.AccountType;
import com.android.contacts.model.AccountTypeManager;
import com.android.contacts.model.AccountWithDataSet;
import com.android.contacts.test.NeededForTesting;
@@ -172,11 +173,15 @@ public class ContactsUtils {
        return detector.detectCountry().getCountryIso();
    }

    public static boolean areAccountsAvailable(Context context) {
    public static boolean areContactWritableAccountsAvailable(Context context) {
        final List<AccountWithDataSet> accounts =
                AccountTypeManager.getInstance(context).getAccounts(true /* writeable */);
        return !accounts.isEmpty();
    }


    public static boolean areGroupWritableAccountsAvailable(Context context) {
        final List<AccountWithDataSet> accounts =
                AccountTypeManager.getInstance(context).getGroupWritableAccounts();
        return !accounts.isEmpty();
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.contacts.activities;

import android.accounts.Account;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
@@ -34,6 +33,7 @@ import com.android.contacts.editor.ContactEditorUtils;
import com.android.contacts.model.AccountTypeManager;
import com.android.contacts.model.AccountWithDataSet;
import com.android.contacts.util.AccountsListAdapter;
import com.android.contacts.util.AccountsListAdapter.AccountListFilter;

import java.util.List;

@@ -97,7 +97,8 @@ public class ContactEditorAccountsChangedActivity extends Activity {
            button.setOnClickListener(mAddAccountClickListener);

            final ListView accountListView = (ListView) findViewById(R.id.account_list);
            mAccountListAdapter = new AccountsListAdapter(this, true);
            mAccountListAdapter = new AccountsListAdapter(this,
                    AccountListFilter.ACCOUNTS_CONTACT_WRITABLE);
            accountListView.setAdapter(mAccountListAdapter);
            accountListView.setOnItemClickListener(mAccountListItemClickListener);
        } else if (numAccounts == 1) {
+16 −10
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.contacts.preference.DisplayOptionsPreferenceFragment;
import com.android.contacts.util.AccountPromptUtils;
import com.android.contacts.util.AccountSelectionUtil;
import com.android.contacts.util.AccountsListAdapter;
import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.util.Constants;
import com.android.contacts.util.DialogManager;
import com.android.contacts.util.PhoneCapabilityTester;
@@ -200,10 +201,13 @@ public class PeopleActivity extends ContactsActivity
        return mProviderStatus == ProviderStatus.STATUS_NORMAL;
    }

    private boolean areAccountsAvailable() {
        return ContactsUtils.areAccountsAvailable(this);
    private boolean areContactWritableAccountsAvailable() {
        return ContactsUtils.areContactWritableAccountsAvailable(this);
    }

    private boolean areGroupWritableAccountsAvailable() {
        return ContactsUtils.areGroupWritableAccountsAvailable(this);
    }

    /**
     * Initialize fragments that are (or may not be) in the layout.
@@ -604,7 +608,7 @@ public class PeopleActivity extends ContactsActivity
            invalidateOptionsMenu();
            showEmptyStateForTab(tab);
            if (tab == TabState.GROUPS) {
                mGroupsFragment.setAddAccountsVisibility(!areAccountsAvailable());
                mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
            }
            return;
        }
@@ -625,7 +629,7 @@ public class PeopleActivity extends ContactsActivity
                mFavoritesView.setVisibility(View.GONE);
                mBrowserView.setVisibility(View.VISIBLE);
                mDetailsView.setVisibility(View.VISIBLE);
                mGroupsFragment.setAddAccountsVisibility(!areAccountsAvailable());
                mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
                break;
            case ALL:
                mFavoritesView.setVisibility(View.GONE);
@@ -686,7 +690,7 @@ public class PeopleActivity extends ContactsActivity
                    break;
                case GROUPS:
                    mContactsUnavailableFragment.setMessageText(R.string.noGroups,
                            areAccountsAvailable() ? -1 : R.string.noAccounts);
                            areGroupWritableAccountsAvailable() ? -1 : R.string.noAccounts);
                    break;
                case ALL:
                    mContactsUnavailableFragment.setMessageText(R.string.noContacts, -1);
@@ -712,7 +716,7 @@ public class PeopleActivity extends ContactsActivity
                mActionBarAdapter.setCurrentTab(selectedTab, false);
                showEmptyStateForTab(selectedTab);
                if (selectedTab == TabState.GROUPS) {
                    mGroupsFragment.setAddAccountsVisibility(!areAccountsAvailable());
                    mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
                }
                invalidateOptionsMenu();
            }
@@ -922,7 +926,8 @@ public class PeopleActivity extends ContactsActivity
            // If there are no accounts on the device and we should show the "no account" prompt
            // (based on {@link SharedPreferences}), then launch the account setup activity so the
            // user can sign-in or create an account.
            if (!areAccountsAvailable() && AccountPromptUtils.shouldShowAccountPrompt(this)) {
            if (!areContactWritableAccountsAvailable() &&
                    AccountPromptUtils.shouldShowAccountPrompt(this)) {
                AccountPromptUtils.launchAccountPrompt(this);
                return;
            }
@@ -950,7 +955,7 @@ public class PeopleActivity extends ContactsActivity

            TabState tab = mActionBarAdapter.getCurrentTab();
            if (tab == TabState.GROUPS) {
                mGroupsFragment.setAddAccountsVisibility(!areAccountsAvailable());
                mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
            }
        }

@@ -1306,7 +1311,7 @@ public class PeopleActivity extends ContactsActivity
                    break;
                case GROUPS:
                    // Do not display the "new group" button if no accounts are available
                    if (areAccountsAvailable()) {
                    if (areGroupWritableAccountsAvailable()) {
                        addGroupMenu.setVisible(true);
                    } else {
                        addGroupMenu.setVisible(false);
@@ -1412,7 +1417,8 @@ public class PeopleActivity extends ContactsActivity
        popup.setAnchorView(mAddGroupImageView);
        // Create a list adapter with all writeable accounts (assume that the writeable accounts all
        // allow group creation).
        final AccountsListAdapter adapter = new AccountsListAdapter(this, true);
        final AccountsListAdapter adapter = new AccountsListAdapter(this,
                AccountListFilter.ACCOUNTS_GROUP_WRITABLE);
        popup.setAdapter(adapter);
        popup.setOnItemClickListener(new OnItemClickListener() {
            @Override
+3 −1
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.contacts.model.EntityDeltaList;
import com.android.contacts.model.EntityModifier;
import com.android.contacts.model.GoogleAccountType;
import com.android.contacts.util.AccountsListAdapter;
import com.android.contacts.util.AccountsListAdapter.AccountListFilter;

import android.accounts.Account;
import android.app.Activity;
@@ -826,7 +827,8 @@ public class ContactEditorFragment extends Fragment implements
            public void onClick(View v) {
                final ListPopupWindow popup = new ListPopupWindow(mContext, null);
                final AccountsListAdapter adapter =
                        new AccountsListAdapter(mContext, true, currentAccount);
                        new AccountsListAdapter(mContext,
                        AccountListFilter.ACCOUNTS_CONTACT_WRITABLE, currentAccount);
                popup.setWidth(anchorView.getWidth());
                popup.setAnchorView(anchorView);
                popup.setAdapter(adapter);
+9 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.contacts.editor;
import com.android.contacts.R;
import com.android.contacts.model.AccountWithDataSet;
import com.android.contacts.util.AccountsListAdapter;
import com.android.contacts.util.AccountsListAdapter.AccountListFilter;

import android.app.AlertDialog;
import android.app.Dialog;
@@ -37,13 +38,18 @@ import android.os.Bundle;
public class SelectAccountDialogFragment extends DialogFragment {
    public static final String TAG = "SelectAccountDialogFragment";

    private int mTitleResourceId = R.string.dialog_new_contact_account;
    // TODO: This dialog is used in the context of group editing by default, but should be generic
    // to work for contact editing as well. Save/restore the resource ID and account list filter
    // that are passed in as parameters on device rotation. Bug: 5369853
    private int mTitleResourceId = R.string.dialog_new_group_account;
    private AccountListFilter mAccountListFilter = AccountListFilter.ACCOUNTS_GROUP_WRITABLE;

    public SelectAccountDialogFragment() {
    }

    public SelectAccountDialogFragment(int titleResourceId) {
    public SelectAccountDialogFragment(int titleResourceId, AccountListFilter accountListFilter) {
        mTitleResourceId = titleResourceId;
        mAccountListFilter = accountListFilter;
    }

    @Override
@@ -51,7 +57,7 @@ public class SelectAccountDialogFragment extends DialogFragment {
        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        final AccountsListAdapter accountAdapter = new AccountsListAdapter(builder.getContext(),
                true);
                mAccountListFilter);

        final DialogInterface.OnClickListener clickListener =
                new DialogInterface.OnClickListener() {
Loading