blob: 133dc579c3a806895cc1f33047c0119e3c946b1e [file] [log] [blame]
/*
* Copyright (C) 2012 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#if !PLATFORM(IOS_FAMILY)
#include "WebCoreFullScreenWarningView.h"
#include "LocalizedStrings.h"
#include <wtf/text/WTFString.h>
static const CGFloat WarningViewTextWhite = 0.9;
static const CGFloat WarningViewTextAlpha = 1;
static const CGFloat WarningViewTextSize = 48;
static const CGFloat WarningViewPadding = 20;
static const CGFloat WarningViewCornerRadius = 10;
static const CGFloat WarningViewBorderWhite = 0.9;
static const CGFloat WarningViewBorderAlpha = 0.2;
static const CGFloat WarningViewBackgroundWhite = 0.1;
static const CGFloat WarningViewBackgroundAlpha = 0.9;
static const CGFloat WarningViewShadowWhite = 0.1;
static const CGFloat WarningViewShadowAlpha = 1;
static const NSSize WarningViewShadowOffset = {0, -2};
static const CGFloat WarningViewShadowRadius = 5;
@implementation WebCoreFullScreenWarningView
- (id)initWithTitle:(NSString*)title
{
self = [super initWithFrame:NSZeroRect];
if (!self)
return nil;
[self setAutoresizingMask:(NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin | NSViewMaxYMargin)];
[self setBoxType:NSBoxCustom];
[self setTitlePosition:NSNoTitle];
_textField = adoptNS([[NSTextField alloc] initWithFrame:NSZeroRect]);
[_textField.get() setEditable:NO];
[_textField.get() setSelectable:NO];
[_textField.get() setBordered:NO];
[_textField.get() setDrawsBackground:NO];
NSFont* textFont = [NSFont boldSystemFontOfSize:WarningViewTextSize];
NSColor* textColor = [NSColor colorWithCalibratedWhite:WarningViewTextWhite alpha:WarningViewTextAlpha];
RetainPtr<NSDictionary> attributes = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:
textFont, NSFontAttributeName,
textColor, NSForegroundColorAttributeName,
nil]);
RetainPtr<NSAttributedString> text = adoptNS([[NSAttributedString alloc] initWithString:title attributes:attributes.get()]);
[_textField.get() setAttributedStringValue:text.get()];
[_textField.get() sizeToFit];
NSRect textFieldFrame = [_textField.get() frame];
NSSize frameSize = textFieldFrame.size;
frameSize.width += WarningViewPadding * 2;
frameSize.height += WarningViewPadding * 2;
[self setFrameSize:frameSize];
textFieldFrame.origin = NSMakePoint(
(frameSize.width - textFieldFrame.size.width) / 2,
(frameSize.height - textFieldFrame.size.height) / 2);
// Offset the origin by the font's descender, to center the text field about the baseline:
textFieldFrame.origin.y += [[_textField.get() font] descender];
[_textField.get() setFrame:NSIntegralRect(textFieldFrame)];
[self addSubview:_textField.get()];
NSColor* backgroundColor = [NSColor colorWithCalibratedWhite:WarningViewBackgroundWhite alpha:WarningViewBackgroundAlpha];
[self setFillColor:backgroundColor];
[self setCornerRadius:WarningViewCornerRadius];
NSColor* borderColor = [NSColor colorWithCalibratedWhite:WarningViewBorderWhite alpha:WarningViewBorderAlpha];
[self setBorderColor:borderColor];
RetainPtr<NSShadow> shadow = adoptNS([[NSShadow alloc] init]);
RetainPtr<NSColor> shadowColor = [NSColor colorWithCalibratedWhite:WarningViewShadowWhite alpha:WarningViewShadowAlpha];
[shadow.get() setShadowColor:shadowColor.get()];
[shadow.get() setShadowOffset:WarningViewShadowOffset];
[shadow.get() setShadowBlurRadius:WarningViewShadowRadius];
[self setShadow:shadow.get()];
return self;
}
@end
#endif // !PLATFORM(IOS_FAMILY)