#import "BBWeeAppController-Protocol.h" #import /*** TUTORIAL BY ANDY IBANEZ (@Leonnears). This is the tutorial I wrote about writing notification center widgets for iOS. You can find it on my tumblr blog (leonnears.tumblr.com). You can also follow me on Twitter (@Twitter) to receive updates when I write anything in my new blog, including when I post new tutorials and so on. I don't only tweet programming related stuff so don't follow me if you expect to only see programming or tech related stuff. ;) */ static NSBundle *_iNotitweetWeeAppBundle = nil; @interface iNotitweetController: NSObject { UIView *_view; UIImageView *_backgroundView; } @property (nonatomic, retain) UIView *view; @end @implementation iNotitweetController @synthesize view = _view; + (void)initialize { _iNotitweetWeeAppBundle = [[NSBundle bundleForClass:[self class]] retain]; } - (id)init { if((self = [super init]) != nil) { } return self; } - (void)dealloc { [_view release]; [_backgroundView release]; [super dealloc]; } - (void)loadFullView { // Add subviews to _backgroundView (or _view) here. UIButton *tweet = [UIButton buttonWithType:UIButtonTypeCustom]; [tweet setBackgroundImage:[UIImage imageWithContentsOfFile:[_iNotitweetWeeAppBundle pathForResource:@"tweet" ofType:@"png"]] forState:UIControlStateNormal]; tweet.frame = CGRectMake(2, 0, 79, 33); [tweet addTarget:self action:@selector(composeTweet) forControlEvents:UIControlEventTouchDown]; [_view addSubview:tweet]; } -(void)composeTweet { TWTweetComposeViewController *twtComposer = [[TWTweetComposeViewController alloc] init]; UIViewController *someVc = [[UIViewController alloc] init]; twtComposer.completionHandler = ^(TWTweetComposeViewControllerResult result) { if(result == TWTweetComposeViewControllerResultCancelled) { [someVc dismissModalViewControllerAnimated:YES]; } }; someVc.view = _view; [someVc presentModalViewController:twtComposer animated:YES]; [someVc release]; [twtComposer release]; } - (void)loadPlaceholderView { // This should only be a placeholder - it should not connect to any servers or perform any intense // data loading operations. // // All widgets are 316 points wide. Image size calculations match those of the Stocks widget. _view = [[UIView alloc] initWithFrame:(CGRect){CGPointZero, {316.f, 33.f}}]; _view.autoresizingMask = UIViewAutoresizingFlexibleWidth; UIImage *bgImg = [UIImage imageWithContentsOfFile:@"/System/Library/WeeAppPlugins/StocksWeeApp.bundle/WeeAppBackground.png"]; UIImage *stretchableBgImg = [bgImg stretchableImageWithLeftCapWidth:floorf(bgImg.size.width / 2.f) topCapHeight:floorf(bgImg.size.height / 2.f)]; _backgroundView = [[UIImageView alloc] initWithImage:stretchableBgImg]; _backgroundView.frame = CGRectInset(_view.bounds, 2.f, 0.f); _backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth; [_view addSubview:_backgroundView]; } - (void)unloadView { [_view release]; _view = nil; [_backgroundView release]; _backgroundView = nil; // Destroy any additional subviews you added here. Don't waste memory :(. } - (float)viewHeight { return 71.f; } @end