VLCDocumentPickerController.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*****************************************************************************
  2. * VLCDocumentPickerController.m
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2014 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Authors: Tamas Timar <ttimar.vlc # gmail.com>
  9. *
  10. * Refer to the COPYING file of the official project for license.
  11. *****************************************************************************/
  12. #import "VLCDocumentPickerController.h"
  13. #import <MobileCoreServices/MobileCoreServices.h>
  14. #import "VLCAppDelegate.h"
  15. #import "VLCPlaylistViewController.h"
  16. @interface VLCDocumentPickerController () <UIDocumentMenuDelegate, UIDocumentPickerDelegate>
  17. @end
  18. @implementation VLCDocumentPickerController
  19. #pragma mark - Public Methods
  20. - (void)showDocumentMenuViewController:(id)sender
  21. {
  22. if (![UIDocumentMenuViewController class])
  23. return;
  24. UIDocumentMenuViewController *importMenu = [[UIDocumentMenuViewController alloc] initWithDocumentTypes:@[(id)kUTTypeAudiovisualContent] inMode:UIDocumentPickerModeImport];
  25. importMenu.delegate = self;
  26. UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
  27. UIPopoverPresentationController *popoverPres = importMenu.popoverPresentationController;
  28. if (popoverPres) { // not-nil on iPad
  29. UIView *sourceView = nil;
  30. if ([sender isKindOfClass:[UIView class]]) {
  31. sourceView = sender;
  32. } else {
  33. sourceView = rootVC.view;
  34. }
  35. popoverPres.sourceView = sourceView;
  36. popoverPres.sourceRect = sourceView.bounds;
  37. popoverPres.permittedArrowDirections = UIPopoverArrowDirectionLeft;
  38. }
  39. [rootVC presentViewController:importMenu animated:YES completion:nil];
  40. }
  41. #pragma mark - UIDocumentMenuDelegate
  42. - (void)documentMenu:(UIDocumentMenuViewController *)documentMenu didPickDocumentPicker:(UIDocumentPickerViewController *)documentPicker
  43. {
  44. documentPicker.delegate = self;
  45. if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // on iPhone it's done in menu table vc
  46. VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
  47. [appDelegate.menuViewController selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionNone];
  48. }
  49. [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:documentPicker animated:YES completion:nil];
  50. }
  51. #pragma mark - UIDocumentPickerDelegate
  52. - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url
  53. {
  54. NSFileManager *fileManager = [NSFileManager defaultManager];
  55. NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  56. NSString *filePath = [documentsPath stringByAppendingPathComponent:[url lastPathComponent]];
  57. if (![fileManager fileExistsAtPath:filePath]) {
  58. NSError *error = nil;
  59. BOOL succes = [fileManager moveItemAtPath:[url path] toPath:filePath error:&error];
  60. if (succes) {
  61. VLCAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
  62. [appDelegate updateMediaList];
  63. }
  64. }
  65. }
  66. @end