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

Side by Side Diff: chrome/browser/ui/cocoa/autofill/autofill_section_container.mm

Issue 18112007: [rAC] added popup highlighting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: New shiny rendering and other review fixes. Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h" 5 #import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h"
6 6
7 #include "base/strings/sys_string_conversions.h" 7 #include "base/strings/sys_string_conversions.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/ui/autofill/autofill_dialog_controller.h" 9 #include "chrome/browser/ui/autofill/autofill_dialog_controller.h"
10 #import "chrome/browser/ui/cocoa/autofill/autofill_pop_up_button.h"
10 #import "chrome/browser/ui/cocoa/autofill/autofill_section_view.h" 11 #import "chrome/browser/ui/cocoa/autofill/autofill_section_view.h"
11 #import "chrome/browser/ui/cocoa/autofill/autofill_suggestion_container.h" 12 #import "chrome/browser/ui/cocoa/autofill/autofill_suggestion_container.h"
12 #import "chrome/browser/ui/cocoa/autofill/autofill_textfield.h" 13 #import "chrome/browser/ui/cocoa/autofill/autofill_textfield.h"
13 #import "chrome/browser/ui/cocoa/autofill/layout_view.h" 14 #import "chrome/browser/ui/cocoa/autofill/layout_view.h"
14 #include "chrome/browser/ui/cocoa/autofill/simple_grid_layout.h" 15 #include "chrome/browser/ui/cocoa/autofill/simple_grid_layout.h"
15 #import "chrome/browser/ui/cocoa/image_button_cell.h" 16 #import "chrome/browser/ui/cocoa/image_button_cell.h"
16 #import "chrome/browser/ui/cocoa/menu_button.h" 17 #import "chrome/browser/ui/cocoa/menu_button.h"
17 #include "grit/theme_resources.h" 18 #include "grit/theme_resources.h"
18 #import "ui/base/cocoa/menu_controller.h" 19 #import "ui/base/cocoa/menu_controller.h"
19 #include "ui/base/l10n/l10n_util_mac.h" 20 #include "ui/base/l10n/l10n_util_mac.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 - (id)initWithController:(autofill::AutofillDialogController*)controller 85 - (id)initWithController:(autofill::AutofillDialogController*)controller
85 forSection:(autofill::DialogSection)section { 86 forSection:(autofill::DialogSection)section {
86 if (self = [super init]) { 87 if (self = [super init]) {
87 section_ = section; 88 section_ = section;
88 controller_ = controller; 89 controller_ = controller;
89 } 90 }
90 return self; 91 return self;
91 } 92 }
92 93
93 - (void)getInputs:(autofill::DetailOutputMap*)output { 94 - (void)getInputs:(autofill::DetailOutputMap*)output {
94 for (id input in [inputs_ subviews]) { 95 for (NSControl<AutofillInputField>* input in [inputs_ subviews]) {
95 const autofill::DetailInput* detailInput = 96 const autofill::DetailInput* detailInput =
96 reinterpret_cast<autofill::DetailInput*>([input tag]); 97 reinterpret_cast<autofill::DetailInput*>([input tag]);
97 DCHECK(detailInput); 98 DCHECK(detailInput);
98 NSString* value = [input isKindOfClass:[NSPopUpButton class]] ? 99 NSString* value = [input fieldValue];
99 [input titleOfSelectedItem] : [input stringValue];
100 output->insert( 100 output->insert(
101 std::make_pair(detailInput,base::SysNSStringToUTF16(value))); 101 std::make_pair(detailInput,base::SysNSStringToUTF16(value)));
102 } 102 }
103 } 103 }
104 104
105 - (void)modelChanged { 105 - (void)modelChanged {
106 ui::MenuModel* suggestionModel = controller_->MenuModelForSection(section_); 106 ui::MenuModel* suggestionModel = controller_->MenuModelForSection(section_);
107 menuController_.reset([[MenuController alloc] initWithModel:suggestionModel 107 menuController_.reset([[MenuController alloc] initWithModel:suggestionModel
108 useWithPopUpButtonCell:YES]); 108 useWithPopUpButtonCell:YES]);
109 NSMenu* menu = [menuController_ menu]; 109 NSMenu* menu = [menuController_ menu];
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 column_set->AddPaddingColumn(kRelatedControlHorizontalSpacing); 266 column_set->AddPaddingColumn(kRelatedControlHorizontalSpacing);
267 // Must explicitly skip the padding column since we've already started 267 // Must explicitly skip the padding column since we've already started
268 // adding views. 268 // adding views.
269 layout->SkipColumns(1); 269 layout->SkipColumns(1);
270 } 270 }
271 271
272 column_set->AddColumn(input.expand_weight ? input.expand_weight : 1.0f); 272 column_set->AddColumn(input.expand_weight ? input.expand_weight : 1.0f);
273 273
274 ui::ComboboxModel* input_model = 274 ui::ComboboxModel* input_model =
275 controller_->ComboboxModelForAutofillType(input.type); 275 controller_->ComboboxModelForAutofillType(input.type);
276 base::scoped_nsprotocol<NSControl<AutofillInputField>*> control;
276 if (input_model) { 277 if (input_model) {
277 base::scoped_nsobject<NSPopUpButton> popup( 278 base::scoped_nsobject<AutofillPopUpButton> popup(
278 [[NSPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:YES]); 279 [[AutofillPopUpButton alloc] initWithFrame:NSZeroRect pullsDown:NO]);
279 for (int i = 0; i < input_model->GetItemCount(); ++i) { 280 for (int i = 0; i < input_model->GetItemCount(); ++i) {
280 [popup addItemWithTitle: 281 [popup addItemWithTitle:
281 base::SysUTF16ToNSString(input_model->GetItemAt(i))]; 282 base::SysUTF16ToNSString(input_model->GetItemAt(i))];
282 } 283 }
283 [popup selectItemWithTitle:base::SysUTF16ToNSString(input.initial_value)]; 284 control.reset(popup.release());
284 [popup sizeToFit];
285 [popup setTag:reinterpret_cast<NSInteger>(&input)];
286 layout->AddView(popup);
287 } else { 285 } else {
288 base::scoped_nsobject<AutofillTextField> field( 286 base::scoped_nsobject<AutofillTextField> field(
289 [[AutofillTextField alloc] init]); 287 [[AutofillTextField alloc] init]);
290 [[field cell] setPlaceholderString: 288 [[field cell] setPlaceholderString:
291 l10n_util::GetNSStringWithFixup(input.placeholder_text_rid)]; 289 l10n_util::GetNSStringWithFixup(input.placeholder_text_rid)];
292 [[field cell] setIcon: 290 [[field cell] setIcon:
293 controller_->IconForField( 291 controller_->IconForField(
294 input.type, input.initial_value).AsNSImage()]; 292 input.type, input.initial_value).AsNSImage()];
295 [[field cell] setInvalid:YES]; 293 control.reset(field.release());
296 [field sizeToFit];
297 [field setTag:reinterpret_cast<NSInteger>(&input)];
298 layout->AddView(field);
299 } 294 }
295 [control setFieldValue:base::SysUTF16ToNSString(input.initial_value)];
296 [control setInvalid:YES];
297 [control sizeToFit];
298 [control setTag:reinterpret_cast<NSInteger>(&input)];
299 layout->AddView(control);
300 } 300 }
301 301
302 return view.autorelease(); 302 return view.autorelease();
303 } 303 }
304 304
305 - (void)updateSuggestionState { 305 - (void)updateSuggestionState {
306 const autofill::SuggestionState& suggestionState = 306 const autofill::SuggestionState& suggestionState =
307 controller_->SuggestionStateForSection(section_); 307 controller_->SuggestionStateForSection(section_);
308 bool showSuggestions = !suggestionState.text.empty(); 308 bool showSuggestions = !suggestionState.text.empty();
309 309
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 const autofill::DetailInput* detailInput = 351 const autofill::DetailInput* detailInput =
352 reinterpret_cast<autofill::DetailInput*>([control tag]); 352 reinterpret_cast<autofill::DetailInput*>([control tag]);
353 DCHECK(detailInput); 353 DCHECK(detailInput);
354 if (detailInput->type == type) 354 if (detailInput->type == type)
355 return control; 355 return control;
356 } 356 }
357 return nil; 357 return nil;
358 } 358 }
359 359
360 @end 360 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698