#import "PlaygroundViewController.h"
#import <Three20Core/NSDataAdditions.h>
static const CGFloat kFramePadding = 10;
static const CGFloat kElementSpacing = 5;
static const CGFloat kGroupSpacing = 10;
@implementation PlaygroundViewController
- (CGFloat) addHeader:(NSString*)text yOffset:(CGFloat)yOffset {
UILabel* label = [[UILabel alloc] initWithFrame:CGRectZero];
label.text = text;
label.font = [UIFont systemFontOfSize:20];
label.numberOfLines = 0;
CGRect frame = label.frame;
frame.origin.x = kFramePadding;
frame.origin.y = yOffset;
frame.size.width = 320 - kFramePadding * 2;
frame.size.height = [text sizeWithFont:label.font
constrainedToSize:CGSizeMake(frame.size.width, 10000)].height;
label.frame = frame;
[_scrollView addSubview:label];
yOffset += label.frame.size.height + kElementSpacing;
TT_RELEASE_SAFELY(label);
return yOffset;
}
- (CGFloat) addText:(NSString*)text yOffset:(CGFloat)yOffset {
UILabel* label = [[UILabel alloc] initWithFrame:CGRectZero];
label.text = text;
label.numberOfLines = 0;
CGRect frame = label.frame;
frame.origin.x = kFramePadding;
frame.origin.y = yOffset;
frame.size.width = 320 - kFramePadding * 2;
frame.size.height = [text sizeWithFont:label.font
constrainedToSize:CGSizeMake(frame.size.width, 10000)].height;
label.frame = frame;
[_scrollView addSubview:label];
yOffset += label.frame.size.height + kElementSpacing;
TT_RELEASE_SAFELY(label);
return yOffset;
}
- (void) loadView {
[super loadView];
_scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
_scrollView.autoresizingMask =
UIViewAutoresizingFlexibleWidth
| UIViewAutoresizingFlexibleHeight;
[self.view addSubview:_scrollView];
CGFloat yOffset = kFramePadding;
yOffset = [self addHeader:NSLocalizedString(@"TTDebug", @"") yOffset:yOffset];
{
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:NSLocalizedString(@"Debug test", @"") forState:UIControlStateNormal];
[button addTarget: self
action: @selector(debugTestAction)
forControlEvents: UIControlEventTouchUpInside];
[button sizeToFit];
CGRect frame = button.frame;
frame.origin.x = kFramePadding;
frame.origin.y = yOffset;
button.frame = frame;
[_scrollView addSubview:button];
yOffset += frame.size.height;
}
yOffset += kGroupSpacing;
yOffset = [self addHeader:NSLocalizedString(@"TTGlobalCoreLocale", @"") yOffset:yOffset];
yOffset = [self addText:[NSString stringWithFormat:NSLocalizedString(@"Current locale: %@", @""),
[TTCurrentLocale()
displayNameForKey:NSLocaleIdentifier
value:[TTCurrentLocale() localeIdentifier]]]
yOffset:yOffset];
yOffset += kGroupSpacing;
yOffset = [self addHeader:NSLocalizedString(@"TTGlobalCorePaths", @"") yOffset:yOffset];
yOffset = [self addText:[NSString stringWithFormat:NSLocalizedString(@"Bundle path: %@", @""),
TTPathForBundleResource(@"Icon.png")]
yOffset:yOffset];
yOffset = [self addText:[NSString stringWithFormat:NSLocalizedString(@"Document path: %@", @""),
TTPathForDocumentsResource(@"document.pdf")]
yOffset:yOffset];
yOffset += kGroupSpacing;
yOffset = [self addHeader:NSLocalizedString(@"NSDataAdditions", @"") yOffset:yOffset];
yOffset = [self addText:[NSString stringWithFormat:NSLocalizedString(@"MD5 Hash of \"Three20\": %@", @""),
[[@"Three20" dataUsingEncoding:NSUTF8StringEncoding] md5Hash]]
yOffset:yOffset];
yOffset += kGroupSpacing;
[_scrollView setContentSize:CGSizeMake(320, yOffset)];
}
- (void) viewDidUnload {
[super viewDidUnload];
TT_RELEASE_SAFELY(_scrollView);
}
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[_scrollView flashScrollIndicators];
}
- (void) debugTestAction {
#ifdef DEBUG
NSLog(@"Three20 debug logging is currently...ON");
#else
NSLog(@"Three20 debug logging is currently...OFF");
#endif
TTDPRINTMETHODNAME();
TTDPRINT(@"Showing TTDPRINT.");
TTDPRINT(@"-----------------");
TTDPRINT(@"Showing TTD log levels <= %d", TTMAXLOGLEVEL);
TTDERROR(@"This is TTDERROR, level %d.", TTLOGLEVEL_ERROR);
TTDWARNING(@"This is TTDWARNING, level %d.", TTLOGLEVEL_WARNING);
TTDINFO(@"This is TTDINFO, level %d.", TTLOGLEVEL_INFO);
TTDPRINT(@"");
TTDPRINT(@"Showing TTDCONDITIONLOG.");
TTDPRINT(@"------------------------");
TTDCONDITIONLOG(true, @"This will always display because the condition is \"true\"");
TTDCONDITIONLOG(false, @"This will never display because the condition is \"false\"");
TTDCONDITIONLOG(rand()%2, @"This will randomly display because the condition is \"rand()%2\"");
TTDPRINT(@"");
TTDPRINT(@"Showing TTDASSERT.");
TTDPRINT(@"------------------");
TTDASSERT(true);
TTDASSERT(false);
}
@end