2005-06-02 18:16:43 +00:00
|
|
|
//
|
|
|
|
// PlaylistController.h
|
|
|
|
// Cog
|
|
|
|
//
|
|
|
|
// Created by Vincent Spader on 3/18/05.
|
2005-07-02 21:02:06 +00:00
|
|
|
// Copyright 2005 Vincent Spader All rights reserved.
|
2005-06-02 18:16:43 +00:00
|
|
|
//
|
|
|
|
|
|
|
|
#import <Cocoa/Cocoa.h>
|
2008-02-10 16:16:45 +00:00
|
|
|
#import <Foundation/NSUndoManager.h>
|
2005-06-02 18:16:43 +00:00
|
|
|
#import "DNDArrayController.h"
|
2007-03-09 01:16:06 +00:00
|
|
|
|
|
|
|
@class PlaylistLoader;
|
|
|
|
@class PlaylistEntry;
|
2008-02-10 22:46:12 +00:00
|
|
|
@class EntriesController;
|
2008-02-16 16:13:21 +00:00
|
|
|
@class SpotlightWindowController;
|
2008-05-09 21:24:49 +00:00
|
|
|
@class PlaybackController;
|
2005-06-02 18:16:43 +00:00
|
|
|
|
2008-02-19 03:39:43 +00:00
|
|
|
typedef enum {
|
|
|
|
RepeatNone = 0,
|
|
|
|
RepeatOne,
|
2008-02-19 04:02:05 +00:00
|
|
|
RepeatAlbum,
|
2008-02-19 03:39:43 +00:00
|
|
|
RepeatAll
|
|
|
|
} RepeatMode;
|
|
|
|
|
2008-05-09 21:24:49 +00:00
|
|
|
typedef enum {
|
|
|
|
OpenPlaylist_related = 0,
|
|
|
|
LoadPlaylist,
|
|
|
|
DropOnPlaylist,
|
|
|
|
OpenFromOpenPanel,
|
|
|
|
OpenFromOpenUrlPanel,
|
|
|
|
OpenPlaylist_related_end,
|
|
|
|
|
|
|
|
OpenFinder_Related, //meta-value
|
|
|
|
OpenFromFinder,
|
2008-06-21 04:05:30 +00:00
|
|
|
OpenFromFileTree,
|
2008-05-09 21:24:49 +00:00
|
|
|
OpenFromSpotlight, //?
|
|
|
|
OpenFinder_Related_end,
|
|
|
|
} AddedFilesSource;
|
|
|
|
|
2005-06-02 18:16:43 +00:00
|
|
|
@interface PlaylistController : DNDArrayController {
|
2007-03-09 01:16:06 +00:00
|
|
|
IBOutlet PlaylistLoader *playlistLoader;
|
2008-02-10 22:46:12 +00:00
|
|
|
IBOutlet EntriesController *entriesController;
|
2008-02-16 16:13:21 +00:00
|
|
|
IBOutlet SpotlightWindowController *spotlightWindowController;
|
2008-05-09 21:24:49 +00:00
|
|
|
IBOutlet PlaybackController *playbackController;
|
2008-03-02 20:03:22 +00:00
|
|
|
|
2005-06-02 18:16:43 +00:00
|
|
|
NSMutableArray *shuffleList;
|
2008-02-21 07:30:28 +00:00
|
|
|
NSMutableArray *queueList;
|
2008-02-10 16:16:45 +00:00
|
|
|
|
2008-02-24 17:32:50 +00:00
|
|
|
NSString *totalTime;
|
|
|
|
|
2005-06-02 18:16:43 +00:00
|
|
|
PlaylistEntry *currentEntry;
|
|
|
|
|
|
|
|
BOOL shuffle;
|
2008-02-19 03:39:43 +00:00
|
|
|
RepeatMode repeat;
|
2005-06-02 18:16:43 +00:00
|
|
|
}
|
|
|
|
|
2008-02-23 19:46:23 +00:00
|
|
|
@property(retain) PlaylistEntry *currentEntry;
|
2008-02-24 17:32:50 +00:00
|
|
|
@property(retain) NSString *totalTime;
|
2008-02-23 19:46:23 +00:00
|
|
|
|
2006-01-20 15:22:03 +00:00
|
|
|
//Private Methods
|
2006-04-13 18:40:23 +00:00
|
|
|
- (void)updateTotalTime;
|
2008-02-24 17:32:50 +00:00
|
|
|
- (void)updatePlaylistIndexes;
|
2008-02-25 15:39:04 +00:00
|
|
|
- (IBAction)stopAfterCurrent:(id)sender;
|
2006-04-13 18:40:23 +00:00
|
|
|
|
2006-01-20 15:22:03 +00:00
|
|
|
|
|
|
|
//PUBLIC METHODS
|
2005-06-02 18:16:43 +00:00
|
|
|
- (void)setShuffle:(BOOL)s;
|
|
|
|
- (BOOL)shuffle;
|
2008-02-19 03:39:43 +00:00
|
|
|
- (void)setRepeat:(RepeatMode)r;
|
|
|
|
- (RepeatMode)repeat;
|
2008-02-21 19:14:20 +00:00
|
|
|
- (NSArray *)filterPlaylistOnAlbum:(NSString *)album;
|
2005-06-02 18:16:43 +00:00
|
|
|
|
2008-02-14 23:09:51 +00:00
|
|
|
- (PlaylistEntry *)getNextEntry:(PlaylistEntry *)pe;
|
|
|
|
- (PlaylistEntry *)getPrevEntry:(PlaylistEntry *)pe;
|
|
|
|
|
2008-02-10 16:16:45 +00:00
|
|
|
/* Methods for undoing various actions */
|
|
|
|
- (NSUndoManager *)undoManager;
|
|
|
|
|
2005-06-02 18:16:43 +00:00
|
|
|
- (IBAction)takeShuffleFromObject:(id)sender;
|
2008-02-19 04:02:05 +00:00
|
|
|
|
2008-02-19 03:39:43 +00:00
|
|
|
- (IBAction)toggleRepeat:(id)sender;
|
2005-06-02 18:16:43 +00:00
|
|
|
|
2007-03-09 01:16:06 +00:00
|
|
|
- (IBAction)sortByPath;
|
|
|
|
- (IBAction)randomizeList;
|
|
|
|
|
|
|
|
- (IBAction)showEntryInFinder:(id)sender;
|
2007-05-26 14:09:03 +00:00
|
|
|
- (IBAction)clearFilterPredicate:(id)sender;
|
|
|
|
- (IBAction)clear:(id)sender;
|
2007-02-18 22:27:55 +00:00
|
|
|
|
2008-11-21 15:14:23 +00:00
|
|
|
//- (IBAction)showTagEditor:(id)sender;
|
|
|
|
|
2008-02-16 16:13:21 +00:00
|
|
|
// Spotlight
|
|
|
|
- (IBAction)searchByArtist:(id)sender;
|
|
|
|
- (IBAction)searchByAlbum:(id)sender;
|
|
|
|
|
2005-06-02 18:16:43 +00:00
|
|
|
//FUN PLAYLIST MANAGEMENT STUFF!
|
2006-01-29 14:57:48 +00:00
|
|
|
- (BOOL)next;
|
|
|
|
- (BOOL)prev;
|
2006-01-20 15:22:03 +00:00
|
|
|
|
|
|
|
- (void)addShuffledListToBack;
|
|
|
|
- (void)addShuffledListToFront;
|
|
|
|
- (void)resetShuffleList;
|
2005-06-02 18:16:43 +00:00
|
|
|
|
2008-02-19 19:59:35 +00:00
|
|
|
- (PlaylistEntry *)shuffledEntryAtIndex:(int)i;
|
2007-03-14 02:28:30 +00:00
|
|
|
- (PlaylistEntry *)entryAtIndex:(int)i;
|
2007-03-09 01:16:06 +00:00
|
|
|
|
2008-05-09 21:24:49 +00:00
|
|
|
// Event inlets:
|
|
|
|
- (void)willInsertFiles:(NSArray*)urls origin:(AddedFilesSource)src;
|
|
|
|
- (void)didInsertFiles:(NSArray*)entries origin:(AddedFilesSource)src;
|
|
|
|
|
2008-02-21 07:30:28 +00:00
|
|
|
// queue methods
|
2008-03-08 23:57:54 +00:00
|
|
|
- (IBAction)toggleQueued:(id)sender;
|
2008-02-21 07:30:28 +00:00
|
|
|
- (IBAction)emptyQueueList:(id)sender;
|
|
|
|
- (NSMutableArray *)queueList;
|
|
|
|
|
2005-06-02 18:16:43 +00:00
|
|
|
@end
|