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 |