Advertisement
Guest User

Untitled

a guest
Sep 8th, 2017
123
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] retain]
  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.     [choosenImage release];
  97.     choosenImage = nil;
  98.    
  99.     [self executeAsyncCallToTwitPicWithData:choosenImage];
  100. }
  101.  
  102. - (IBAction)tryAgain:(NSButton *)sender
  103. {
  104.     [NSApp endSheet:savePanel returnCode: NSCancelButton];
  105.     [savePanel orderOut:nil];
  106.     [choosenImage release];
  107.    
  108.     [uploadButton setEnabled:false];
  109.     [againButton setEnabled:false];
  110. }
  111.  
  112. - (void)executeAsyncCallToTwitPicWithData:(NSData *)imageData
  113. {
  114.     [asyncTwitPicDispatcher uploadData:imageData
  115.                           withUsername:USERNAME
  116.                               password:PASSWORD
  117.                               filename:@"image.jpg"
  118.                                message:[tweet stringValue]];
  119. }
  120.  
  121. - (void)imageWasCaptured:(NSNotification *)note
  122. {
  123.     [NSApp endSheet:savePanel returnCode: NSOKButton];
  124.     [progressIndicator stopAnimation:nil];
  125.     [savePanel orderOut:nil];
  126.     NSLog(@"imageWasCaptured: %@", (NSString *)[note object]);
  127. }
  128.  
  129. - (void)uploadFailed:(NSNotification *)note
  130. {
  131.     [NSApp endSheet:savePanel returnCode: NSCancelButton];
  132.     [progressIndicator stopAnimation:nil];
  133.     [savePanel orderOut:nil];
  134.    
  135.     NSLog(@"upload failed: %@", [note object]);
  136. }
  137.  
  138. - (CIImage *)view:(QTCaptureView *)view willDisplayImage:(CIImage *)image
  139. {  
  140.     [currentFrame release];
  141.     currentFrame = [image retain];
  142.     return image;
  143. }
  144.  
  145. - (NSData *)currentCameraImageData
  146. {
  147.     return [[[[NSBitmapImageRep alloc] initWithCIImage:currentFrame] autorelease] representationUsingType:NSJPEGFileType properties:nil];
  148. }
  149.  
  150. - (void)windowWillClose:(NSNotification *)aNotification
  151. {
  152.     [NSApp terminate:self];
  153. }
  154.  
  155. - (IBAction)openSettings:(NSButton *)sender
  156. {
  157.     [NSApp beginSheet:settingsPanel  
  158.        modalForWindow:captureWindow
  159.         modalDelegate:self   
  160.        didEndSelector:NULL
  161.           contextInfo:nil];
  162.    
  163. }
  164.  
  165. - (IBAction)closeSettings:(NSButton *)sender
  166. {
  167.     [NSApp endSheet:settingsPanel returnCode: NSOKButton];
  168.     [settingsPanel orderOut:nil];
  169.    
  170.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  171.     [defaults setValue:[tweet stringValue] forKey:@"TLTweet"];
  172.     [defaults setBool:[hideSettingsButton state] forKey:@"TLHideSettings"];
  173.    
  174.     [captureWindow setTitle:[tweet stringValue]];
  175.     [settingsButton setHidden:[hideSettingsButton state]];
  176. }
  177.  
  178. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement