| Index: chrome/browser/autofill/autofill_address_model_mac.mm
|
| ===================================================================
|
| --- chrome/browser/autofill/autofill_address_model_mac.mm (revision 0)
|
| +++ chrome/browser/autofill/autofill_address_model_mac.mm (revision 0)
|
| @@ -0,0 +1,181 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +#import "chrome/browser/autofill/autofill_address_model_mac.h"
|
| +#include "app/l10n_util.h"
|
| +#include "base/sys_string_conversions.h"
|
| +#include "chrome/browser/autofill/autofill_profile.h"
|
| +#include "grit/generated_resources.h"
|
| +
|
| +@implementation AutoFillAddressModel
|
| +
|
| +@dynamic summary;
|
| +@synthesize label = label_;
|
| +@synthesize firstName = firstName_;
|
| +@synthesize middleName = middleName_;
|
| +@synthesize lastName = lastName_;
|
| +@synthesize email = email_;
|
| +@synthesize companyName = companyName_;
|
| +@synthesize addressLine1 = addressLine1_;
|
| +@synthesize addressLine2 = addressLine2_;
|
| +@synthesize city = city_;
|
| +@synthesize state = state_;
|
| +@synthesize zip = zip_;
|
| +@synthesize country = country_;
|
| +@synthesize phoneCountryCode = phoneCountryCode_;
|
| +@synthesize phoneAreaCode = phoneAreaCode_;
|
| +@synthesize phoneNumber = phoneNumber_;
|
| +@synthesize faxCountryCode = faxCountryCode_;
|
| +@synthesize faxAreaCode = faxAreaCode_;
|
| +@synthesize faxNumber = faxNumber_;
|
| +
|
| +// Sets up the KVO dependency between "summary" and dependent fields.
|
| ++ (NSSet*)keyPathsForValuesAffectingValueForKey:(NSString*)key {
|
| + NSSet* keyPaths = [super keyPathsForValuesAffectingValueForKey:key];
|
| +
|
| + if ([key isEqualToString:@"summary"]) {
|
| + NSSet* affectingKeys =
|
| + [NSSet setWithObjects:@"firstName", @"lastName", @"addressLine1", nil];
|
| + keyPaths = [keyPaths setByAddingObjectsFromSet:affectingKeys];
|
| + }
|
| + return keyPaths;
|
| +}
|
| +
|
| +- (id)initWithProfile:(const AutoFillProfile&)profile {
|
| + if ((self = [super init])) {
|
| + [self setLabel:SysUTF16ToNSString(profile.Label())];
|
| + [self setFirstName:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(NAME_FIRST)))];
|
| + [self setMiddleName:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(NAME_MIDDLE)))];
|
| + [self setLastName:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(NAME_LAST)))];
|
| + [self setEmail:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(EMAIL_ADDRESS)))];
|
| + [self setCompanyName:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(COMPANY_NAME)))];
|
| + [self setAddressLine1:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(ADDRESS_HOME_LINE1)))];
|
| + [self setAddressLine2:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(ADDRESS_HOME_LINE2)))];
|
| + [self setCity:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(ADDRESS_HOME_CITY)))];
|
| + [self setState:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(ADDRESS_HOME_STATE)))];
|
| + [self setZip:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(ADDRESS_HOME_ZIP)))];
|
| + [self setCountry:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(ADDRESS_HOME_COUNTRY)))];
|
| + [self setPhoneCountryCode:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(PHONE_HOME_COUNTRY_CODE)))];
|
| + [self setPhoneAreaCode:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(PHONE_HOME_CITY_CODE)))];
|
| + [self setPhoneNumber:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(PHONE_HOME_NUMBER)))];
|
| + [self setFaxCountryCode:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(PHONE_FAX_COUNTRY_CODE)))];
|
| + [self setFaxAreaCode:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(PHONE_FAX_CITY_CODE)))];
|
| + [self setFaxNumber:SysUTF16ToNSString(
|
| + profile.GetFieldText(AutoFillType(PHONE_FAX_NUMBER)))];
|
| + }
|
| + return self;
|
| +}
|
| +
|
| +- (void)dealloc {
|
| + [label_ release];
|
| + [firstName_ release];
|
| + [middleName_ release];
|
| + [lastName_ release];
|
| + [email_ release];
|
| + [companyName_ release];
|
| + [addressLine1_ release];
|
| + [addressLine2_ release];
|
| + [city_ release];
|
| + [state_ release];
|
| + [zip_ release];
|
| + [country_ release];
|
| + [phoneCountryCode_ release];
|
| + [phoneAreaCode_ release];
|
| + [phoneNumber_ release];
|
| + [faxCountryCode_ release];
|
| + [faxAreaCode_ release];
|
| + [faxNumber_ release];
|
| + [super dealloc];
|
| +}
|
| +
|
| +- (NSString*)summary {
|
| + // Bindings may set these to nil. We normalize here to @"".
|
| + if (firstName_ == nil)
|
| + firstName_ = @"";
|
| + if (lastName_ == nil)
|
| + lastName_ = @"";
|
| + if (addressLine1_ == nil)
|
| + addressLine1_ = @"";
|
| +
|
| + BOOL haveFirstName = [firstName_ length] > 0;
|
| + BOOL haveLastName = [lastName_ length] > 0;
|
| + BOOL haveAddress = [addressLine1_ length] > 0;
|
| +
|
| + NSString* nameSeparator = (haveFirstName && haveLastName) ?
|
| + l10n_util::GetNSString(IDS_AUTOFILL_DIALOG_ADDRESS_NAME_SEPARATOR) :
|
| + @"";
|
| + NSString* nameFormat =
|
| + l10n_util::GetNSStringF(IDS_AUTOFILL_DIALOG_ADDRESS_SUMMARY_NAME_FORMAT,
|
| + base::SysNSStringToUTF16(firstName_),
|
| + base::SysNSStringToUTF16(nameSeparator),
|
| + base::SysNSStringToUTF16(lastName_));
|
| + NSString* summarySeparator = (haveFirstName || haveLastName) && haveAddress ?
|
| + l10n_util::GetNSString(IDS_AUTOFILL_DIALOG_ADDRESS_SUMMARY_SEPARATOR) :
|
| + @"";
|
| + NSString* summaryFormat =
|
| + l10n_util::GetNSStringF(IDS_AUTOFILL_DIALOG_ADDRESS_SUMMARY_FORMAT,
|
| + base::SysNSStringToUTF16(nameFormat),
|
| + base::SysNSStringToUTF16(summarySeparator),
|
| + base::SysNSStringToUTF16(addressLine1_));
|
| +
|
| + return summaryFormat;
|
| +}
|
| +
|
| +- (void)copyModelToProfile:(AutoFillProfile*)profile {
|
| + DCHECK(profile);
|
| + profile->set_label(base::SysNSStringToUTF16([self label]));
|
| +
|
| + profile->SetInfo(AutoFillType(NAME_FIRST),
|
| + base::SysNSStringToUTF16([self firstName]));
|
| + profile->SetInfo(AutoFillType(NAME_MIDDLE),
|
| + base::SysNSStringToUTF16([self middleName]));
|
| + profile->SetInfo(AutoFillType(NAME_LAST),
|
| + base::SysNSStringToUTF16([self lastName]));
|
| + profile->SetInfo(AutoFillType(EMAIL_ADDRESS),
|
| + base::SysNSStringToUTF16([self email]));
|
| + profile->SetInfo(AutoFillType(COMPANY_NAME),
|
| + base::SysNSStringToUTF16([self companyName]));
|
| + profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE1),
|
| + base::SysNSStringToUTF16([self addressLine1]));
|
| + profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE2),
|
| + base::SysNSStringToUTF16([self addressLine2]));
|
| + profile->SetInfo(AutoFillType(ADDRESS_HOME_CITY),
|
| + base::SysNSStringToUTF16([self city]));
|
| + profile->SetInfo(AutoFillType(ADDRESS_HOME_STATE),
|
| + base::SysNSStringToUTF16([self state]));
|
| + profile->SetInfo(AutoFillType(ADDRESS_HOME_ZIP),
|
| + base::SysNSStringToUTF16([self zip]));
|
| + profile->SetInfo(AutoFillType(ADDRESS_HOME_COUNTRY),
|
| + base::SysNSStringToUTF16([self country]));
|
| + profile->SetInfo(AutoFillType(PHONE_HOME_COUNTRY_CODE),
|
| + base::SysNSStringToUTF16([self phoneCountryCode]));
|
| + profile->SetInfo(AutoFillType(PHONE_HOME_CITY_CODE),
|
| + base::SysNSStringToUTF16([self phoneAreaCode]));
|
| + profile->SetInfo(AutoFillType(PHONE_HOME_NUMBER),
|
| + base::SysNSStringToUTF16([self phoneNumber]));
|
| + profile->SetInfo(AutoFillType(PHONE_FAX_COUNTRY_CODE),
|
| + base::SysNSStringToUTF16([self faxCountryCode]));
|
| + profile->SetInfo(AutoFillType(PHONE_FAX_CITY_CODE),
|
| + base::SysNSStringToUTF16([self faxAreaCode]));
|
| + profile->SetInfo(AutoFillType(PHONE_FAX_NUMBER),
|
| + base::SysNSStringToUTF16([self faxNumber]));
|
| +}
|
| +
|
| +@end
|
|
|