Completely rewrite the playlist storage once again, this time with a much faster Core Data implementation. It still uses a little magic for Album Artwork consolidation, but string consolidation doesn't seem to be needed to reduce the disk storage size. Works much faster than my silly implementation, too. Old implementations are still kept for backwards compatibility with existing playlists. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
70 lines
1.7 KiB
Objective-C
70 lines
1.7 KiB
Objective-C
//
|
|
// 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 <Cocoa/Cocoa.h>
|
|
|
|
@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;
|
|
}
|
|
|
|
- (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
|