Files
linguist/samples/Objective-C/StyleViewController.m
2012-07-23 15:52:49 -05:00

186 lines
6.2 KiB
Objective-C

//
// Copyright 2009-2011 Facebook
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import "StyleViewController.h"
#import "StyleView.h"
NSString* kTextStyleType = @"text";
NSString* kViewStyleType = @"view";
NSString* kImageStyleType = @"image";
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@implementation StyleViewController
///////////////////////////////////////////////////////////////////////////////////////////////////
- (id)initWithStyleName:(NSString*)name styleType:(NSString*)styleType {
if (self = [super initWithNibName:nil bundle:nil]) {
self.title = name;
_style = [[[TTStyleSheet globalStyleSheet] styleWithSelector:name] retain];
_styleHighlight = [[[TTStyleSheet globalStyleSheet]
styleWithSelector: name
forState: UIControlStateHighlighted] retain];
_styleDisabled = [[[TTStyleSheet globalStyleSheet]
styleWithSelector: name
forState: UIControlStateDisabled] retain];
_styleSelected = [[[TTStyleSheet globalStyleSheet]
styleWithSelector: name
forState: UIControlStateSelected] retain];
_styleType = [styleType copy];
}
return self;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)dealloc {
TT_RELEASE_SAFELY(_style);
TT_RELEASE_SAFELY(_styleHighlight);
TT_RELEASE_SAFELY(_styleDisabled);
TT_RELEASE_SAFELY(_styleSelected);
TT_RELEASE_SAFELY(_styleType);
[super dealloc];
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
#pragma mark UIViewController
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)addTextView:(NSString*)title frame:(CGRect)frame style:(TTStyle*)style {
CGRect textFrame = TTRectInset(frame, UIEdgeInsetsMake(20, 20, 20, 20));
StyleView* text = [[StyleView alloc]
initWithFrame:textFrame];
text.text = title;
TTStyleContext* context = [[TTStyleContext alloc] init];
context.frame = frame;
context.delegate = text;
context.font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
CGSize size = [style addToSize:CGSizeZero context:context];
TT_RELEASE_SAFELY(context);
size.width += 20;
size.height += 20;
textFrame.size = size;
text.frame = textFrame;
text.style = style;
text.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1];
text.autoresizingMask =
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:text];
TT_RELEASE_SAFELY(text);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)addView:(CGRect)frame style:(TTStyle*)style {
CGRect viewFrame = TTRectInset(frame, UIEdgeInsetsMake(20, 20, 20, 20));
StyleView* view = [[StyleView alloc]
initWithFrame:viewFrame];
view.style = style;
view.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1];
view.autoresizingMask =
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:view];
TT_RELEASE_SAFELY(view);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)addImageView:(CGRect)frame style:(TTStyle*)style {
CGRect viewFrame = TTRectInset(frame, UIEdgeInsetsMake(20, 20, 20, 20));
TTImageView* view = [[TTImageView alloc]
initWithFrame:viewFrame];
view.urlPath = @"bundle://Icon.png";
view.style = style;
view.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:1 alpha:1];
view.autoresizingMask =
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
CGRect imageFrame = view.frame;
imageFrame.size = view.image.size;
view.frame = imageFrame;
[self.view addSubview:view];
TT_RELEASE_SAFELY(view);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)loadView {
[super loadView];
CGRect frame = self.view.bounds;
frame.size.height /= 4;
if ([_styleType isEqualToString:kTextStyleType]) {
[self addTextView:@"UIControlStateNormal" frame:frame style:_style];
frame.origin.y += frame.size.height;
[self addTextView:@"UIControlStateHighlighted" frame:frame style:_styleHighlight];
frame.origin.y += frame.size.height;
[self addTextView:@"UIControlStateDisabled" frame:frame style:_styleDisabled];
frame.origin.y += frame.size.height;
[self addTextView:@"UIControlStateSelected" frame:frame style:_styleSelected];
} else if ([_styleType isEqualToString:kViewStyleType]) {
[self addView:frame style:_style];
frame.origin.y += frame.size.height;
[self addView:frame style:_styleHighlight];
frame.origin.y += frame.size.height;
[self addView:frame style:_styleDisabled];
frame.origin.y += frame.size.height;
[self addView:frame style:_styleSelected];
} else if ([_styleType isEqualToString:kImageStyleType]) {
[self addImageView:frame style:_style];
frame.origin.y += frame.size.height;
[self addImageView:frame style:_styleHighlight];
frame.origin.y += frame.size.height;
[self addImageView:frame style:_styleDisabled];
frame.origin.y += frame.size.height;
[self addImageView:frame style:_styleSelected];
}
}
@end