Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: chrome/browser/cocoa/page_info_bubble_controller.mm

Issue 3560004: Refactor the code for loading icons into the PageInfoModel. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: cleanup Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/cocoa/page_info_bubble_controller.h" 5 #import "chrome/browser/cocoa/page_info_bubble_controller.h"
6 6
7 #include "app/l10n_util_mac.h" 7 #include "app/l10n_util_mac.h"
8 #include "app/resource_bundle.h"
9 #include "base/sys_string_conversions.h" 8 #include "base/sys_string_conversions.h"
10 #include "chrome/browser/cert_store.h" 9 #include "chrome/browser/cert_store.h"
11 #include "chrome/browser/certificate_viewer.h" 10 #include "chrome/browser/certificate_viewer.h"
12 #import "chrome/browser/cocoa/browser_window_controller.h" 11 #import "chrome/browser/cocoa/browser_window_controller.h"
13 #import "chrome/browser/cocoa/location_bar/location_bar_view_mac.h" 12 #import "chrome/browser/cocoa/location_bar/location_bar_view_mac.h"
14 #import "chrome/browser/cocoa/info_bubble_view.h" 13 #import "chrome/browser/cocoa/info_bubble_view.h"
15 #import "chrome/browser/cocoa/info_bubble_window.h" 14 #import "chrome/browser/cocoa/info_bubble_window.h"
16 #include "chrome/browser/profile.h" 15 #include "chrome/browser/profile.h"
17 #include "grit/generated_resources.h" 16 #include "grit/generated_resources.h"
18 #include "grit/theme_resources.h"
19 #include "net/base/cert_status_flags.h" 17 #include "net/base/cert_status_flags.h"
20 #include "net/base/x509_certificate.h" 18 #include "net/base/x509_certificate.h"
21 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" 19 #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h"
22 20
23 @interface PageInfoBubbleController (Private) 21 @interface PageInfoBubbleController (Private)
24 - (PageInfoModel*)model; 22 - (PageInfoModel*)model;
25 - (NSButton*)certificateButtonWithFrame:(NSRect)frame; 23 - (NSButton*)certificateButtonWithFrame:(NSRect)frame;
26 - (NSImage*)statusIconForState:(PageInfoModel::SectionInfoState)state;
27 - (void)configureTextFieldAsLabel:(NSTextField*)textField; 24 - (void)configureTextFieldAsLabel:(NSTextField*)textField;
28 - (CGFloat)addTitleViewForInfo:(const PageInfoModel::SectionInfo&)info 25 - (CGFloat)addTitleViewForInfo:(const PageInfoModel::SectionInfo&)info
29 toSubviews:(NSMutableArray*)subviews 26 toSubviews:(NSMutableArray*)subviews
30 atPoint:(NSPoint)point; 27 atPoint:(NSPoint)point;
31 - (CGFloat)addDescriptionViewForInfo:(const PageInfoModel::SectionInfo&)info 28 - (CGFloat)addDescriptionViewForInfo:(const PageInfoModel::SectionInfo&)info
32 toSubviews:(NSMutableArray*)subviews 29 toSubviews:(NSMutableArray*)subviews
33 atPoint:(NSPoint)point; 30 atPoint:(NSPoint)point;
34 - (CGFloat)addCertificateButtonToSubviews:(NSMutableArray*)subviews 31 - (CGFloat)addCertificateButtonToSubviews:(NSMutableArray*)subviews
35 atOffset:(CGFloat)offset; 32 atOffset:(CGFloat)offset;
36 - (void)addImageViewForInfo:(const PageInfoModel::SectionInfo&)info 33 - (void)addImageViewForInfo:(const PageInfoModel::SectionInfo&)info
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 styleMask:NSBorderlessWindowMask 139 styleMask:NSBorderlessWindowMask
143 backing:NSBackingStoreBuffered 140 backing:NSBackingStoreBuffered
144 defer:NO]); 141 defer:NO]);
145 142
146 NSPoint anchorPoint = AnchorPointFromParentWindow(parentWindow, 0); 143 NSPoint anchorPoint = AnchorPointFromParentWindow(parentWindow, 0);
147 if ((self = [super initWithWindow:window.get() 144 if ((self = [super initWithWindow:window.get()
148 parentWindow:parentWindow 145 parentWindow:parentWindow
149 anchoredAt:anchorPoint])) { 146 anchoredAt:anchorPoint])) {
150 model_.reset(model); 147 model_.reset(model);
151 bridge_.reset(bridge); 148 bridge_.reset(bridge);
152
153 // Load the image refs.
154 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
155 okImage_.reset([rb.GetNSImageNamed(IDR_PAGEINFO_GOOD) retain]);
156 DCHECK_GE(kImageSize, [okImage_ size].width);
157 DCHECK_GE(kImageSize, [okImage_ size].height);
158 warningMinorImage_.reset(
159 [rb.GetNSImageNamed(IDR_PAGEINFO_WARNING_MINOR) retain]);
160 DCHECK_GE(kImageSize, [warningMinorImage_ size].width);
161 DCHECK_GE(kImageSize, [warningMinorImage_ size].height);
162 warningMajorImage_.reset(
163 [rb.GetNSImageNamed(IDR_PAGEINFO_WARNING_MAJOR) retain]);
164 DCHECK_GE(kImageSize, [warningMajorImage_ size].width);
165 DCHECK_GE(kImageSize, [warningMajorImage_ size].height);
166 errorImage_.reset([rb.GetNSImageNamed(IDR_PAGEINFO_BAD) retain]);
167 DCHECK_GE(kImageSize, [errorImage_ size].width);
168 DCHECK_GE(kImageSize, [errorImage_ size].height);
169
170 [[self bubble] setArrowLocation:info_bubble::kTopLeft]; 149 [[self bubble] setArrowLocation:info_bubble::kTopLeft];
171
172 [self performLayout]; 150 [self performLayout];
173 } 151 }
174 return self; 152 return self;
175 } 153 }
176 154
177 - (PageInfoModel*)model { 155 - (PageInfoModel*)model {
178 return model_.get(); 156 return model_.get();
179 } 157 }
180 158
181 - (IBAction)showCertWindow:(id)sender { 159 - (IBAction)showCertWindow:(id)sender {
(...skipping 13 matching lines...) Expand all
195 173
196 // Keep the new subviews in an array that gets replaced at the end. 174 // Keep the new subviews in an array that gets replaced at the end.
197 NSMutableArray* subviews = [NSMutableArray array]; 175 NSMutableArray* subviews = [NSMutableArray array];
198 176
199 // Build the window from bottom-up because Cocoa's coordinate origin is the 177 // Build the window from bottom-up because Cocoa's coordinate origin is the
200 // lower left. 178 // lower left.
201 for (int i = model_->GetSectionCount() - 1; i >= 0; --i) { 179 for (int i = model_->GetSectionCount() - 1; i >= 0; --i) {
202 PageInfoModel::SectionInfo info = model_->GetSectionInfo(i); 180 PageInfoModel::SectionInfo info = model_->GetSectionInfo(i);
203 181
204 // Only certain sections have images. This affects the X position. 182 // Only certain sections have images. This affects the X position.
205 BOOL hasImage = info.type == PageInfoModel::SECTION_INFO_IDENTITY || 183 BOOL hasImage = model_->GetIconImage(info.icon_id) != nil;
206 info.type == PageInfoModel::SECTION_INFO_CONNECTION;
207 CGFloat xPosition = (hasImage ? kTextXPosition : kTextXPositionNoImage); 184 CGFloat xPosition = (hasImage ? kTextXPosition : kTextXPositionNoImage);
208 185
209 if (info.type == PageInfoModel::SECTION_INFO_IDENTITY) { 186 if (info.type == PageInfoModel::SECTION_INFO_IDENTITY) {
210 offset += [self addCertificateButtonToSubviews:subviews 187 offset += [self addCertificateButtonToSubviews:subviews
211 atOffset:offset]; 188 atOffset:offset];
212 } 189 }
213 190
214 // Create the description of the state. 191 // Create the description of the state.
215 offset += [self addDescriptionViewForInfo:info 192 offset += [self addDescriptionViewForInfo:info
216 toSubviews:subviews 193 toSubviews:subviews
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 NSButton* certButton = [[[NSButton alloc] initWithFrame:frame] autorelease]; 244 NSButton* certButton = [[[NSButton alloc] initWithFrame:frame] autorelease];
268 [certButton setTitle: 245 [certButton setTitle:
269 l10n_util::GetNSStringWithFixup(IDS_PAGEINFO_CERT_INFO_BUTTON)]; 246 l10n_util::GetNSStringWithFixup(IDS_PAGEINFO_CERT_INFO_BUTTON)];
270 [certButton setButtonType:NSMomentaryPushInButton]; 247 [certButton setButtonType:NSMomentaryPushInButton];
271 [certButton setBezelStyle:NSRoundRectBezelStyle]; 248 [certButton setBezelStyle:NSRoundRectBezelStyle];
272 [certButton setTarget:self]; 249 [certButton setTarget:self];
273 [certButton setAction:@selector(showCertWindow:)]; 250 [certButton setAction:@selector(showCertWindow:)];
274 return certButton; 251 return certButton;
275 } 252 }
276 253
277 // Returns a weak reference to the NSImage instance to used, or nil if none, for
278 // the specified info |state|.
279 - (NSImage*)statusIconForState:(PageInfoModel::SectionInfoState)state {
280 switch (state) {
281 case PageInfoModel::SECTION_STATE_OK:
282 return okImage_.get();
283 case PageInfoModel::SECTION_STATE_WARNING_MINOR:
284 return warningMinorImage_.get();
285 case PageInfoModel::SECTION_STATE_WARNING_MAJOR:
286 return warningMajorImage_.get();
287 case PageInfoModel::SECTION_STATE_ERROR:
288 return errorImage_.get();
289 default:
290 return nil;
291 }
292 }
293
294 // Sets proprties on the given |field| to act as the title or description labels 254 // Sets proprties on the given |field| to act as the title or description labels
295 // in the bubble. 255 // in the bubble.
296 - (void)configureTextFieldAsLabel:(NSTextField*)textField { 256 - (void)configureTextFieldAsLabel:(NSTextField*)textField {
297 [textField setEditable:NO]; 257 [textField setEditable:NO];
298 [textField setDrawsBackground:NO]; 258 [textField setDrawsBackground:NO];
299 [textField setBezeled:NO]; 259 [textField setBezeled:NO];
300 } 260 }
301 261
302 // Adds the title text field at the given x,y position, and returns the y 262 // Adds the title text field at the given x,y position, and returns the y
303 // position for the next element. 263 // position for the next element.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 // does not affect the next Y position because the image is placed next to 329 // does not affect the next Y position because the image is placed next to
370 // a text field that is larger and accounts for the image's size. 330 // a text field that is larger and accounts for the image's size.
371 - (void)addImageViewForInfo:(const PageInfoModel::SectionInfo&)info 331 - (void)addImageViewForInfo:(const PageInfoModel::SectionInfo&)info
372 toSubviews:(NSMutableArray*)subviews 332 toSubviews:(NSMutableArray*)subviews
373 atOffset:(CGFloat)offset { 333 atOffset:(CGFloat)offset {
374 NSRect frame = NSMakeRect(kFramePadding, offset - kImageSize, kImageSize, 334 NSRect frame = NSMakeRect(kFramePadding, offset - kImageSize, kImageSize,
375 kImageSize); 335 kImageSize);
376 scoped_nsobject<NSImageView> imageView( 336 scoped_nsobject<NSImageView> imageView(
377 [[NSImageView alloc] initWithFrame:frame]); 337 [[NSImageView alloc] initWithFrame:frame]);
378 [imageView setImageFrameStyle:NSImageFrameNone]; 338 [imageView setImageFrameStyle:NSImageFrameNone];
379 [imageView setImage:[self statusIconForState:info.state]]; 339 [imageView setImage:model_->GetIconImage(info.icon_id)];
380 [subviews addObject:imageView.get()]; 340 [subviews addObject:imageView.get()];
381 } 341 }
382 342
383 @end 343 @end
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/page_info_bubble_controller.h ('k') | chrome/browser/cocoa/page_info_bubble_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698