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

Unified Diff: chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm

Issue 543663002: Componentize sad_tab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix url_constants.cc Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
diff --git a/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm b/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
deleted file mode 100644
index c33f1c13ec2c7c7355bf61d1460018c217e4696d..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h"
-
-#include "base/logging.h"
-#include "base/strings/sys_string_conversions.h"
-#include "chrome/browser/ui/cocoa/tab_contents/sad_tab_controller.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h"
-#import "ui/base/cocoa/controls/hyperlink_text_view.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/l10n/l10n_util_mac.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/image/image.h"
-
-// Offset above vertical middle of page where contents of page start.
-static const CGFloat kSadTabOffset = -64;
-// Padding between icon and title.
-static const CGFloat kIconTitleSpacing = 20;
-// Padding between title and message.
-static const CGFloat kTitleMessageSpacing = 15;
-// Padding between message and link.
-static const CGFloat kMessageLinkSpacing = 15;
-// Paddings on left and right of page.
-static const CGFloat kTabHorzMargin = 13;
-
-@interface SadTabTextView : NSTextField
-
-- (id)initWithView:(SadTabView*)view withText:(int)textIds;
-
-@end
-
-@implementation SadTabTextView
-
-- (id)initWithView:(SadTabView*)view withText:(int)textIds {
- if (self = [super init]) {
- [self setTextColor:[NSColor whiteColor]];
- [self setAlignment:NSCenterTextAlignment];
- [self setStringValue:l10n_util::GetNSString(textIds)];
- [self setEditable:NO];
- [self setBezeled:NO];
- [self setAutoresizingMask:
- NSViewMinXMargin|NSViewWidthSizable|NSViewMaxXMargin|NSViewMinYMargin];
- [view addSubview:self];
- }
- return self;
-}
-
-- (BOOL)isOpaque {
- return YES;
-}
-
-@end
-
-@implementation SadTabView
-
-- (void)awakeFromNib {
- // Load resource for image and set it.
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- NSImage* image = rb.GetNativeImageNamed(IDR_SAD_TAB).ToNSImage();
- [image_ setImage:image];
-
-
- // Initialize background color.
- NSColor* backgroundColor = [[NSColor colorWithCalibratedRed:(35.0f/255.0f)
- green:(48.0f/255.0f)
- blue:(64.0f/255.0f)
- alpha:1.0] retain];
- backgroundColor_.reset(backgroundColor);
-
- // Set up the title.
- title_.reset([[SadTabTextView alloc]
- initWithView:self withText:IDS_SAD_TAB_TITLE]);
- [title_ setFont:[NSFont boldSystemFontOfSize:[NSFont systemFontSize]]];
- [title_ setBackgroundColor:backgroundColor];
-
- // Set up the message.
- message_.reset([[SadTabTextView alloc]
- initWithView:self withText:IDS_SAD_TAB_MESSAGE]);
- [message_ setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
- [message_ setBackgroundColor:backgroundColor];
-
- DCHECK(controller_);
- [self initializeHelpText];
-}
-
-- (void)drawRect:(NSRect)dirtyRect {
- // Paint background.
- [backgroundColor_ set];
- NSRectFill(dirtyRect);
-}
-
-- (void)resizeSubviewsWithOldSize:(NSSize)oldSize {
- NSRect newBounds = [self bounds];
- CGFloat maxWidth = NSWidth(newBounds) - (kTabHorzMargin * 2);
- BOOL callSizeToFit = (messageSize_.width == 0);
-
- // Set new frame origin for image.
- NSRect iconFrame = [image_ frame];
- CGFloat iconX = floorf((maxWidth - NSWidth(iconFrame)) / 2);
- CGFloat iconY =
- MIN(floorf((NSHeight(newBounds) - NSHeight(iconFrame)) / 2) -
- kSadTabOffset,
- NSHeight(newBounds) - NSHeight(iconFrame));
- iconX = floorf(iconX);
- iconY = floorf(iconY);
- [image_ setFrameOrigin:NSMakePoint(iconX, iconY)];
-
- // Set new frame origin for title.
- if (callSizeToFit)
- [title_ sizeToFit];
- NSRect titleFrame = [title_ frame];
- CGFloat titleX = floorf((maxWidth - NSWidth(titleFrame)) / 2);
- CGFloat titleY = iconY - kIconTitleSpacing - NSHeight(titleFrame);
- [title_ setFrameOrigin:NSMakePoint(titleX, titleY)];
-
- // Set new frame for message, wrapping or unwrapping the text if necessary.
- if (callSizeToFit) {
- [message_ sizeToFit];
- messageSize_ = [message_ frame].size;
- }
- NSRect messageFrame = [message_ frame];
- if (messageSize_.width > maxWidth) { // Need to wrap message.
- [message_ setFrameSize:NSMakeSize(maxWidth, messageSize_.height)];
- CGFloat heightChange =
- [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:message_];
- messageFrame.size.width = maxWidth;
- messageFrame.size.height = messageSize_.height + heightChange;
- messageFrame.origin.x = kTabHorzMargin;
- } else {
- if (!callSizeToFit) {
- [message_ sizeToFit];
- messageFrame = [message_ frame];
- }
- messageFrame.origin.x = floorf((maxWidth - NSWidth(messageFrame)) / 2);
- }
- messageFrame.origin.y =
- titleY - kTitleMessageSpacing - NSHeight(messageFrame);
- [message_ setFrame:messageFrame];
-
- // Set new frame for help text and link.
- if (help_) {
- if (callSizeToFit)
- [help_ sizeToFit];
- CGFloat helpHeight = [help_ frame].size.height;
- [help_ setFrameSize:NSMakeSize(maxWidth, helpHeight)];
- // Set new frame origin for link.
- NSRect helpFrame = [help_ frame];
- CGFloat helpX = floorf((maxWidth - NSWidth(helpFrame)) / 2);
- CGFloat helpY =
- NSMinY(messageFrame) - kMessageLinkSpacing - NSHeight(helpFrame);
- [help_ setFrameOrigin:NSMakePoint(helpX, helpY)];
- }
-}
-
-- (void)removeHelpText {
- if (help_) {
- [help_ removeFromSuperview];
- help_.reset(nil);
- }
-}
-
-- (void)initializeHelpText {
- // Programmatically create the help link. Note that the frame's initial
- // height must be set for the programmatic resizing to work.
- help_.reset(
- [[HyperlinkTextView alloc] initWithFrame:NSMakeRect(0, 0, 1, 17)]);
- [help_ setAutoresizingMask:
- NSViewMinXMargin|NSViewWidthSizable|NSViewMaxXMargin|NSViewMinYMargin];
- [self addSubview:help_];
- [help_ setDelegate:self];
-
- // Get the help text and link.
- size_t linkOffset = 0;
- NSString* helpMessage(base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(
- IDS_SAD_TAB_HELP_MESSAGE, base::string16(), &linkOffset)));
- NSString* helpLink = l10n_util::GetNSString(IDS_SAD_TAB_HELP_LINK);
- NSFont* font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
- [help_ setMessageAndLink:helpMessage
- withLink:helpLink
- atOffset:linkOffset
- font:font
- messageColor:[NSColor whiteColor]
- linkColor:[NSColor whiteColor]];
- [help_ setAlignment:NSCenterTextAlignment];
-}
-
-// Called when someone clicks on the embedded link.
-- (BOOL)textView:(NSTextView*)textView
- clickedOnLink:(id)link
- atIndex:(NSUInteger)charIndex {
- if (controller_)
- [controller_ openLearnMoreAboutCrashLink:nil];
- return YES;
-}
-
-@end
« no previous file with comments | « chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h ('k') | chrome/browser/ui/cocoa/tab_contents/sad_tab_view_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698