// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.preferences.autofill;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.autofill.PersonalDataManager;
import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
import java.util.List;
/**
* The base class for credit card settings.
*/
abstract class AutofillCreditCardEditor extends AutofillEditorBase {
protected CreditCard mCard;
protected Spinner mBillingAddress;
protected int mInitialBillingAddressPos;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
// Populate the billing address dropdown.
ArrayAdapter<AutofillProfile> profilesAdapter = new ArrayAdapter<AutofillProfile>(
getActivity(), android.R.layout.simple_spinner_item);
profilesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
AutofillProfile noSelection = new AutofillProfile();
noSelection.setLabel(getActivity().getString(R.string.select));
profilesAdapter.add(noSelection);
List<AutofillProfile> profiles = PersonalDataManager.getInstance().getProfilesForSettings();
for (int i = 0; i < profiles.size(); i++) {
AutofillProfile profile = profiles.get(i);
if (profile.getIsLocal()) profilesAdapter.add(profile);
}
mBillingAddress =
(Spinner) v.findViewById(R.id.autofill_credit_card_editor_billing_address_spinner);
mBillingAddress.setAdapter(profilesAdapter);
// TODO(rouslan): Use an [+ ADD ADDRESS] button instead of disabling the dropdown.
// http://crbug.com/623629
if (profilesAdapter.getCount() == 1) mBillingAddress.setEnabled(false);
mCard = PersonalDataManager.getInstance().getCreditCard(mGUID);
if (mCard != null) {
if (!TextUtils.isEmpty(mCard.getBillingAddressId())) {
for (int i = 0; i < mBillingAddress.getAdapter().getCount(); i++) {
AutofillProfile profile =
(AutofillProfile) mBillingAddress.getAdapter().getItem(i);
if (TextUtils.equals(profile.getGUID(), mCard.getBillingAddressId())) {
mInitialBillingAddressPos = i;
mBillingAddress.setSelection(i);
break;
}
}
}
}
return v;
}
}