Advertisement
Guest User

Untitled

a guest
May 12th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #import "AppController.h"
  2.  
  3. @implementation AppController
  4.  
  5. - (id)init
  6. {
  7.     self = [super init];
  8.    
  9.     if (self) {
  10.    
  11.         NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
  12.        
  13.         [nc addObserver:self
  14.                selector:@selector(imageWasCaptured:)
  15.                    name:@"OTEReceivedTwitPicSuccess"
  16.                  object:nil];
  17.        
  18.         [nc addObserver:self
  19.                selector:@selector(uploadFailed:)
  20.                    name:@"OTEReceivedTwitPicError"
  21.                  object:nil];
  22.        
  23.         [nc addObserver:self
  24.                selector:@selector(uploadFailed:)
  25.                    name:@"OTEConnectionFailure"
  26.                  object:nil];
  27.        
  28.     }
  29.    
  30.     return self;
  31. }
  32.  
  33. - (void)awakeFromNib
  34. {  
  35.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  36.    
  37.     // Load hide settings option and act
  38.     [hideSettingsButton setState:[defaults boolForKey:@"TLHideSettings"]];
  39.     [settingsButton setHidden:[hideSettingsButton state]];
  40.    
  41.     // Load saved tweet
  42.     NSString *storedTweet = [defaults stringForKey:@"TLTweet"];
  43.        
  44.     if (!storedTweet) {
  45.         storedTweet = @"#fabcam";
  46.     }
  47.    
  48.     [captureWindow setTitle:storedTweet];
  49.     [tweet setStringValue:storedTweet];
  50.    
  51.     // Start camera session
  52.     QTCaptureSession *session = [[QTCaptureSession alloc] init];
  53.     QTCaptureDevice *iSight = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo];
  54.     [iSight open:nil];
  55.    
  56.     QTCaptureDeviceInput *myInput = [QTCaptureDeviceInput deviceInputWithDevice:iSight];
  57.    
  58.     NSError *sessionError = nil;
  59.     [session addInput:myInput error:&sessionError];
  60.    
  61.     if (sessionError)
  62.         [NSAlert alertWithError:sessionError];
  63.    
  64.     [captureView setCaptureSession:session];
  65.    
  66.     [session startRunning];
  67.    
  68.     [captureView setDelegate:self];
  69.  
  70.     [captureWindow center];
  71.    
  72.     [session release];
  73. }
  74.  
  75. - (IBAction)captureImage:(NSButton *)sender
  76. {
  77.     [uploadButton setEnabled:true];
  78.     [againButton setEnabled:true];
  79.    
  80.     choosenImage = [[self currentCameraImageData] retain]
  81.    
  82.     NSImage *image = [[NSImage alloc] initWithData:choosenImage];
  83.    
  84.     [imageView setImage:image];
  85.    
  86.     [image release];
  87.    
  88.     [NSApp beginSheet:savePanel  
  89.        modalForWindow:captureWindow
  90.         modalDelegate:self   
  91.        didEndSelector:NULL
  92.           contextInfo:nil];
  93. }
  94.  
  95. - (IBAction)saveImage:(NSButton *)sender
  96. {      
  97.     [uploadButton setEnabled:false];
  98.     [againButton setEnabled:false];
  99.     [progressIndicator startAnimation:nil];
  100.  
  101.     [choosenImage release];
  102.     choosenImage = nil;
  103.    
  104.     [self executeAsyncCallToTwitPicWithData:choosenImage];
  105. }
  106.  
  107. - (IBAction)tryAgain:(NSButton *)sender
  108. {
  109.     [NSApp endSheet:savePanel returnCode: NSCancelButton];
  110.     [savePanel orderOut:nil];
  111.     [choosenImage release];
  112.    
  113.     [uploadButton setEnabled:false];
  114.     [againButton setEnabled:false];
  115. }
  116.  
  117. - (void)executeAsyncCallToTwitPicWithData:(NSData *)imageData
  118. {
  119.     ORSAsyncTwitPicDispatcher *asyncTwitPicDispatcher = [[ORSAsyncTwitPicDispatcher alloc] init];
  120.    
  121.     [asyncTwitPicDispatcher uploadData:imageData
  122.                           withUsername:USERNAME
  123.                               password:PASSWORD
  124.                               filename:@"image.jpg"
  125.                                message:[tweet stringValue]];
  126.    
  127.     [asyncTwitPicDispatcher release];
  128. }
  129.  
  130. - (void)imageWasCaptured:(NSNotification *)note
  131. {
  132.     [NSApp endSheet:savePanel returnCode: NSOKButton];
  133.     [progressIndicator stopAnimation:nil];
  134.     [savePanel orderOut:nil];
  135.     NSLog(@"imageWasCaptured: %@", (NSString *)[note object]);
  136. }
  137.  
  138. - (void)uploadFailed:(NSNotification *)note
  139. {
  140.     [NSApp endSheet:savePanel returnCode: NSCancelButton];
  141.     [progressIndicator stopAnimation:nil];
  142.     [savePanel orderOut:nil];
  143.    
  144.     NSLog(@"upload failed: %@", [note object]);
  145. }
  146.  
  147. - (CIImage *)view:(QTCaptureView *)view willDisplayImage:(CIImage *)image
  148. {  
  149.     [currentFrame release];
  150.     currentFrame = [image retain];
  151.     return image;
  152. }
  153.  
  154. - (NSData *)currentCameraImageData
  155. {
  156.     return [[[[NSBitmapImageRep alloc] initWithCIImage:currentFrame] autorelease] representationUsingType:NSJPEGFileType properties:nil];
  157. }
  158.  
  159. - (void)windowWillClose:(NSNotification *)aNotification
  160. {
  161.     [NSApp terminate:self];
  162. }
  163.  
  164. - (IBAction)openSettings:(NSButton *)sender
  165. {
  166.     [NSApp beginSheet:settingsPanel  
  167.        modalForWindow:captureWindow
  168.         modalDelegate:self   
  169.        didEndSelector:NULL
  170.           contextInfo:nil];
  171.    
  172. }
  173.  
  174. - (IBAction)closeSettings:(NSButton *)sender
  175. {
  176.     [NSApp endSheet:settingsPanel returnCode: NSOKButton];
  177.     [settingsPanel orderOut:nil];
  178.    
  179.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  180.     [defaults setValue:[tweet stringValue] forKey:@"TLTweet"];
  181.     [defaults setBool:[hideSettingsButton state] forKey:@"TLHideSettings"];
  182.    
  183.     [captureWindow setTitle:[tweet stringValue]];
  184.     [settingsButton setHidden:[hideSettingsButton state]];
  185. }
  186.  
  187. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement