Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include "chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.h" | 5 #include "chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.h" |
| 6 | 6 |
| 7 #include "base/mac/bundle_locations.h" | 7 #include "base/mac/bundle_locations.h" |
| 8 #include "base/memory/scoped_nsobject.h" | 8 #include "base/memory/scoped_nsobject.h" |
| 9 #include "chrome/browser/ui/chrome_style.h" | 9 #include "chrome/browser/ui/chrome_style.h" |
| 10 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" | 10 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" |
| 11 #include "chrome/browser/ui/chrome_style.h" | 11 #include "chrome/browser/ui/chrome_style.h" |
| 12 #include "chrome/browser/ui/chrome_style.h" | 12 #include "chrome/browser/ui/chrome_style.h" |
| 13 #import "chrome/browser/ui/cocoa/autofill/autofill_account_chooser.h" | 13 #import "chrome/browser/ui/cocoa/autofill/autofill_account_chooser.h" |
| 14 #import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h" | 14 #import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h" |
| 15 #import "chrome/browser/ui/cocoa/autofill/autofill_main_container.h" | 15 #import "chrome/browser/ui/cocoa/autofill/autofill_main_container.h" |
| 16 #import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h" | 16 #import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h" |
| 17 #import "chrome/browser/ui/cocoa/autofill/autofill_sign_in_container.h" | 17 #import "chrome/browser/ui/cocoa/autofill/autofill_sign_in_container.h" |
| 18 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" | 18 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" |
| 19 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_wi ndow.h" | 19 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_wi ndow.h" |
| 20 #include "ui/base/cocoa/window_size_constants.h" | 20 #include "ui/base/cocoa/window_size_constants.h" |
| 21 | 21 |
| 22 namespace { | |
| 23 | |
| 24 const CGFloat kAccountChooserHeight = 20.0; | |
| 25 const CGFloat kRelatedControlVerticalSpacing = 8.0; | |
| 26 | |
| 27 } // namespace; | |
| 28 | |
| 22 namespace autofill { | 29 namespace autofill { |
| 23 | 30 |
| 24 // static | 31 // static |
| 25 AutofillDialogView* AutofillDialogView::Create( | 32 AutofillDialogView* AutofillDialogView::Create( |
| 26 AutofillDialogController* controller) { | 33 AutofillDialogController* controller) { |
| 27 return new AutofillDialogCocoa(controller); | 34 return new AutofillDialogCocoa(controller); |
| 28 } | 35 } |
| 29 | 36 |
| 30 AutofillDialogCocoa::AutofillDialogCocoa(AutofillDialogController* controller) | 37 AutofillDialogCocoa::AutofillDialogCocoa(AutofillDialogController* controller) |
| 31 : controller_(controller) { | 38 : controller_(controller) { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 [[AutofillSignInContainer alloc] | 139 [[AutofillSignInContainer alloc] |
| 133 initWithController:autofillDialog->controller()]); | 140 initWithController:autofillDialog->controller()]); |
| 134 [[signInContainer_ view] setHidden:YES]; | 141 [[signInContainer_ view] setHidden:YES]; |
| 135 | 142 |
| 136 NSRect clientRect = [[mainContainer_ view] frame]; | 143 NSRect clientRect = [[mainContainer_ view] frame]; |
| 137 clientRect.origin = NSMakePoint(chrome_style::kClientBottomPadding, | 144 clientRect.origin = NSMakePoint(chrome_style::kClientBottomPadding, |
| 138 chrome_style::kHorizontalPadding); | 145 chrome_style::kHorizontalPadding); |
| 139 [[mainContainer_ view] setFrame:clientRect]; | 146 [[mainContainer_ view] setFrame:clientRect]; |
| 140 [[signInContainer_ view] setFrame:clientRect]; | 147 [[signInContainer_ view] setFrame:clientRect]; |
| 141 | 148 |
| 142 const CGFloat kAccountChooserHeight = 20.0; | |
| 143 NSRect headerRect = clientRect; | 149 NSRect headerRect = clientRect; |
| 144 headerRect.size.height = kAccountChooserHeight; | 150 headerRect.size.height = kAccountChooserHeight; |
| 145 headerRect.origin.y = NSMaxY(clientRect); | 151 headerRect.origin.y = NSMaxY(clientRect); |
| 146 accountChooser_.reset([[AutofillAccountChooser alloc] | 152 accountChooser_.reset([[AutofillAccountChooser alloc] |
| 147 initWithFrame:headerRect | 153 initWithFrame:headerRect |
| 148 controller:autofillDialog->controller()]); | 154 controller:autofillDialog->controller()]); |
| 149 [[[self window] contentView] setSubviews: | 155 [[[self window] contentView] setSubviews: |
| 150 @[accountChooser_, [mainContainer_ view], [signInContainer_ view]]]; | 156 @[accountChooser_, [mainContainer_ view], [signInContainer_ view]]]; |
| 151 | 157 |
| 152 NSRect contentRect = clientRect; | 158 NSRect contentRect = clientRect; |
| 153 contentRect.origin = NSMakePoint(0, 0); | 159 contentRect.origin = NSMakePoint(0, 0); |
| 154 contentRect.size.width += 2 * chrome_style::kHorizontalPadding; | 160 contentRect.size.width += 2 * chrome_style::kHorizontalPadding; |
| 155 contentRect.size.height += NSHeight(headerRect) + | 161 contentRect.size.height += NSHeight(headerRect) + |
| 156 chrome_style::kClientBottomPadding + | 162 chrome_style::kClientBottomPadding + |
| 157 chrome_style::kTitleTopPadding; | 163 chrome_style::kTitleTopPadding; |
| 158 [[[self window] contentView] setFrame:contentRect]; | 164 [self performLayout]; |
| 159 NSRect frame = [[self window] frameRectForContentRect:contentRect]; | |
| 160 [[self window] setFrame:frame display:YES]; | |
| 161 | |
| 162 [accountChooser_ | |
| 163 setAutoresizingMask:(NSViewWidthSizable | NSViewMinYMargin)]; | |
| 164 } | 165 } |
| 165 return self; | 166 return self; |
| 166 } | 167 } |
| 167 | 168 |
| 169 - (void)requestRelayout { | |
| 170 [self performLayout]; | |
| 171 } | |
| 172 | |
| 173 - (NSSize)preferredSize { | |
| 174 NSSize contentSize; | |
| 175 if ([[signInContainer_ view] isHidden]) | |
| 176 contentSize = [mainContainer_ preferredSize]; | |
| 177 else { | |
|
Robert Sesek
2013/05/23 15:30:16
If any branch has braces, all branches need braces
groby-ooo-7-16
2013/05/24 20:36:14
Done.
| |
| 178 // TODO(groby): SignInContainer needs preferredSize, too. | |
| 179 NOTREACHED(); | |
| 180 } | |
| 181 | |
| 182 NSSize headerSize = NSMakeSize(contentSize.width, kAccountChooserHeight); | |
| 183 NSSize size = NSMakeSize( | |
| 184 std::max(contentSize.width, headerSize.width), | |
| 185 contentSize.height + headerSize.height + kRelatedControlVerticalSpacing); | |
| 186 size.width += 2 * chrome_style::kHorizontalPadding; | |
| 187 size.height += chrome_style::kClientBottomPadding + | |
| 188 chrome_style::kTitleTopPadding; | |
| 189 return size; | |
| 190 } | |
| 191 | |
| 192 - (void)performLayout { | |
| 193 // Don't animate when we first show the window. | |
| 194 BOOL shouldAnimate = | |
| 195 !NSEqualRects(ui::kWindowSizeDeterminedLater, [[self window] frame]); | |
| 196 | |
| 197 NSRect contentRect = NSZeroRect; | |
| 198 contentRect.size = [self preferredSize]; | |
| 199 NSRect clientRect = NSInsetRect( | |
| 200 contentRect, chrome_style::kHorizontalPadding, 0); | |
| 201 clientRect.origin.y += chrome_style::kClientBottomPadding; | |
| 202 clientRect.size.height -= chrome_style::kTitleTopPadding + | |
| 203 chrome_style::kClientBottomPadding; | |
| 204 | |
| 205 NSRect headerRect, mainRect; | |
| 206 NSDivideRect(clientRect, &headerRect, &mainRect, | |
| 207 kAccountChooserHeight, NSMaxYEdge); | |
| 208 | |
| 209 [accountChooser_ setFrame:headerRect]; | |
| 210 [[mainContainer_ view] setFrame:mainRect]; | |
| 211 [mainContainer_ performLayout]; | |
| 212 [[signInContainer_ view] setFrame:mainRect]; | |
| 213 // TODO(groby): Perform layout for signInContainer. | |
| 214 | |
| 215 NSRect frameRect = [[self window] frameRectForContentRect:contentRect]; | |
| 216 [[self window] setFrame:frameRect display:YES animate:shouldAnimate]; | |
| 217 } | |
| 218 | |
| 168 - (IBAction)accept:(id)sender { | 219 - (IBAction)accept:(id)sender { |
| 169 // TODO(groby): Validation goes here. | 220 // TODO(groby): Validation goes here. |
| 170 autofillDialog_->controller()->OnAccept(); | 221 autofillDialog_->controller()->OnAccept(); |
| 171 } | 222 } |
| 172 | 223 |
| 173 - (IBAction)cancel:(id)sender { | 224 - (IBAction)cancel:(id)sender { |
| 174 // TODO(groby): Validation goes here. | 225 // TODO(groby): Validation goes here. |
| 175 autofillDialog_->controller()->OnCancel(); | 226 autofillDialog_->controller()->OnCancel(); |
| 176 autofillDialog_->Hide(); | 227 autofillDialog_->Hide(); |
| 177 } | 228 } |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 196 - (void)hideSignIn { | 247 - (void)hideSignIn { |
| 197 [[signInContainer_ view] setHidden:YES]; | 248 [[signInContainer_ view] setHidden:YES]; |
| 198 [[mainContainer_ view] setHidden:NO]; | 249 [[mainContainer_ view] setHidden:NO]; |
| 199 } | 250 } |
| 200 | 251 |
| 201 - (void)modelChanged { | 252 - (void)modelChanged { |
| 202 [mainContainer_ modelChanged]; | 253 [mainContainer_ modelChanged]; |
| 203 } | 254 } |
| 204 | 255 |
| 205 @end | 256 @end |
| OLD | NEW |