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