Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import "AppController.h"
- @implementation AppController
- - (id)init
- {
- self = [super init];
- if (self) {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc addObserver:self
- selector:@selector(imageWasCaptured:)
- name:@"OTEReceivedTwitPicResponse"
- object:nil];
- [nc addObserver:self
- selector:@selector(uploadFailed:)
- name:@"OTEConnectionFailure"
- object:nil];
- }
- return self;
- }
- - (void)awakeFromNib
- {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- // Load hide settings option and act
- [hideSettingsButton setState:[defaults boolForKey:@"TLHideSettings"]];
- [settingsButton setHidden:[hideSettingsButton state]];
- // Load saved tweet
- NSString *storedTweet = [defaults stringForKey:@"TLTweet"];
- if (!storedTweet) {
- storedTweet = @"#fabcam";
- }
- [captureWindow setTitle:storedTweet];
- [tweet setStringValue:storedTweet];
- // Start camera session
- QTCaptureSession *session = [[QTCaptureSession alloc] init];
- QTCaptureDevice *iSight = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo];
- [iSight open:nil];
- QTCaptureDeviceInput *myInput = [QTCaptureDeviceInput deviceInputWithDevice:iSight];
- NSError *sessionError = nil;
- [session addInput:myInput error:&sessionError];
- if (sessionError)
- [NSAlert alertWithError:sessionError];
- [captureView setCaptureSession:session];
- [session startRunning];
- [captureView setDelegate:self];
- [captureWindow center];
- [session release];
- }
- - (IBAction)captureImage:(NSButton *)sender
- {
- [uploadButton setEnabled:true];
- [againButton setEnabled:true];
- choosenImage = [[self currentCameraImageData] retain];
- NSImage *image = [[NSImage alloc] initWithData:choosenImage];
- [imageView setImage:image];
- [image release];
- [NSApp beginSheet:savePanel
- modalForWindow:captureWindow
- modalDelegate:self
- didEndSelector:NULL
- contextInfo:nil];
- }
- - (IBAction)saveImage:(NSButton *)sender
- {
- [uploadButton setEnabled:false];
- [againButton setEnabled:false];
- [progressIndicator startAnimation:nil];
- [choosenImage release];
- choosenImage = nil;
- [self executeAsyncCallToTwitPicWithData:choosenImage];
- }
- - (IBAction)tryAgain:(NSButton *)sender
- {
- [NSApp endSheet:savePanel returnCode: NSCancelButton];
- [savePanel orderOut:nil];
- [choosenImage release];
- [uploadButton setEnabled:false];
- [againButton setEnabled:false];
- }
- - (void)executeAsyncCallToTwitPicWithData:(NSData *)imageData
- {
- [asyncTwitPicDispatcher uploadData:imageData
- withUsername:USERNAME
- password:PASSWORD
- filename:@"image.jpg"
- message:[tweet stringValue]];
- }
- - (void)imageWasCaptured:(NSNotification *)note
- {
- [NSApp endSheet:savePanel returnCode: NSOKButton];
- [progressIndicator stopAnimation:nil];
- [savePanel orderOut:nil];
- NSLog(@"imageWasCaptured: %@", (NSString *)[note object]);
- }
- - (void)uploadFailed:(NSNotification *)note
- {
- [NSApp endSheet:savePanel returnCode: NSCancelButton];
- [progressIndicator stopAnimation:nil];
- [savePanel orderOut:nil];
- NSLog(@"upload failed: %@", [note object]);
- }
- - (CIImage *)view:(QTCaptureView *)view willDisplayImage:(CIImage *)image
- {
- [currentFrame release];
- currentFrame = [image retain];
- return image;
- }
- - (NSData *)currentCameraImageData
- {
- return [[[[NSBitmapImageRep alloc] initWithCIImage:currentFrame] autorelease] representationUsingType:NSJPEGFileType properties:nil];
- }
- - (void)windowWillClose:(NSNotification *)aNotification
- {
- [NSApp terminate:self];
- }
- - (IBAction)openSettings:(NSButton *)sender
- {
- [NSApp beginSheet:settingsPanel
- modalForWindow:captureWindow
- modalDelegate:self
- didEndSelector:NULL
- contextInfo:nil];
- }
- - (IBAction)closeSettings:(NSButton *)sender
- {
- [NSApp endSheet:settingsPanel returnCode: NSOKButton];
- [settingsPanel orderOut:nil];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setValue:[tweet stringValue] forKey:@"TLTweet"];
- [defaults setBool:[hideSettingsButton state] forKey:@"TLHideSettings"];
- [captureWindow setTitle:[tweet stringValue]];
- [settingsButton setHidden:[hideSettingsButton state]];
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement