| 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 #import "ui/message_center/cocoa/settings_controller.h" | 5 #import "ui/message_center/cocoa/settings_controller.h" |
| 6 | 6 |
| 7 #include "base/mac/foundation_util.h" | 7 #include "base/mac/foundation_util.h" |
| 8 #import "base/mac/scoped_nsobject.h" |
| 8 #include "base/strings/sys_string_conversions.h" | 9 #include "base/strings/sys_string_conversions.h" |
| 9 #include "grit/ui_strings.h" | 10 #include "grit/ui_strings.h" |
| 11 #include "skia/ext/skia_utils_mac.h" |
| 10 #include "ui/base/l10n/l10n_util.h" | 12 #include "ui/base/l10n/l10n_util.h" |
| 11 #include "ui/base/resource/resource_bundle.h" | 13 #include "ui/base/resource/resource_bundle.h" |
| 12 #import "base/memory/scoped_nsobject.h" | |
| 13 #import "ui/message_center/cocoa/tray_view_controller.h" | 14 #import "ui/message_center/cocoa/tray_view_controller.h" |
| 14 #include "ui/message_center/message_center_style.h" | 15 #include "ui/message_center/message_center_style.h" |
| 15 #include "skia/ext/skia_utils_mac.h" | |
| 16 | 16 |
| 17 const int kMarginWidth = 16; | 17 const int kMarginWidth = 16; |
| 18 const int kEntryHeight = 38; | 18 const int kEntryHeight = 38; |
| 19 const int kIconSize = 16; | 19 const int kIconSize = 16; |
| 20 const int kIconTextPadding = 8; | 20 const int kIconTextPadding = 8; |
| 21 const int kCheckmarkIconPadding = 16; | 21 const int kCheckmarkIconPadding = 16; |
| 22 | 22 |
| 23 const int kIntrinsicCheckmarkPadding = 4; // Padding already provided by Cocoa. | 23 const int kIntrinsicCheckmarkPadding = 4; // Padding already provided by Cocoa. |
| 24 const int kCorrectedCheckmarkPadding = | 24 const int kCorrectedCheckmarkPadding = |
| 25 kCheckmarkIconPadding - kIntrinsicCheckmarkPadding; | 25 kCheckmarkIconPadding - kIntrinsicCheckmarkPadding; |
| 26 | 26 |
| 27 @interface MCSettingsButtonCell : NSButtonCell { | 27 @interface MCSettingsButtonCell : NSButtonCell { |
| 28 // A checkbox's regular image is the checkmark image. This additional image | 28 // A checkbox's regular image is the checkmark image. This additional image |
| 29 // is used for the favicon or app icon shown next to the checkmark. | 29 // is used for the favicon or app icon shown next to the checkmark. |
| 30 scoped_nsobject<NSImage> extraImage_; | 30 base::scoped_nsobject<NSImage> extraImage_; |
| 31 } | 31 } |
| 32 - (void)setExtraImage:(NSImage*)extraImage; | 32 - (void)setExtraImage:(NSImage*)extraImage; |
| 33 @end | 33 @end |
| 34 | 34 |
| 35 @implementation MCSettingsButtonCell | 35 @implementation MCSettingsButtonCell |
| 36 - (void)setExtraImage:(NSImage*)extraImage { | 36 - (void)setExtraImage:(NSImage*)extraImage { |
| 37 extraImage_.reset([extraImage retain]); | 37 extraImage_.reset([extraImage retain]); |
| 38 } | 38 } |
| 39 | 39 |
| 40 - (NSRect)drawTitle:(NSAttributedString*)title | 40 - (NSRect)drawTitle:(NSAttributedString*)title |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 return label; | 143 return label; |
| 144 } | 144 } |
| 145 | 145 |
| 146 - (void)loadView { | 146 - (void)loadView { |
| 147 provider_->GetNotifierList(¬ifiers_); | 147 provider_->GetNotifierList(¬ifiers_); |
| 148 CGFloat maxHeight = [MCTrayViewController maxTrayClientHeight]; | 148 CGFloat maxHeight = [MCTrayViewController maxTrayClientHeight]; |
| 149 | 149 |
| 150 // Container view. | 150 // Container view. |
| 151 NSRect fullFrame = | 151 NSRect fullFrame = |
| 152 NSMakeRect(0, 0, [MCTrayViewController trayWidth], maxHeight); | 152 NSMakeRect(0, 0, [MCTrayViewController trayWidth], maxHeight); |
| 153 scoped_nsobject<NSBox> view([[NSBox alloc] initWithFrame:fullFrame]); | 153 base::scoped_nsobject<NSBox> view([[NSBox alloc] initWithFrame:fullFrame]); |
| 154 [view setBorderType:NSNoBorder]; | 154 [view setBorderType:NSNoBorder]; |
| 155 [view setBoxType:NSBoxCustom]; | 155 [view setBoxType:NSBoxCustom]; |
| 156 [view setContentViewMargins:NSZeroSize]; | 156 [view setContentViewMargins:NSZeroSize]; |
| 157 [view setFillColor:gfx::SkColorToCalibratedNSColor( | 157 [view setFillColor:gfx::SkColorToCalibratedNSColor( |
| 158 message_center::kMessageCenterBackgroundColor)]; | 158 message_center::kMessageCenterBackgroundColor)]; |
| 159 [view setTitlePosition:NSNoTitle]; | 159 [view setTitlePosition:NSNoTitle]; |
| 160 [self setView:view]; | 160 [self setView:view]; |
| 161 | 161 |
| 162 // "Settings" text. | 162 // "Settings" text. |
| 163 NSRect headerFrame = NSMakeRect( | 163 NSRect headerFrame = NSMakeRect( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 192 [detailsText_ sizeToFit]; | 192 [detailsText_ sizeToFit]; |
| 193 subheaderFrame = [detailsText_ frame]; | 193 subheaderFrame = [detailsText_ frame]; |
| 194 subheaderFrame.origin.y = | 194 subheaderFrame.origin.y = |
| 195 NSMinY(headerFrame) - message_center::kTextTopPadding - | 195 NSMinY(headerFrame) - message_center::kTextTopPadding - |
| 196 NSHeight(subheaderFrame); | 196 NSHeight(subheaderFrame); |
| 197 [[self view] addSubview:detailsText_]; | 197 [[self view] addSubview:detailsText_]; |
| 198 | 198 |
| 199 // Document view for the notifier settings. | 199 // Document view for the notifier settings. |
| 200 CGFloat y = 0; | 200 CGFloat y = 0; |
| 201 NSRect documentFrame = NSMakeRect(0, 0, NSWidth(fullFrame), 0); | 201 NSRect documentFrame = NSMakeRect(0, 0, NSWidth(fullFrame), 0); |
| 202 scoped_nsobject<NSView> documentView( | 202 base::scoped_nsobject<NSView> documentView( |
| 203 [[NSView alloc] initWithFrame:documentFrame]); | 203 [[NSView alloc] initWithFrame:documentFrame]); |
| 204 for (int i = notifiers_.size() - 1; i >= 0; --i) { | 204 for (int i = notifiers_.size() - 1; i >= 0; --i) { |
| 205 message_center::Notifier* notifier = notifiers_[i]; | 205 message_center::Notifier* notifier = notifiers_[i]; |
| 206 | 206 |
| 207 // TODO(thakis): Use a custom button cell. | 207 // TODO(thakis): Use a custom button cell. |
| 208 NSRect frame = NSMakeRect( | 208 NSRect frame = NSMakeRect( |
| 209 kMarginWidth, y, NSWidth(documentFrame) - kMarginWidth, kEntryHeight); | 209 kMarginWidth, y, NSWidth(documentFrame) - kMarginWidth, kEntryHeight); |
| 210 scoped_nsobject<NSButton> button([[NSButton alloc] initWithFrame:frame]); | 210 base::scoped_nsobject<NSButton> button( |
| 211 scoped_nsobject<MCSettingsButtonCell> cell( | 211 [[NSButton alloc] initWithFrame:frame]); |
| 212 base::scoped_nsobject<MCSettingsButtonCell> cell( |
| 212 [[MCSettingsButtonCell alloc] | 213 [[MCSettingsButtonCell alloc] |
| 213 initTextCell:base::SysUTF16ToNSString(notifier->name)]); | 214 initTextCell:base::SysUTF16ToNSString(notifier->name)]); |
| 214 [button setCell:cell]; | 215 [button setCell:cell]; |
| 215 [button setButtonType:NSSwitchButton]; | 216 [button setButtonType:NSSwitchButton]; |
| 216 | 217 |
| 217 [button setState:notifier->enabled ? NSOnState : NSOffState]; | 218 [button setState:notifier->enabled ? NSOnState : NSOffState]; |
| 218 [button setTag:i]; | 219 [button setTag:i]; |
| 219 [button setTarget:self]; | 220 [button setTarget:self]; |
| 220 [button setAction:@selector(checkboxClicked:)]; | 221 [button setAction:@selector(checkboxClicked:)]; |
| 221 | 222 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 | 305 |
| 305 - (NSButton*)buttonForNotifierAtIndex:(size_t)index { | 306 - (NSButton*)buttonForNotifierAtIndex:(size_t)index { |
| 306 NSArray* subviews = [[scrollView_ documentView] subviews]; | 307 NSArray* subviews = [[scrollView_ documentView] subviews]; |
| 307 // The checkboxes are in bottom-top order, the checkbox for notifiers_[0] is | 308 // The checkboxes are in bottom-top order, the checkbox for notifiers_[0] is |
| 308 // last. | 309 // last. |
| 309 NSView* view = [subviews objectAtIndex:notifiers_.size() - 1 - index]; | 310 NSView* view = [subviews objectAtIndex:notifiers_.size() - 1 - index]; |
| 310 return base::mac::ObjCCastStrict<NSButton>(view); | 311 return base::mac::ObjCCastStrict<NSButton>(view); |
| 311 } | 312 } |
| 312 | 313 |
| 313 @end | 314 @end |
| OLD | NEW |