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

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

Issue 84343002: [rAC, OSX] Use a bubble for tooltips. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: It slices! It dices! And now even WITH TESTS! Created 7 years 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_main_container.h" 5 #import "chrome/browser/ui/cocoa/autofill/autofill_main_container.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/mac/foundation_util.h" 10 #include "base/mac/foundation_util.h"
11 #include "base/strings/sys_string_conversions.h" 11 #include "base/strings/sys_string_conversions.h"
12 #include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h" 12 #include "chrome/browser/ui/autofill/autofill_dialog_view_delegate.h"
13 #include "chrome/browser/ui/chrome_style.h" 13 #include "chrome/browser/ui/chrome_style.h"
14 #include "chrome/browser/ui/cocoa/autofill/autofill_dialog_constants.h" 14 #include "chrome/browser/ui/cocoa/autofill/autofill_dialog_constants.h"
15 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" 15 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h"
16 #import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h" 16 #import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h"
17 #import "chrome/browser/ui/cocoa/autofill/autofill_notification_container.h" 17 #import "chrome/browser/ui/cocoa/autofill/autofill_notification_container.h"
18 #import "chrome/browser/ui/cocoa/autofill/autofill_tooltip_controller.h"
18 #import "chrome/browser/ui/cocoa/hyperlink_text_view.h" 19 #import "chrome/browser/ui/cocoa/hyperlink_text_view.h"
19 #import "chrome/browser/ui/cocoa/key_equivalent_constants.h" 20 #import "chrome/browser/ui/cocoa/key_equivalent_constants.h"
20 #include "grit/generated_resources.h" 21 #include "grit/generated_resources.h"
21 #include "grit/theme_resources.h" 22 #include "grit/theme_resources.h"
22 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" 23 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h"
23 #include "ui/base/cocoa/window_size_constants.h" 24 #include "ui/base/cocoa/window_size_constants.h"
24 #include "ui/base/l10n/l10n_util.h" 25 #include "ui/base/l10n/l10n_util.h"
25 #include "ui/gfx/range/range.h" 26 #include "ui/gfx/range/range.h"
26 27
27 namespace { 28 namespace {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 [[self view] addSubview:buttonStripImage_]; 66 [[self view] addSubview:buttonStripImage_];
66 67
67 // Set up "Save in Chrome" checkbox. 68 // Set up "Save in Chrome" checkbox.
68 saveInChromeCheckbox_.reset([[NSButton alloc] initWithFrame:NSZeroRect]); 69 saveInChromeCheckbox_.reset([[NSButton alloc] initWithFrame:NSZeroRect]);
69 [saveInChromeCheckbox_ setButtonType:NSSwitchButton]; 70 [saveInChromeCheckbox_ setButtonType:NSSwitchButton];
70 [saveInChromeCheckbox_ setTitle: 71 [saveInChromeCheckbox_ setTitle:
71 base::SysUTF16ToNSString(delegate_->SaveLocallyText())]; 72 base::SysUTF16ToNSString(delegate_->SaveLocallyText())];
72 [saveInChromeCheckbox_ sizeToFit]; 73 [saveInChromeCheckbox_ sizeToFit];
73 [[self view] addSubview:saveInChromeCheckbox_]; 74 [[self view] addSubview:saveInChromeCheckbox_];
74 75
75 saveInChromeTooltip_.reset([[NSImageView alloc] initWithFrame:NSZeroRect]); 76 saveInChromeTooltip_.reset(
77 [[AutofillTooltipController alloc] init]);
76 [saveInChromeTooltip_ setImage: 78 [saveInChromeTooltip_ setImage:
77 ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed( 79 ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(
78 IDR_AUTOFILL_TOOLTIP_ICON).ToNSImage()]; 80 IDR_AUTOFILL_TOOLTIP_ICON).ToNSImage()];
79 [saveInChromeTooltip_ setToolTip: 81 [saveInChromeTooltip_ setMessage:
80 base::SysUTF16ToNSString(delegate_->SaveLocallyTooltip())]; 82 base::SysUTF16ToNSString(delegate_->SaveLocallyTooltip())];
81 [saveInChromeTooltip_ setFrameSize:[[saveInChromeTooltip_ image] size]]; 83 [[self view] addSubview:[saveInChromeTooltip_ view]];
82 [[self view] addSubview:saveInChromeTooltip_];
83 [self updateSaveInChrome]; 84 [self updateSaveInChrome];
84 85
85 detailsContainer_.reset( 86 detailsContainer_.reset(
86 [[AutofillDetailsContainer alloc] initWithDelegate:delegate_]); 87 [[AutofillDetailsContainer alloc] initWithDelegate:delegate_]);
87 NSSize frameSize = [[detailsContainer_ view] frame].size; 88 NSSize frameSize = [[detailsContainer_ view] frame].size;
88 [[detailsContainer_ view] setFrameOrigin: 89 [[detailsContainer_ view] setFrameOrigin:
89 NSMakePoint(0, NSHeight([buttonContainer_ frame]))]; 90 NSMakePoint(0, NSHeight([buttonContainer_ frame]))];
90 frameSize.height += NSHeight([buttonContainer_ frame]); 91 frameSize.height += NSHeight([buttonContainer_ frame]);
91 [[self view] setFrameSize:frameSize]; 92 [[self view] setFrameSize:frameSize];
92 [[self view] addSubview:[detailsContainer_ view]]; 93 [[self view] addSubview:[detailsContainer_ view]];
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 NSPoint walletIconOrigin = 167 NSPoint walletIconOrigin =
167 NSMakePoint(chrome_style::kHorizontalPadding, buttonFrame.origin.y); 168 NSMakePoint(chrome_style::kHorizontalPadding, buttonFrame.origin.y);
168 [buttonStripImage_ setFrameOrigin:walletIconOrigin]; 169 [buttonStripImage_ setFrameOrigin:walletIconOrigin];
169 currentY = std::max(currentY, NSMaxY([buttonStripImage_ frame])); 170 currentY = std::max(currentY, NSMaxY([buttonStripImage_ frame]));
170 171
171 NSRect checkboxFrame = [saveInChromeCheckbox_ frame]; 172 NSRect checkboxFrame = [saveInChromeCheckbox_ frame];
172 [saveInChromeCheckbox_ setFrameOrigin: 173 [saveInChromeCheckbox_ setFrameOrigin:
173 NSMakePoint(chrome_style::kHorizontalPadding, 174 NSMakePoint(chrome_style::kHorizontalPadding,
174 NSMidY(buttonFrame) - NSHeight(checkboxFrame) / 2.0)]; 175 NSMidY(buttonFrame) - NSHeight(checkboxFrame) / 2.0)];
175 176
176 NSRect tooltipFrame = [saveInChromeTooltip_ frame]; 177 NSRect tooltipFrame = [[saveInChromeTooltip_ view] frame];
177 [saveInChromeTooltip_ setFrameOrigin: 178 [[saveInChromeTooltip_ view] setFrameOrigin:
178 NSMakePoint(NSMaxX([saveInChromeCheckbox_ frame]) + autofill::kButtonGap, 179 NSMakePoint(NSMaxX([saveInChromeCheckbox_ frame]) + autofill::kButtonGap,
179 NSMidY(buttonFrame) - (NSHeight(tooltipFrame) / 2.0))]; 180 NSMidY(buttonFrame) - (NSHeight(tooltipFrame) / 2.0))];
180 181
181 NSRect notificationFrame = NSZeroRect; 182 NSRect notificationFrame = NSZeroRect;
182 notificationFrame.size = [notificationContainer_ preferredSizeForWidth: 183 notificationFrame.size = [notificationContainer_ preferredSizeForWidth:
183 NSWidth(bounds)]; 184 NSWidth(bounds)];
184 185
185 // Buttons/checkbox/legal take up lower part of view, notifications the 186 // Buttons/checkbox/legal take up lower part of view, notifications the
186 // upper part. Adjust the detailsContainer to take up the remainder. 187 // upper part. Adjust the detailsContainer to take up the remainder.
187 CGFloat remainingHeight = 188 CGFloat remainingHeight =
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 - (void)setAnchorView:(NSView*)anchorView { 325 - (void)setAnchorView:(NSView*)anchorView {
325 [notificationContainer_ setAnchorView:anchorView]; 326 [notificationContainer_ setAnchorView:anchorView];
326 } 327 }
327 328
328 - (BOOL)validate { 329 - (BOOL)validate {
329 return [detailsContainer_ validate]; 330 return [detailsContainer_ validate];
330 } 331 }
331 332
332 - (void)updateSaveInChrome { 333 - (void)updateSaveInChrome {
333 [saveInChromeCheckbox_ setHidden:!delegate_->ShouldOfferToSaveInChrome()]; 334 [saveInChromeCheckbox_ setHidden:!delegate_->ShouldOfferToSaveInChrome()];
334 [saveInChromeTooltip_ setHidden:[saveInChromeCheckbox_ isHidden]]; 335 [[saveInChromeTooltip_ view] setHidden:[saveInChromeCheckbox_ isHidden]];
335 [saveInChromeCheckbox_ setState: 336 [saveInChromeCheckbox_ setState:
336 (delegate_->ShouldSaveInChrome() ? NSOnState : NSOffState)]; 337 (delegate_->ShouldSaveInChrome() ? NSOnState : NSOffState)];
337 } 338 }
338 339
339 - (void)makeFirstInvalidInputFirstResponder { 340 - (void)makeFirstInvalidInputFirstResponder {
340 NSView* field = [detailsContainer_ firstInvalidField]; 341 NSView* field = [detailsContainer_ firstInvalidField];
341 if (!field) 342 if (!field)
342 return; 343 return;
343 344
344 [detailsContainer_ scrollToView:field]; 345 [detailsContainer_ scrollToView:field];
(...skipping 19 matching lines...) Expand all
364 @implementation AutofillMainContainer (Testing) 365 @implementation AutofillMainContainer (Testing)
365 366
366 - (NSButton*)saveInChromeCheckboxForTesting { 367 - (NSButton*)saveInChromeCheckboxForTesting {
367 return saveInChromeCheckbox_.get(); 368 return saveInChromeCheckbox_.get();
368 } 369 }
369 370
370 - (NSImageView*)buttonStripImageForTesting { 371 - (NSImageView*)buttonStripImageForTesting {
371 return buttonStripImage_.get(); 372 return buttonStripImage_.get();
372 } 373 }
373 374
374 - (NSImageView*)saveInChromeTooltipForTesting { 375 - (NSButton*)saveInChromeTooltipForTesting {
375 return saveInChromeTooltip_.get(); 376 return base::mac::ObjCCast<NSButton>([saveInChromeTooltip_ view]);
376 } 377 }
377 378
378 @end 379 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698