Advertisement
Guest User

Untitled

a guest
Jan 26th, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #import <MobileCoreServices/MobileCoreServices.h>
  2. #import <UIKit/UIKit.h>
  3. #import <AssetsLibrary/ALAssetsLibrary.h>
  4. #import <ImageIO/ImageIO.h>
  5. #import <MessageUI/MessageUI.h>
  6.  
  7. #include "Utils.h"
  8.  
  9. @interface platools : UIViewController <MFMessageComposeViewControllerDelegate>
  10.  
  11. @end
  12.  
  13. namespace platools {
  14.    
  15.    
  16.     //COPY DATA FUNCTIONS
  17.     bool copyText(const char *text)
  18.     {
  19.         NSLog(@"PLATools copyText");
  20.         UIPasteboard *appPasteBoard = [UIPasteboard generalPasteboard];
  21.         appPasteBoard.persistent = YES;
  22.         [appPasteBoard setString:[NSString stringWithFormat:@"%s",text]];
  23.        
  24.         return true;
  25.     }
  26.    
  27.     bool copyURL(const char *url)
  28.     {
  29.         NSLog(@"PLATools copyURL");
  30.         UIPasteboard *appPasteBoard = [UIPasteboard generalPasteboard];
  31.         appPasteBoard.persistent = YES;
  32.         appPasteBoard.URL = [NSURL URLWithString:[NSString stringWithFormat:@"%s",url]];
  33.        
  34.         return true;
  35.     }
  36.    
  37.     bool copyImage(const char *url)
  38.     {
  39.         NSLog(@"PLATools copyImage");
  40.         UIPasteboard *appPasteBoard = [UIPasteboard generalPasteboard];
  41.         appPasteBoard.persistent = YES;
  42.         NSString *ImageStrUrl = [NSString stringWithFormat:@"%s",url];
  43.         NSString *extension = [ImageStrUrl pathExtension];
  44.         NSURL *ImageURL = [NSURL URLWithString:ImageStrUrl];
  45.         NSData *imageData = [NSData dataWithContentsOfURL:ImageURL];
  46.        
  47.         if ([extension isEqualToString:@"jpg"] || [extension isEqualToString:@"png"])
  48.         {
  49.             NSLog(@"CopySuccess JPG/PNG");
  50.             [appPasteBoard setData:imageData forPasteboardType:@"public.jpeg"];
  51.             return true;
  52.         }
  53.         else if ([extension isEqualToString:@"gif"])
  54.         {
  55.             NSLog(@"CopySuccess GIF");
  56.             [appPasteBoard setData:imageData forPasteboardType:@"com.compuserve.gif"];
  57.             return true;
  58.         }
  59.         return false;
  60.     }
  61.    
  62.    
  63.    
  64.    
  65.     //SAVE DATA FUNCTIONS
  66.     bool saveImage(const char *url,const char *filename)
  67.     {
  68.         NSLog(@"SaveImage start");
  69.        
  70.         NSString *strImageUrl = [NSString stringWithFormat:@"%s",url];
  71.         NSString *strFilename = [NSString stringWithFormat:@"%s",filename];
  72.         NSString *strExtension = [strImageUrl pathExtension];
  73.         strFilename = [strFilename stringByAppendingString:@"."];
  74.         strFilename = [strFilename stringByAppendingString:strExtension ];
  75.  
  76.         NSURL *urlToImage = [NSURL URLWithString:strImageUrl];
  77.         NSData * dataImage = [NSData dataWithContentsOfURL:urlToImage];
  78.        
  79.         NSLog(@"%@",strExtension);
  80.         NSURL *urlAddress = [[NSURL alloc] initWithString:strImageUrl];
  81.         // Create path.
  82.         NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  83.        
  84.         //check authorization
  85.         ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
  86.        
  87.         if(status != ALAuthorizationStatusAuthorized)
  88.         {
  89.             NSLog(@"L'application n'est pas autorise a acceder au camera roll");
  90.             return false;
  91.         }
  92.        
  93.         if ([strExtension isEqualToString:@"jpg"] || [strExtension isEqualToString:@"png"])
  94.         {
  95.             NSLog(@"SaveImage start JPG/PNG");
  96.             NSLog(@"%@",strFilename);
  97.            
  98.             //NSData *jpgData = UIImageJPEGRepresentation(image,1);
  99.             NSString *strFilePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:strFilename];
  100.             [dataImage writeToFile:strFilePath atomically:YES]; //Write the file
  101.            
  102.             //Ajoute l'image dans le Camera Roll
  103.             UIImage *image = [[UIImage alloc] initWithContentsOfFile:strFilePath];
  104.             UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
  105.            
  106.             NSLog(@"SaveSuccess JPG/PNG");
  107.             NSLog(@"%@",strFilePath);
  108.             return true;
  109.         }
  110.         else if ([strExtension isEqualToString:@"gif"])
  111.         {
  112.             NSLog(@"SaveImage start GIF");
  113.             NSLog(@"%@",strFilename);
  114.            
  115.             ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
  116.             [assetsLibrary writeImageDataToSavedPhotosAlbum:dataImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
  117.                
  118.                 NSLog(@"Success aat %@", [assetURL path] );
  119.             }];
  120.             return true;
  121.         }
  122.         return false;
  123.        
  124.     }
  125.    
  126.     bool launchSandbox(const char *url)
  127.     {
  128.         NSLog(@"launchSandbox");
  129.        
  130.         NSURL *urlImage = [NSURL URLWithString:[NSString stringWithFormat:@"%s",url]];
  131.         CGImageRef        myImage = NULL;
  132.         CGImageSourceRef  myImageSource;
  133.         CFDictionaryRef   myOptions = NULL;
  134.         CFStringRef       myKeys[2];
  135.         CFTypeRef         myValues[2];
  136.        
  137.         // Set up options if you want them. The options here are for
  138.         // caching the image in a decoded form and for using floating-point
  139.         // values if the image format supports them.
  140.         myKeys[0] = kCGImageSourceShouldCache;
  141.         myValues[0] = (CFTypeRef)kCFBooleanTrue;
  142.         myKeys[1] = kCGImageSourceShouldAllowFloat;
  143.         myValues[1] = (CFTypeRef)kCFBooleanTrue;
  144.         // Create the dictionary
  145.         myOptions = CFDictionaryCreate(NULL, (const void **) myKeys,
  146.                                        (const void **) myValues, 2,
  147.                                        &kCFTypeDictionaryKeyCallBacks,
  148.                                        & kCFTypeDictionaryValueCallBacks);
  149.        
  150.        
  151.        
  152.         myImageSource = CGImageSourceCreateWithURL((CFURLRef)urlImage, myOptions);
  153.         myImage = CGImageSourceCreateImageAtIndex(myImageSource,0,NULL);
  154.         CFRelease(myImageSource);
  155.        
  156.         UIImage *image = [UIImage imageWithCGImage:myImage];
  157.         NSArray *itemsToShare = @[image];
  158.         UIViewController *root = [[[UIApplication sharedApplication] keyWindow] rootViewController];
  159.         UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
  160.        
  161.         // Required for iPad on iOS >=8
  162.         if ([activityVC respondsToSelector:@selector(popoverPresentationController)]) {
  163.             if(NULL != activityVC.popoverPresentationController) {
  164.                 activityVC.popoverPresentationController.sourceView = [[UIApplication sharedApplication] keyWindow];
  165.                 [activityVC.popoverPresentationController setPermittedArrowDirections:0]; // Remove arrow from action sheet.
  166.                 activityVC.popoverPresentationController.sourceRect = [[UIApplication sharedApplication] keyWindow].frame; // Set action sheet to middle of view.
  167.             }
  168.         }
  169.        
  170.         activityVC.excludedActivityTypes = @[UIActivityTypeAddToReadingList,
  171.                                              UIActivityTypeCopyToPasteboard,
  172.                                              UIActivityTypePrint,
  173.                                              UIActivityTypeAssignToContact,
  174.                                              UIActivityTypeSaveToCameraRoll,
  175.                                              UIActivityTypeAddToReadingList,
  176.                                              //UIActivityTypeMail,
  177.                                              UIActivityTypeAirDrop];
  178.        
  179.        
  180.         [root presentViewController:activityVC animated:YES completion:nil];
  181.         return true;
  182.     }
  183.    
  184.     bool shareIMessage(const char *url)
  185.     {
  186.         if(![MFMessageComposeViewController canSendText])
  187.         {
  188.             UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Your device doesn't support SMS!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
  189.             [warningAlert show];
  190.             return false;
  191.         }
  192.        
  193.         NSLog(@"shareIMessage");
  194.         NSString *ImageStrUrl = [NSString stringWithFormat:@"%s",url];
  195.         NSLog(@"%@",ImageStrUrl);
  196.         NSURL *ImageURL = [NSURL URLWithString:ImageStrUrl];
  197.         NSData *imageData = [NSData dataWithContentsOfURL:ImageURL];
  198.        
  199.         UIViewController *root = [[[UIApplication sharedApplication] keyWindow] rootViewController];
  200.        
  201.         //NSString *message = [NSString stringWithFormat:@"LNS test"];
  202.         MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
  203.         messageController.messageComposeDelegate = (id<MFMessageComposeViewControllerDelegate>)[[UIApplication sharedApplication]delegate];
  204.         //[messageController setBody:message];
  205.        
  206.         if ([MFMessageComposeViewController canSendAttachments])
  207.         {
  208.             NSLog(@"Attachments Can Be Sent.");
  209.             BOOL didAttachImage = [messageController addAttachmentData:imageData typeIdentifier:@"public.data" filename:@"image.gif"];
  210.            
  211.             if (didAttachImage)
  212.             {
  213.                 NSLog(@"Image Attached.");
  214.                
  215.             }
  216.             else
  217.             {
  218.                 NSLog(@"Image Could Not Be Attached.");
  219.             }
  220.         }
  221.        
  222.         [root presentViewController:messageController animated:YES completion:nil];
  223.         return true;
  224.     }
  225.    
  226.     bool shareImage(const char *url)
  227.     {
  228.         NSLog(@"shareImage");
  229.         NSString *ImageStrUrl = [NSString stringWithFormat:@"%s",url];
  230.         NSLog(@"%@",ImageStrUrl);
  231.         NSURL *ImageURL = [NSURL URLWithString:ImageStrUrl];
  232.         NSData *imageData = [NSData dataWithContentsOfURL:ImageURL];
  233.         //UIImage *image = [UIImage imageWithData:imageData];
  234.         NSArray *itemsToShare = @[imageData];
  235.        
  236.         UIViewController *root = [[[UIApplication sharedApplication] keyWindow] rootViewController];
  237.         UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
  238.        
  239.         // Required for iPad on iOS >=8
  240.         if ([activityVC respondsToSelector:@selector(popoverPresentationController)]) {
  241.             if(NULL != activityVC.popoverPresentationController) {
  242.                 activityVC.popoverPresentationController.sourceView = [[UIApplication sharedApplication] keyWindow];
  243.                 [activityVC.popoverPresentationController setPermittedArrowDirections:0]; // Remove arrow from action sheet.
  244.                 activityVC.popoverPresentationController.sourceRect = [[UIApplication sharedApplication] keyWindow].frame; // Set action sheet to middle of view.
  245.             }
  246.         }
  247.        
  248.         activityVC.excludedActivityTypes = @[UIActivityTypeAddToReadingList,
  249.                                              UIActivityTypeCopyToPasteboard,
  250.                                              UIActivityTypePrint,
  251.                                              UIActivityTypeAssignToContact,
  252.                                              UIActivityTypeSaveToCameraRoll,
  253.                                              UIActivityTypeAddToReadingList,
  254.                                              //UIActivityTypeMail,
  255.                                              UIActivityTypeAirDrop];
  256.  
  257.        
  258.         [root presentViewController:activityVC animated:YES completion:nil];
  259.        
  260.         return true;
  261.     }
  262.    
  263.     void messageComposeViewController(MFMessageComposeViewController* controller)
  264.     {
  265.         NSLog(@"messageComposeViewController");
  266.         UIViewController *root = [[[UIApplication sharedApplication] keyWindow] rootViewController];
  267.         // Close the Mail Interface
  268.         [root dismissViewControllerAnimated:YES completion:nil];
  269.     }
  270.     void didFinishWithResult(MessageComposeResult result)
  271.     {
  272.         NSLog(@"didFinishWithResult");
  273.  
  274.     }
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement