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 #import "ui/message_center/cocoa/notification_controller.h" | 5 #import "ui/message_center/cocoa/notification_controller.h" |
| 6 | 6 |
| 7 #include "base/strings/sys_string_conversions.h" | 7 #include "base/strings/sys_string_conversions.h" |
| 8 #include "grit/ui_resources.h" | 8 #include "grit/ui_resources.h" |
| 9 #include "skia/ext/skia_utils_mac.h" | 9 #include "skia/ext/skia_utils_mac.h" |
| 10 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" | 10 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" |
| 11 #import "ui/base/cocoa/hover_image_button.h" | 11 #import "ui/base/cocoa/hover_image_button.h" |
| 12 #include "ui/base/resource/resource_bundle.h" | 12 #include "ui/base/resource/resource_bundle.h" |
| 13 #include "ui/message_center/message_center_constants.h" | 13 #include "ui/message_center/message_center_constants.h" |
| 14 #include "ui/message_center/notification.h" | 14 #include "ui/message_center/notification.h" |
| 15 #include "ui/message_center/notification_change_observer.h" | 15 #include "ui/message_center/notification_change_observer.h" |
| 16 | 16 |
| 17 namespace { | |
| 18 | |
| 19 const int kTextTopPaddingAdjustment = -6; | |
| 20 // Compensates for padding already provided by UI elements involved. | |
|
Robert Sesek
2013/04/08 21:15:19
Should go above the constant without any indentati
dharcourt
2013/04/08 21:30:27
Done.
| |
| 21 | |
| 22 } // namespace | |
| 17 @interface MCNotificationController (Private) | 23 @interface MCNotificationController (Private) |
| 18 // Configures a NSBox to be borderless, titleless, and otherwise appearance- | 24 // Configures a NSBox to be borderless, titleless, and otherwise appearance- |
| 19 // free. | 25 // free. |
| 20 - (void)configureCustomBox:(NSBox*)box; | 26 - (void)configureCustomBox:(NSBox*)box; |
| 21 | 27 |
| 22 // Initializes the icon_ ivar and returns the view to insert into the hierarchy. | 28 // Initializes the icon_ ivar and returns the view to insert into the hierarchy. |
| 23 - (NSView*)createImageView; | 29 - (NSView*)createImageView; |
| 24 | 30 |
| 25 // Initializes the closeButton_ ivar with the configured button. | 31 // Initializes the closeButton_ ivar with the configured button. |
| 26 - (void)configureCloseButtonInFrame:(NSRect)rootFrame; | 32 - (void)configureCloseButtonInFrame:(NSRect)rootFrame; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 72 // Create the title. | 78 // Create the title. |
| 73 [self configureTitleInFrame:rootFrame]; | 79 [self configureTitleInFrame:rootFrame]; |
| 74 [rootView addSubview:title_]; | 80 [rootView addSubview:title_]; |
| 75 | 81 |
| 76 // Create the message body. | 82 // Create the message body. |
| 77 [self configureBodyInFrame:rootFrame maxY:NSMinY([title_ frame])]; | 83 [self configureBodyInFrame:rootFrame maxY:NSMinY([title_ frame])]; |
| 78 [rootView addSubview:message_]; | 84 [rootView addSubview:message_]; |
| 79 | 85 |
| 80 // In this basic notification UI, the message body is the bottom-most | 86 // In this basic notification UI, the message body is the bottom-most |
| 81 // vertical element. If it is out of the rootView's bounds, resize the view. | 87 // vertical element. If it is out of the rootView's bounds, resize the view. |
| 82 if (NSMinY([message_ frame]) < message_center::kTextTopPadding) { | 88 if (NSMinY([message_ frame]) < |
| 83 rootFrame.size.height += message_center::kTextTopPadding - | 89 message_center::kTextTopPadding + kTextTopPaddingAdjustment) { |
|
Robert Sesek
2013/04/08 21:15:19
nit: indent 4 spaces since this is a continuation
dharcourt
2013/04/08 21:30:27
Done.
| |
| 84 NSMinY([message_ frame]); | 90 rootFrame.size.height += message_center::kTextTopPadding + |
| 91 kTextTopPaddingAdjustment - | |
| 92 NSMinY([message_ frame]); | |
| 85 } | 93 } |
| 86 | 94 |
| 87 [rootView setFrame:rootFrame]; | 95 [rootView setFrame:rootFrame]; |
| 88 } | 96 } |
| 89 | 97 |
| 90 - (void)close:(id)sender { | 98 - (void)close:(id)sender { |
| 91 observer_->OnRemoveNotification(notification_->id(), /*by_user=*/true); | 99 observer_->OnRemoveNotification(notification_->id(), /*by_user=*/true); |
| 92 } | 100 } |
| 93 | 101 |
| 94 - (const message_center::Notification*)notification { | 102 - (const message_center::Notification*)notification { |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 152 NSRect frame = [self currentContentRect]; | 160 NSRect frame = [self currentContentRect]; |
| 153 | 161 |
| 154 title_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); | 162 title_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); |
| 155 [title_ setAutoresizingMask:NSViewMinYMargin]; | 163 [title_ setAutoresizingMask:NSViewMinYMargin]; |
| 156 [title_ setStringValue:base::SysUTF16ToNSString(notification_->title())]; | 164 [title_ setStringValue:base::SysUTF16ToNSString(notification_->title())]; |
| 157 [title_ setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]]; | 165 [title_ setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]]; |
| 158 | 166 |
| 159 CGFloat delta = | 167 CGFloat delta = |
| 160 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:title_]; | 168 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:title_]; |
| 161 frame.size.height = delta; | 169 frame.size.height = delta; |
| 162 frame.origin.y = NSMaxY(rootFrame) - message_center::kTextTopPadding - delta; | 170 frame.origin.y = NSMaxY(rootFrame) - message_center::kTextTopPadding + |
| 171 kTextTopPaddingAdjustment - delta; | |
| 163 [title_ setFrame:frame]; | 172 [title_ setFrame:frame]; |
| 164 } | 173 } |
| 165 | 174 |
| 166 - (void)configureBodyInFrame:(NSRect)rootFrame maxY:(CGFloat)maxY { | 175 - (void)configureBodyInFrame:(NSRect)rootFrame maxY:(CGFloat)maxY { |
| 167 NSRect frame = [self currentContentRect]; | 176 NSRect frame = [self currentContentRect]; |
| 168 | 177 |
| 169 message_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); | 178 message_.reset([self newLabelWithFrame:NSMakeRect(0, 0, NSWidth(frame), 0)]); |
| 170 [message_ setAutoresizingMask:NSViewMinYMargin]; | 179 [message_ setAutoresizingMask:NSViewMinYMargin]; |
| 171 [message_ setStringValue:base::SysUTF16ToNSString(notification_->message())]; | 180 [message_ setStringValue:base::SysUTF16ToNSString(notification_->message())]; |
| 172 [message_ setFont: | 181 [message_ setFont: |
| 173 [NSFont messageFontOfSize:message_center::kMessageFontSize]]; | 182 [NSFont messageFontOfSize:message_center::kMessageFontSize]]; |
| 174 | 183 |
| 175 CGFloat delta = | 184 CGFloat delta = |
| 176 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:message_]; | 185 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:message_]; |
| 177 frame.size.height = delta; | 186 frame.size.height = delta; |
| 178 frame.origin.y = maxY - message_center::kTextTopPadding - delta; | 187 frame.origin.y = maxY - message_center::kTextTopPadding + |
| 188 kTextTopPaddingAdjustment - delta; | |
| 179 [message_ setFrame:frame]; | 189 [message_ setFrame:frame]; |
| 180 } | 190 } |
| 181 | 191 |
| 182 - (NSTextField*)newLabelWithFrame:(NSRect)frame { | 192 - (NSTextField*)newLabelWithFrame:(NSRect)frame { |
| 183 NSTextField* label = [[NSTextField alloc] initWithFrame:frame]; | 193 NSTextField* label = [[NSTextField alloc] initWithFrame:frame]; |
| 184 [label setDrawsBackground:NO]; | 194 [label setDrawsBackground:NO]; |
| 185 [label setBezeled:NO]; | 195 [label setBezeled:NO]; |
| 186 [label setEditable:NO]; | 196 [label setEditable:NO]; |
| 187 [label setSelectable:NO]; | 197 [label setSelectable:NO]; |
| 188 [label setTextColor:gfx::SkColorToCalibratedNSColor( | 198 [label setTextColor:gfx::SkColorToCalibratedNSColor( |
| 189 message_center::kRegularTextColor)]; | 199 message_center::kRegularTextColor)]; |
| 190 return label; | 200 return label; |
| 191 } | 201 } |
| 192 | 202 |
| 193 - (NSRect)currentContentRect { | 203 - (NSRect)currentContentRect { |
| 194 DCHECK(icon_); | 204 DCHECK(icon_); |
| 195 DCHECK(closeButton_); | 205 DCHECK(closeButton_); |
| 196 | 206 |
| 197 NSRect iconFrame, contentFrame; | 207 NSRect iconFrame, contentFrame; |
| 198 NSDivideRect([[self view] bounds], &iconFrame, &contentFrame, | 208 NSDivideRect([[self view] bounds], &iconFrame, &contentFrame, |
| 199 NSWidth([icon_ frame]) + message_center::kIconToTextPadding, | 209 NSWidth([icon_ frame]) + message_center::kIconToTextPadding, |
| 200 NSMinXEdge); | 210 NSMinXEdge); |
| 201 contentFrame.size.width -= NSWidth([closeButton_ frame]); | 211 contentFrame.size.width -= NSWidth([closeButton_ frame]); |
| 202 return contentFrame; | 212 return contentFrame; |
| 203 } | 213 } |
| 204 | 214 |
| 205 @end | 215 @end |
| OLD | NEW |