VLCOneDriveTableViewController2.m 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // VLCOneDriveTableViewController2.m
  3. // VLC for iOS
  4. //
  5. // Created by Felix Paul Kühne on 30/10/15.
  6. // Copyright © 2015 VideoLAN. All rights reserved.
  7. //
  8. #import "VLCOneDriveTableViewController2.h"
  9. #import "VLCOneDriveController.h"
  10. #import "VLCCloudStorageTableViewCell.h"
  11. @interface VLCOneDriveTableViewController2 () <VLCCloudStorageDelegate>
  12. {
  13. VLCOneDriveObject *_currentFolder;
  14. VLCOneDriveController *_oneDriveController;
  15. }
  16. @end
  17. @implementation VLCOneDriveTableViewController2
  18. - (instancetype)initWithOneDriveObject:(VLCOneDriveObject *)object
  19. {
  20. self = [super init];
  21. if (self) {
  22. _oneDriveController = [VLCOneDriveController sharedInstance];
  23. self.controller = _oneDriveController;
  24. _oneDriveController.delegate = self;
  25. _currentFolder = object;
  26. _oneDriveController.currentFolder = object;
  27. [_oneDriveController loadCurrentFolder];
  28. }
  29. return self;
  30. }
  31. - (void)viewWillAppear:(BOOL)animated
  32. {
  33. if (_currentFolder != nil)
  34. self.title = _currentFolder.name;
  35. else
  36. self.title = @"OneDrive";
  37. [self updateViewAfterSessionChange];
  38. self.authorizationInProgress = NO;
  39. [super viewWillAppear:animated];
  40. }
  41. #pragma mark - table view data source
  42. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  43. {
  44. static NSString *CellIdentifier = @"OneDriveCell";
  45. VLCCloudStorageTableViewCell *cell = (VLCCloudStorageTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  46. if (cell == nil)
  47. cell = [VLCCloudStorageTableViewCell cellWithReuseIdentifier:CellIdentifier];
  48. if (_currentFolder == nil)
  49. _currentFolder = _oneDriveController.rootFolder;
  50. if (_currentFolder) {
  51. NSArray *items = _currentFolder.items;
  52. if (indexPath.row < items.count) {
  53. cell.oneDriveFile = items[indexPath.row];
  54. cell.delegate = self;
  55. }
  56. }
  57. return cell;
  58. }
  59. #pragma mark - table view delegate
  60. - (void)mediaListUpdated
  61. {
  62. [self.tableView reloadData];
  63. [self.activityIndicator stopAnimating];
  64. }
  65. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  66. {
  67. [self.tableView deselectRowAtIndexPath:indexPath animated:NO];
  68. if (_currentFolder == nil)
  69. return;
  70. NSArray *folderItems = _currentFolder.items;
  71. NSInteger row = indexPath.row;
  72. if (row >= folderItems.count)
  73. return;
  74. VLCOneDriveObject *selectedObject = folderItems[row];
  75. if (selectedObject.isFolder) {
  76. /* dive into sub folder */
  77. VLCOneDriveTableViewController2 *targetViewController = [[VLCOneDriveTableViewController2 alloc] initWithOneDriveObject:selectedObject];
  78. [self.navigationController pushViewController:targetViewController animated:YES];
  79. } else {
  80. /* stream file */
  81. NSURL *url = [NSURL URLWithString:selectedObject.downloadPath];
  82. VLCPlaybackController *vpc = [VLCPlaybackController sharedInstance];
  83. [vpc playURL:url successCallback:nil errorCallback:nil];
  84. #if TARGET_OS_TV
  85. VLCFullscreenMovieTVViewController *movieVC = [VLCFullscreenMovieTVViewController fullscreenMovieTVViewController];
  86. [self presentViewController:movieVC
  87. animated:YES
  88. completion:nil];
  89. #endif
  90. }
  91. }
  92. #pragma mark - onedrive controller delegation
  93. - (void)sessionWasUpdated
  94. {
  95. [self updateViewAfterSessionChange];
  96. }
  97. @end