// // PlaylistLoader.h // Cog // // Created by Vincent Spader on 3/05/07. // Copyright 2007 Vincent Spader All rights reserved. // #import "PlaylistController.h" #import "PlaylistView.h" #import #import @class PlaylistController; @class PlaybackController; @class PlaylistEntry; typedef enum { kPlaylistM3u, kPlaylistPls, kPlaylistXml, } PlaylistType; @interface PlaylistLoader : NSObject { IBOutlet PlaylistController *playlistController; IBOutlet NSScrollView *playlistView; IBOutlet PlaybackController *playbackController; NSOperationQueue *queue; BOOL metadataLoadInProgress; NSMutableDictionary *queuedURLs; dispatch_queue_t loaderQueue; atomic_int loaderQueueRefCount; } - (void)initDefaults; // Clear playlist - (void)clear:(id)sender; // Load arrays of urls... - (NSArray *)addURLs:(NSArray *)urls sort:(BOOL)sort; - (NSArray *)addURL:(NSURL *)url; - (NSArray *)insertURLs:(NSArray *)urls atIndex:(NSInteger)index sort:(BOOL)sort; - (NSArray *)addDatabase; - (BOOL)addDataStore; // Save playlist, auto-determines type based on extension. Uses m3u if it cannot be determined. - (BOOL)save:(NSString *)filename; - (BOOL)save:(NSString *)filename asType:(PlaylistType)type; - (BOOL)saveM3u:(NSString *)filename; - (BOOL)savePls:(NSString *)filename; - (BOOL)saveXml:(NSString *)filename; // Read info for a playlist entry //- (NSDictionary *)readEntryInfo:(PlaylistEntry *)pe; - (void)loadInfoForEntries:(NSArray *)entries; // To be dispatched on main thread only - (void)syncLoadInfoForEntries:(NSArray *)entries; - (NSArray *)acceptableFileTypes; - (NSArray *)acceptablePlaylistTypes; // Only m3u and pls saving - (NSArray *)acceptableContainerTypes; // Events (passed to playlist controler): - (void)willInsertURLs:(NSArray *)urls origin:(URLOrigin)origin; - (void)didInsertURLs:(NSArray *)entries origin:(URLOrigin)origin; @end