| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #import "chrome/browser/ui/cocoa/theme_install_bubble_view.h" | 7 #import "chrome/browser/ui/cocoa/theme_install_bubble_view.h" |
| 8 | 8 |
| 9 #include "base/memory/scoped_nsobject.h" | 9 #include "base/memory/scoped_nsobject.h" |
| 10 #include "chrome/common/chrome_notification_types.h" |
| 10 #include "content/common/notification_service.h" | 11 #include "content/common/notification_service.h" |
| 11 #include "grit/generated_resources.h" | 12 #include "grit/generated_resources.h" |
| 12 #include "ui/base/l10n/l10n_util_mac.h" | 13 #include "ui/base/l10n/l10n_util_mac.h" |
| 13 | 14 |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 16 // The alpha of the bubble. | 17 // The alpha of the bubble. |
| 17 static const float kBubbleAlpha = 0.75; | 18 static const float kBubbleAlpha = 0.75; |
| 18 | 19 |
| 19 // The roundedness of the edges of our bubble. | 20 // The roundedness of the edges of our bubble. |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 DCHECK(window); | 56 DCHECK(window); |
| 56 | 57 |
| 57 NSView* parent_view = [window contentView]; | 58 NSView* parent_view = [window contentView]; |
| 58 NSRect parent_bounds = [parent_view bounds]; | 59 NSRect parent_bounds = [parent_view bounds]; |
| 59 if (parent_bounds.size.height < [cocoa_view_ preferredSize].height) | 60 if (parent_bounds.size.height < [cocoa_view_ preferredSize].height) |
| 60 Close(); | 61 Close(); |
| 61 | 62 |
| 62 // Close when theme has been installed. | 63 // Close when theme has been installed. |
| 63 registrar_.Add( | 64 registrar_.Add( |
| 64 this, | 65 this, |
| 65 NotificationType::BROWSER_THEME_CHANGED, | 66 chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
| 66 NotificationService::AllSources()); | 67 NotificationService::AllSources()); |
| 67 | 68 |
| 68 // Close when we are installing an extension, not a theme. | 69 // Close when we are installing an extension, not a theme. |
| 69 registrar_.Add( | 70 registrar_.Add( |
| 70 this, | 71 this, |
| 71 NotificationType::NO_THEME_DETECTED, | 72 chrome::NOTIFICATION_NO_THEME_DETECTED, |
| 72 NotificationService::AllSources()); | 73 NotificationService::AllSources()); |
| 73 registrar_.Add( | 74 registrar_.Add( |
| 74 this, | 75 this, |
| 75 NotificationType::EXTENSION_INSTALLED, | 76 chrome::NOTIFICATION_EXTENSION_INSTALLED, |
| 76 NotificationService::AllSources()); | 77 NotificationService::AllSources()); |
| 77 registrar_.Add( | 78 registrar_.Add( |
| 78 this, | 79 this, |
| 79 NotificationType::EXTENSION_INSTALL_ERROR, | 80 chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR, |
| 80 NotificationService::AllSources()); | 81 NotificationService::AllSources()); |
| 81 | 82 |
| 82 // Don't let the bubble overlap the confirm dialog. | 83 // Don't let the bubble overlap the confirm dialog. |
| 83 registrar_.Add( | 84 registrar_.Add( |
| 84 this, | 85 this, |
| 85 NotificationType::EXTENSION_WILL_SHOW_CONFIRM_DIALOG, | 86 chrome::NOTIFICATION_EXTENSION_WILL_SHOW_CONFIRM_DIALOG, |
| 86 NotificationService::AllSources()); | 87 NotificationService::AllSources()); |
| 87 | 88 |
| 88 // Add the view. | 89 // Add the view. |
| 89 [cocoa_view_ setFrame:parent_bounds]; | 90 [cocoa_view_ setFrame:parent_bounds]; |
| 90 [cocoa_view_ setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; | 91 [cocoa_view_ setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; |
| 91 [parent_view addSubview:cocoa_view_ | 92 [parent_view addSubview:cocoa_view_ |
| 92 positioned:NSWindowAbove | 93 positioned:NSWindowAbove |
| 93 relativeTo:nil]; | 94 relativeTo:nil]; |
| 94 [cocoa_view_ layout]; | 95 [cocoa_view_ layout]; |
| 95 } | 96 } |
| 96 | 97 |
| 97 ThemeInstallBubbleView::~ThemeInstallBubbleView() { | 98 ThemeInstallBubbleView::~ThemeInstallBubbleView() { |
| 98 // Need to delete self; the real work happens in Close(). | 99 // Need to delete self; the real work happens in Close(). |
| 99 } | 100 } |
| 100 | 101 |
| 101 void ThemeInstallBubbleView::Close() { | 102 void ThemeInstallBubbleView::Close() { |
| 102 --num_loads_extant_; | 103 --num_loads_extant_; |
| 103 if (num_loads_extant_ < 1) { | 104 if (num_loads_extant_ < 1) { |
| 104 registrar_.RemoveAll(); | 105 registrar_.RemoveAll(); |
| 105 if (cocoa_view_ && [cocoa_view_ superview]) { | 106 if (cocoa_view_ && [cocoa_view_ superview]) { |
| 106 [cocoa_view_ removeFromSuperview]; | 107 [cocoa_view_ removeFromSuperview]; |
| 107 [cocoa_view_ release]; | 108 [cocoa_view_ release]; |
| 108 } | 109 } |
| 109 view_ = NULL; | 110 view_ = NULL; |
| 110 delete this; | 111 delete this; |
| 111 // this is deleted; nothing more! | 112 // this is deleted; nothing more! |
| 112 } | 113 } |
| 113 } | 114 } |
| 114 | 115 |
| 115 void ThemeInstallBubbleView::Observe(NotificationType type, | 116 void ThemeInstallBubbleView::Observe(int type, |
| 116 const NotificationSource& source, | 117 const NotificationSource& source, |
| 117 const NotificationDetails& details) { | 118 const NotificationDetails& details) { |
| 118 Close(); | 119 Close(); |
| 119 } | 120 } |
| 120 | 121 |
| 121 // static | 122 // static |
| 122 void ThemeInstallBubbleView::Show(NSWindow* window) { | 123 void ThemeInstallBubbleView::Show(NSWindow* window) { |
| 123 if (view_) | 124 if (view_) |
| 124 ++view_->num_loads_extant_; | 125 ++view_->num_loads_extant_; |
| 125 else | 126 else |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 | 179 |
| 179 [[[NSColor blackColor] colorWithAlphaComponent:kBubbleAlpha] set]; | 180 [[[NSColor blackColor] colorWithAlphaComponent:kBubbleAlpha] set]; |
| 180 [[NSBezierPath bezierPathWithRoundedRect:grayRect_ | 181 [[NSBezierPath bezierPathWithRoundedRect:grayRect_ |
| 181 xRadius:kBubbleCornerRadius | 182 xRadius:kBubbleCornerRadius |
| 182 yRadius:kBubbleCornerRadius] fill]; | 183 yRadius:kBubbleCornerRadius] fill]; |
| 183 | 184 |
| 184 [message_.get() drawInRect:textRect_]; | 185 [message_.get() drawInRect:textRect_]; |
| 185 } | 186 } |
| 186 | 187 |
| 187 @end | 188 @end |
| OLD | NEW |