Skip to content

Instantly share code, notes, and snippets.

@toco
Last active August 29, 2015 14:06
Show Gist options
  • Select an option

  • Save toco/cea5112e0343f84eeae4 to your computer and use it in GitHub Desktop.

Select an option

Save toco/cea5112e0343f84eeae4 to your computer and use it in GitHub Desktop.
Add support for directories when scanning documents directory.
diff --git a/Sources/VLCAppDelegate.m b/Sources/VLCAppDelegate.m
index ef5f12f..e80422b 100644
--- a/Sources/VLCAppDelegate.m
+++ b/Sources/VLCAppDelegate.m
@@ -278,16 +278,28 @@
- (void)updateMediaList
{
NSString *directoryPath = [self directoryPath];
- NSArray *foundFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:nil];
- NSMutableArray *filePaths = [NSMutableArray arrayWithCapacity:[foundFiles count]];
+ NSMutableArray *foundFiles = [NSMutableArray arrayWithObject:@""];
+ NSMutableArray *filePaths = [NSMutableArray array];
NSURL *fileURL;
- for (NSString *fileName in foundFiles) {
+ while (foundFiles.count) {
+ NSString *fileName = foundFiles.firstObject;
+ NSString *filePath = [directoryPath stringByAppendingPathComponent:fileName];
+ [foundFiles removeObject:fileName];
+
if ([fileName isSupportedMediaFormat] || [fileName isSupportedAudioMediaFormat]) {
- [filePaths addObject:[directoryPath stringByAppendingPathComponent:fileName]];
+ [filePaths addObject:filePath];
/* exclude media files from backup (QA1719) */
- fileURL = [NSURL fileURLWithPath:[directoryPath stringByAppendingPathComponent:fileName]];
+ fileURL = [NSURL fileURLWithPath:filePath];
[fileURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:nil];
+ } else {
+
+ BOOL isDirectory = NO;
+ BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory];
+ // add folders
+ if (exists && isDirectory) {
+ [foundFiles addObjectsFromArray:[[NSFileManager defaultManager] contentsOfDirectoryAtPath:filePath error:nil]];
+ }
}
}
[[MLMediaLibrary sharedMediaLibrary] addFilePaths:filePaths];
@toco

toco commented Sep 3, 2014

Copy link
Copy Markdown
Author

This fix is too simple, the user intention of a folder is lost. We should create logical folders in the playlist for any added folders.

@toco

toco commented Sep 3, 2014

Copy link
Copy Markdown
Author

Update patch. It does work now for adding subfolders.
TODO for improved folder support:

  • Automatically add folders all path components behind "Documents" in [MLMediaLibrary addFilePath:]
  • Add support for folder hierarchies to MLLabel

@fkuehne

fkuehne commented Sep 6, 2014

Copy link
Copy Markdown

This is cool stuff. Does it work with the latest version of MediaLibraryKit, which includes slightly different behavior regarding file path handling? Let me know, if I can be of any help there.

@toco

toco commented Sep 16, 2014

Copy link
Copy Markdown
Author

I don't see any recents change in MediaLibraryKit regarding file path handling.
This patch works with http://git.videolan.org/?p=MediaLibraryKit.git;a=commit;h=eb2587e0c2220ce6766762e4599f3ddbfe86996b.
I've sent a full patch to Caro for testing and pushing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment