Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: chrome/browser/autofill/autofill_credit_card_view_controller_mac.mm

Issue 2673006: AutoFill Profiles dialog implemented according to new mocks on Mac (Closed)
Patch Set: Revisions based on review comments. Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/autofill/autofill_credit_card_view_controller_mac.h"
6 #include "app/l10n_util.h"
7 #include "base/mac_util.h"
8 #include "base/sys_string_conversions.h"
9 #import "chrome/browser/autofill/autofill_credit_card_model_mac.h"
10 #import "chrome/browser/autofill/autofill_dialog_controller_mac.h"
11 #include "chrome/browser/autofill/credit_card.h"
12 #include "grit/generated_resources.h"
13
14 // Private methods for the |AutoFillCreditCardViewController| class.
15 @interface AutoFillCreditCardViewController (PrivateMethods)
16 - (void)rebuildBillingAddressContents;
17 - (void)rebuildShippingAddressContents;
18 @end
19
20 @implementation AutoFillCreditCardViewController
21
22 @synthesize creditCardModel = creditCardModel_;
23 @synthesize billingAddressContents = billingAddressContents_;
24 @synthesize shippingAddressContents = shippingAddressContents_;
25
26 - (id)initWithCreditCard:(const CreditCard&)creditCard
27 disclosure:(NSCellStateValue)disclosureState
28 controller:(AutoFillDialogController*)parentController {
29 self = [super initWithNibName:@"AutoFillCreditCardFormView"
30 bundle:mac_util::MainAppBundle()
31 disclosure:disclosureState];
32 if (self) {
33 // Pull in the view for initialization.
34 [self view];
35
36 // Create the model. We use setter here for KVO.
37 [self setCreditCardModel:[[[AutoFillCreditCardModel alloc]
38 initWithCreditCard:creditCard] autorelease]];
39
40 // We keep track of our parent controller for model-update purposes.
41 parentController_ = parentController;
42
43 // Setup initial state of popups.
44 [self onAddressesChanged:self];
45 }
46 return self;
47 }
48
49 - (void)dealloc {
50 [creditCardModel_ release];
51 [billingAddressContents_ release];
52 [shippingAddressContents_ release];
53 [super dealloc];
54 }
55
56 - (void)awakeFromNib {
57 [super awakeFromNib];
58
59 // Turn menu autoenable off. We manually govern this.
60 [billingAddressPopup_ setAutoenablesItems:NO];
61 [shippingAddressPopup_ setAutoenablesItems:NO];
62 }
63
64 - (IBAction)deleteCreditCard:(id)sender {
65 [parentController_ deleteCreditCard:self];
66 }
67
68 - (IBAction)onAddressesChanged:(id)sender {
69 [self rebuildBillingAddressContents];
70 [self rebuildShippingAddressContents];
71 }
72
73 - (void)copyModelToCreditCard:(CreditCard*)creditCard {
74 [creditCardModel_ copyModelToCreditCard:creditCard];
75
76 // The model copies the shipping and billing addresses blindly. We need
77 // to clear the strings in the case that our special menus are in effect.
78 if ([billingAddressPopup_ indexOfSelectedItem] <= 0)
79 creditCard->set_billing_address(string16());
80 if ([shippingAddressPopup_ indexOfSelectedItem] <= 0)
81 creditCard->set_shipping_address(string16());
82 }
83
84 // Builds the |billingAddressContents_| array of strings from the list of
85 // addresses returned by the |parentController_| and additional UI string.
86 // Ensures that current selection is valid, if not reset it.
87 - (void)rebuildBillingAddressContents {
88 NSString* menuString = l10n_util::GetNSString(
89 IDS_AUTOFILL_DIALOG_CHOOSE_EXISTING_ADDRESS);
90
91 // Build the menu array and set it.
92 NSArray* addressStrings = [parentController_ addressLabels];
93 NSArray* newArray = [[NSArray arrayWithObject:menuString]
94 arrayByAddingObjectsFromArray:addressStrings];
95 [self setBillingAddressContents:newArray];
96
97 // If the addresses no longer contain our selected item, reset the selection.
98 if ([addressStrings
99 indexOfObject:[creditCardModel_ billingAddress]] == NSNotFound) {
100 [creditCardModel_ setBillingAddress:menuString];
101 }
102
103 // Disable first item in menu. "Choose existing address" is a non-item.
104 [[billingAddressPopup_ itemAtIndex:0] setEnabled:NO];
105 }
106
107 // Builds the |shippingAddressContents_| array of strings from the list of
108 // addresses returned by the |parentController_| and additional UI string.
109 // Ensures that current selection is valid, if not reset it.
110 - (void)rebuildShippingAddressContents {
111 NSString* menuString = l10n_util::GetNSString(
112 IDS_AUTOFILL_DIALOG_SAME_AS_BILLING);
113
114 // Build the menu array and set it.
115 NSArray* addressStrings = [parentController_ addressLabels];
116 NSArray* newArray = [[NSArray arrayWithObject:menuString]
117 arrayByAddingObjectsFromArray:addressStrings];
118 [self setShippingAddressContents:newArray];
119
120 // If the addresses no longer contain our selected item, reset the selection.
121 if ([addressStrings
122 indexOfObject:[creditCardModel_ shippingAddress]] == NSNotFound) {
123 [creditCardModel_ setShippingAddress:menuString];
124 }
125 }
126
127 @end
128
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698