| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/media_galleries_dialog_cocoa.h" | 5 #include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h" |
| 6 | 6 |
| 7 #include "base/strings/sys_string_conversions.h" | 7 #include "base/strings/sys_string_conversions.h" |
| 8 #include "chrome/browser/ui/chrome_style.h" | 8 #include "chrome/browser/ui/chrome_style.h" |
| 9 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_alert.h" | 9 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_alert.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" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 keyEquivalent:kKeyEquivalentNone | 91 keyEquivalent:kKeyEquivalentNone |
| 92 target:cocoa_controller_ | 92 target:cocoa_controller_ |
| 93 action:@selector(onAddFolderClicked:)]; | 93 action:@selector(onAddFolderClicked:)]; |
| 94 [[alert_ closeButton] setTarget:cocoa_controller_]; | 94 [[alert_ closeButton] setTarget:cocoa_controller_]; |
| 95 [[alert_ closeButton] setAction:@selector(onCancelButton:)]; | 95 [[alert_ closeButton] setAction:@selector(onCancelButton:)]; |
| 96 | 96 |
| 97 InitDialogControls(); | 97 InitDialogControls(); |
| 98 | 98 |
| 99 // May be NULL during tests. | 99 // May be NULL during tests. |
| 100 if (controller->web_contents()) { | 100 if (controller->web_contents()) { |
| 101 scoped_nsobject<CustomConstrainedWindowSheet> sheet( | 101 base::scoped_nsobject<CustomConstrainedWindowSheet> sheet( |
| 102 [[CustomConstrainedWindowSheet alloc] | 102 [[CustomConstrainedWindowSheet alloc] |
| 103 initWithCustomWindow:[alert_ window]]); | 103 initWithCustomWindow:[alert_ window]]); |
| 104 window_.reset(new ConstrainedWindowMac( | 104 window_.reset(new ConstrainedWindowMac( |
| 105 this, controller->web_contents(), sheet)); | 105 this, controller->web_contents(), sheet)); |
| 106 } | 106 } |
| 107 } | 107 } |
| 108 | 108 |
| 109 MediaGalleriesDialogCocoa::~MediaGalleriesDialogCocoa() { | 109 MediaGalleriesDialogCocoa::~MediaGalleriesDialogCocoa() { |
| 110 } | 110 } |
| 111 | 111 |
| 112 void MediaGalleriesDialogCocoa::InitDialogControls() { | 112 void MediaGalleriesDialogCocoa::InitDialogControls() { |
| 113 accessory_.reset([[NSBox alloc] init]); | 113 accessory_.reset([[NSBox alloc] init]); |
| 114 [accessory_ setBoxType:NSBoxCustom]; | 114 [accessory_ setBoxType:NSBoxCustom]; |
| 115 [accessory_ setBorderType:NSLineBorder]; | 115 [accessory_ setBorderType:NSLineBorder]; |
| 116 [accessory_ setBorderWidth:1]; | 116 [accessory_ setBorderWidth:1]; |
| 117 [accessory_ setCornerRadius:0]; | 117 [accessory_ setCornerRadius:0]; |
| 118 [accessory_ setTitlePosition:NSNoTitle]; | 118 [accessory_ setTitlePosition:NSNoTitle]; |
| 119 [accessory_ setBorderColor:[NSColor colorWithCalibratedRed:0.625 | 119 [accessory_ setBorderColor:[NSColor colorWithCalibratedRed:0.625 |
| 120 green:0.625 | 120 green:0.625 |
| 121 blue:0.625 | 121 blue:0.625 |
| 122 alpha:1.0]]; | 122 alpha:1.0]]; |
| 123 | 123 |
| 124 scoped_nsobject<NSScrollView> scroll_view( | 124 base::scoped_nsobject<NSScrollView> scroll_view([[NSScrollView alloc] |
| 125 [[NSScrollView alloc] initWithFrame:NSMakeRect( | 125 initWithFrame:NSMakeRect(0, 0, kCheckboxMaxWidth, kScrollAreaHeight)]); |
| 126 0, 0, kCheckboxMaxWidth, kScrollAreaHeight)]); | |
| 127 [scroll_view setHasVerticalScroller:YES]; | 126 [scroll_view setHasVerticalScroller:YES]; |
| 128 [scroll_view setHasHorizontalScroller:NO]; | 127 [scroll_view setHasHorizontalScroller:NO]; |
| 129 [scroll_view setBorderType:NSNoBorder]; | 128 [scroll_view setBorderType:NSNoBorder]; |
| 130 [scroll_view setAutohidesScrollers:YES]; | 129 [scroll_view setAutohidesScrollers:YES]; |
| 131 [[accessory_ contentView] addSubview:scroll_view]; | 130 [[accessory_ contentView] addSubview:scroll_view]; |
| 132 | 131 |
| 133 // Add gallery permission checkboxes inside the scrolling view. | 132 // Add gallery permission checkboxes inside the scrolling view. |
| 134 checkbox_container_.reset([[FlippedView alloc] initWithFrame:NSZeroRect]); | 133 checkbox_container_.reset([[FlippedView alloc] initWithFrame:NSZeroRect]); |
| 135 checkboxes_.reset([[NSMutableArray alloc] init]); | 134 checkboxes_.reset([[NSMutableArray alloc] init]); |
| 136 [scroll_view setDocumentView:checkbox_container_]; | 135 [scroll_view setDocumentView:checkbox_container_]; |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 iter != permissions.end(); iter++) { | 195 iter != permissions.end(); iter++) { |
| 197 const MediaGalleriesDialogController::GalleryPermission& permission = *iter; | 196 const MediaGalleriesDialogController::GalleryPermission& permission = *iter; |
| 198 UpdateGalleryCheckbox(permission.pref_info, permission.allowed, y_pos); | 197 UpdateGalleryCheckbox(permission.pref_info, permission.allowed, y_pos); |
| 199 y_pos = NSMaxY([[checkboxes_ lastObject] frame]) + kCheckboxMargin; | 198 y_pos = NSMaxY([[checkboxes_ lastObject] frame]) + kCheckboxMargin; |
| 200 } | 199 } |
| 201 | 200 |
| 202 return y_pos; | 201 return y_pos; |
| 203 } | 202 } |
| 204 | 203 |
| 205 CGFloat MediaGalleriesDialogCocoa::CreateCheckboxSeparator(CGFloat y_pos) { | 204 CGFloat MediaGalleriesDialogCocoa::CreateCheckboxSeparator(CGFloat y_pos) { |
| 206 scoped_nsobject<NSBox> separator([[NSBox alloc] initWithFrame:NSMakeRect( | 205 base::scoped_nsobject<NSBox> separator( |
| 206 [[NSBox alloc] initWithFrame:NSMakeRect( |
| 207 0, y_pos + kCheckboxMargin * 0.5, kCheckboxMaxWidth, 1.0)]); | 207 0, y_pos + kCheckboxMargin * 0.5, kCheckboxMaxWidth, 1.0)]); |
| 208 [separator setBoxType:NSBoxSeparator]; | 208 [separator setBoxType:NSBoxSeparator]; |
| 209 [separator setBorderType:NSLineBorder]; | 209 [separator setBorderType:NSLineBorder]; |
| 210 [separator setAlphaValue:0.2]; | 210 [separator setAlphaValue:0.2]; |
| 211 [checkbox_container_ addSubview:separator]; | 211 [checkbox_container_ addSubview:separator]; |
| 212 y_pos += kCheckboxMargin * 0.5 + 4; | 212 y_pos += kCheckboxMargin * 0.5 + 4; |
| 213 | 213 |
| 214 scoped_nsobject<NSTextField> unattached_label( | 214 base::scoped_nsobject<NSTextField> unattached_label( |
| 215 [[NSTextField alloc] initWithFrame:NSZeroRect]); | 215 [[NSTextField alloc] initWithFrame:NSZeroRect]); |
| 216 [unattached_label setEditable:NO]; | 216 [unattached_label setEditable:NO]; |
| 217 [unattached_label setSelectable:NO]; | 217 [unattached_label setSelectable:NO]; |
| 218 [unattached_label setBezeled:NO]; | 218 [unattached_label setBezeled:NO]; |
| 219 [unattached_label setAttributedStringValue: | 219 [unattached_label setAttributedStringValue: |
| 220 constrained_window::GetAttributedLabelString( | 220 constrained_window::GetAttributedLabelString( |
| 221 base::SysUTF16ToNSString( | 221 base::SysUTF16ToNSString( |
| 222 controller_->GetUnattachedLocationsHeader()), | 222 controller_->GetUnattachedLocationsHeader()), |
| 223 chrome_style::kTextFontStyle, | 223 chrome_style::kTextFontStyle, |
| 224 NSNaturalTextAlignment, | 224 NSNaturalTextAlignment, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 break; | 281 break; |
| 282 } | 282 } |
| 283 } | 283 } |
| 284 | 284 |
| 285 } | 285 } |
| 286 | 286 |
| 287 void MediaGalleriesDialogCocoa::UpdateGalleryCheckbox( | 287 void MediaGalleriesDialogCocoa::UpdateGalleryCheckbox( |
| 288 const MediaGalleryPrefInfo& gallery, | 288 const MediaGalleryPrefInfo& gallery, |
| 289 bool permitted, | 289 bool permitted, |
| 290 CGFloat y_pos) { | 290 CGFloat y_pos) { |
| 291 scoped_nsobject<NSButton> checkbox( | 291 base::scoped_nsobject<NSButton> checkbox( |
| 292 [[NSButton alloc] initWithFrame:NSZeroRect]); | 292 [[NSButton alloc] initWithFrame:NSZeroRect]); |
| 293 NSString* unique_id = GetUniqueIDForGallery(gallery); | 293 NSString* unique_id = GetUniqueIDForGallery(gallery); |
| 294 [[checkbox cell] setRepresentedObject:unique_id]; | 294 [[checkbox cell] setRepresentedObject:unique_id]; |
| 295 [[checkbox cell] setLineBreakMode:NSLineBreakByTruncatingMiddle]; | 295 [[checkbox cell] setLineBreakMode:NSLineBreakByTruncatingMiddle]; |
| 296 [checkbox setButtonType:NSSwitchButton]; | 296 [checkbox setButtonType:NSSwitchButton]; |
| 297 [checkbox setTarget:cocoa_controller_]; | 297 [checkbox setTarget:cocoa_controller_]; |
| 298 [checkbox setAction:@selector(onCheckboxToggled:)]; | 298 [checkbox setAction:@selector(onCheckboxToggled:)]; |
| 299 [checkboxes_ addObject:checkbox]; | 299 [checkboxes_ addObject:checkbox]; |
| 300 | 300 |
| 301 [checkbox setTitle:base::SysUTF16ToNSString( | 301 [checkbox setTitle:base::SysUTF16ToNSString( |
| 302 gallery.GetGalleryDisplayName())]; | 302 gallery.GetGalleryDisplayName())]; |
| 303 [checkbox setToolTip:base::SysUTF16ToNSString(gallery.GetGalleryTooltip())]; | 303 [checkbox setToolTip:base::SysUTF16ToNSString(gallery.GetGalleryTooltip())]; |
| 304 [checkbox setState:permitted ? NSOnState : NSOffState]; | 304 [checkbox setState:permitted ? NSOnState : NSOffState]; |
| 305 | 305 |
| 306 [checkbox sizeToFit]; | 306 [checkbox sizeToFit]; |
| 307 NSRect rect = [checkbox bounds]; | 307 NSRect rect = [checkbox bounds]; |
| 308 rect.origin.y = y_pos; | 308 rect.origin.y = y_pos; |
| 309 rect.origin.x = kCheckboxMargin; | 309 rect.origin.x = kCheckboxMargin; |
| 310 rect.size.width = std::min(NSWidth(rect), kCheckboxMaxWidth); | 310 rect.size.width = std::min(NSWidth(rect), kCheckboxMaxWidth); |
| 311 [checkbox setFrame:rect]; | 311 [checkbox setFrame:rect]; |
| 312 [checkbox_container_ addSubview:checkbox]; | 312 [checkbox_container_ addSubview:checkbox]; |
| 313 | 313 |
| 314 scoped_nsobject<NSTextField> details( | 314 base::scoped_nsobject<NSTextField> details( |
| 315 [[NSTextField alloc] initWithFrame:NSZeroRect]); | 315 [[NSTextField alloc] initWithFrame:NSZeroRect]); |
| 316 [details setEditable:NO]; | 316 [details setEditable:NO]; |
| 317 [details setSelectable:NO]; | 317 [details setSelectable:NO]; |
| 318 [details setBezeled:NO]; | 318 [details setBezeled:NO]; |
| 319 [details setAttributedStringValue: | 319 [details setAttributedStringValue: |
| 320 constrained_window::GetAttributedLabelString( | 320 constrained_window::GetAttributedLabelString( |
| 321 base::SysUTF16ToNSString(gallery.GetGalleryAdditionalDetails()), | 321 base::SysUTF16ToNSString(gallery.GetGalleryAdditionalDetails()), |
| 322 chrome_style::kTextFontStyle, | 322 chrome_style::kTextFontStyle, |
| 323 NSNaturalTextAlignment, | 323 NSNaturalTextAlignment, |
| 324 NSLineBreakByClipping | 324 NSLineBreakByClipping |
| 325 )]; | 325 )]; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 348 } | 348 } |
| 349 | 349 |
| 350 void MediaGalleriesDialogCocoa::OnConstrainedWindowClosed( | 350 void MediaGalleriesDialogCocoa::OnConstrainedWindowClosed( |
| 351 ConstrainedWindowMac* window) { | 351 ConstrainedWindowMac* window) { |
| 352 controller_->DialogFinished(accepted_); | 352 controller_->DialogFinished(accepted_); |
| 353 } | 353 } |
| 354 | 354 |
| 355 // static | 355 // static |
| 356 MediaGalleriesDialog* MediaGalleriesDialog::Create( | 356 MediaGalleriesDialog* MediaGalleriesDialog::Create( |
| 357 MediaGalleriesDialogController* controller) { | 357 MediaGalleriesDialogController* controller) { |
| 358 scoped_nsobject<MediaGalleriesCocoaController> cocoa_controller( | 358 base::scoped_nsobject<MediaGalleriesCocoaController> cocoa_controller( |
| 359 [[MediaGalleriesCocoaController alloc] init]); | 359 [[MediaGalleriesCocoaController alloc] init]); |
| 360 return new MediaGalleriesDialogCocoa(controller, cocoa_controller); | 360 return new MediaGalleriesDialogCocoa(controller, cocoa_controller); |
| 361 } | 361 } |
| 362 | 362 |
| 363 } // namespace chrome | 363 } // namespace chrome |
| OLD | NEW |