Advertisement
Guest User

Untitled

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