Explorar o código

fix last playback position lookup when media is stored in a logical folder

Felix Paul Kühne %!s(int64=10) %!d(string=hai) anos
pai
achega
4247bc2437
Modificáronse 1 ficheiros con 29 adicións e 4 borrados
  1. 29 4
      Sources/VLCMovieViewController.m

+ 29 - 4
Sources/VLCMovieViewController.m

@@ -639,11 +639,36 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     if (self.fileFromMediaLibrary)
         matchedFile = self.fileFromMediaLibrary;
     else if (self.mediaList) {
-        NSArray *matches = [MLFile fileForURL:[[[self.mediaList mediaAtIndex:self.itemInMediaListToBePlayedFirst] url] absoluteString]];
-        if (matches.count > 0) {
-            matchedFile = matches[0];
-            lastPosition = matchedFile.lastPosition.floatValue;
+        /* TODO: move this code to MLKit */
+        NSString *path = [[[self.mediaList mediaAtIndex:self.itemInMediaListToBePlayedFirst] url] absoluteString];
+        NSString *componentString = @"";
+        NSArray *pathComponents = [path componentsSeparatedByString:@"/"];
+        NSUInteger componentCount = pathComponents.count;
+
+        if ([pathComponents[componentCount - 2] isEqualToString:@"Documents"])
+            componentString = [path lastPathComponent];
+        else {
+            NSUInteger firstElement = [pathComponents indexOfObject:@"Documents"] + 1;
+            for (NSUInteger x = 0; x < componentCount - firstElement; x++) {
+                if (x == 0)
+                componentString = [componentString stringByAppendingFormat:@"%@", pathComponents[firstElement + x]];
+                else
+                componentString = [componentString stringByAppendingFormat:@"/%@", pathComponents[firstElement + x]];
+            }
         }
+
+        NSFetchRequest *request = [[NSFetchRequest alloc] init];
+        NSManagedObjectContext *moc = [[MLMediaLibrary sharedMediaLibrary] managedObjectContext];
+        NSEntityDescription *entity = [NSEntityDescription entityForName:@"File" inManagedObjectContext:moc];
+        [request setEntity:entity];
+        [request setPredicate:[NSPredicate predicateWithFormat:@"url CONTAINS %@", componentString]];
+
+        NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
+        [request setSortDescriptors:@[descriptor]];
+
+        NSArray *matches = [moc executeFetchRequest:request error:nil];
+        if (matches.count > 0)
+            matchedFile = matches[0];
     }
     if (matchedFile.lastPosition)
         lastPosition = matchedFile.lastPosition.floatValue;