Some playlistentry cleanup.

CQTexperiment
vspader 2008-02-23 19:46:23 +00:00
parent b7beb276f2
commit 7109dec4ad
6 changed files with 66 additions and 73 deletions

View File

@ -110,7 +110,7 @@ escapeForLastFM(NSString *string)
escapeForLastFM([pe title]),
escapeForLastFM([pe album]),
@"", // TODO: MusicBrainz support
(int)([[pe totalFrames] longValue]/[[pe sampleRate] floatValue]),
(int)(pe.length),
escapeForLastFM([[pe URL] path])
]];
}

View File

@ -36,10 +36,10 @@ typedef enum {
BOOL shuffle;
RepeatMode repeat;
int selectedRow;
}
@property(retain) PlaylistEntry *currentEntry;
//Private Methods
- (void)updateIndexesFromRow:(int) row;
- (void)updateTotalTime;
@ -77,9 +77,6 @@ typedef enum {
- (NSString *)totalTimeDisplay;
//FUN PLAYLIST MANAGEMENT STUFF!
- (id)currentEntry;
- (void)setCurrentEntry:(PlaylistEntry *)pe;
- (BOOL)next;
- (BOOL)prev;

View File

@ -18,6 +18,8 @@
@implementation PlaylistController
@synthesize currentEntry;
#define SHUFFLE_HISTORY_SIZE 100
+ (void)initialize {
@ -177,7 +179,7 @@
ldiv_t hoursAndMinutes;
for (PlaylistEntry *pe in [self arrangedObjects]) {
tt += [[pe length] doubleValue];
tt += pe.length;
}
int sec = (int)(tt);
@ -206,7 +208,7 @@
PlaylistEntry *p;
p = [[self arrangedObjects] objectAtIndex:j];
[p setIndex:[NSNumber numberWithInt:j]];
p.index = j;
}
}
@ -229,17 +231,17 @@
- (void)removeObjectsAtArrangedObjectIndexes:(NSIndexSet *)indexes
{
NSLog(@"Removing indexes: %@", indexes);
NSLog(@"Current index: %i", [[currentEntry index] intValue]);
NSLog(@"Current index: %i", currentEntry.index);
if ([[currentEntry index] intValue] >= 0 && [indexes containsIndex:[[currentEntry index] intValue]])
if (currentEntry.index >= 0 && [indexes containsIndex:currentEntry.index])
{
[currentEntry setIndex:[NSNumber numberWithInt:-[[currentEntry index] intValue] - 1]];
NSLog(@"Current removed: %i", [[currentEntry index] intValue]);
currentEntry.index = -currentEntry.index - 1;
NSLog(@"Current removed: %i", currentEntry.index);
}
if ([[currentEntry index] intValue] < 0) //Need to update the negative index
if (currentEntry.index < 0) //Need to update the negative index
{
int i = -[[currentEntry index] intValue] - 1;
int i = -currentEntry.index - 1;
NSLog(@"I is %i", i);
int j;
for (j = i - 1; j >= 0; j--)
@ -249,9 +251,8 @@
i--;
}
}
[currentEntry setIndex: [NSNumber numberWithInt:-i - 1]];
currentEntry.index = -i - 1;
NSLog(@"UPDATING INDEX: %@", [currentEntry index]);
}
[super removeObjectsAtArrangedObjectIndexes:indexes];
@ -392,7 +393,7 @@
pe = [queueList objectAtIndex:0];
[queueList removeObjectAtIndex:0];
[pe setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
pe.status = kCogEntryNormal;
[pe setStatusMessage:nil];
[pe setQueuePosition:-1];
@ -409,18 +410,18 @@
if (shuffle == YES)
{
return [self shuffledEntryAtIndex:([[pe shuffleIndex] intValue] + 1)];
return [self shuffledEntryAtIndex:(pe.shuffleIndex + 1)];
}
else
{
int i;
if ([[pe index] intValue] < 0) //Was a current entry, now removed.
if (pe.index < 0) //Was a current entry, now removed.
{
i = -[[pe index] intValue] - 1;
i = -pe.index - 1;
}
else
{
i = [[pe index] intValue] + 1;
i = pe.index + 1;
}
if (repeat == RepeatAlbum)
@ -457,18 +458,18 @@
if (shuffle == YES)
{
return [self shuffledEntryAtIndex:([[pe shuffleIndex] intValue] - 1)];
return [self shuffledEntryAtIndex:(pe.shuffleIndex - 1)];
}
else
{
int i;
if ([[pe index] intValue] < 0) //Was a current entry, now removed.
if (pe.index < 0) //Was a current entry, now removed.
{
i = -[[pe index] intValue] - 2;
i = -pe.index - 2;
}
else
{
i = [[pe index] intValue] - 1;
i = pe.index - 1;
}
return [self entryAtIndex:i];
@ -512,7 +513,7 @@
int i;
for (i = 0; i < [shuffleList count]; i++)
{
[[shuffleList objectAtIndex:i] setShuffleIndex:[NSNumber numberWithInt:i]];
[[shuffleList objectAtIndex:i] setShuffleIndex:i];
}
}
@ -526,7 +527,7 @@
int i;
for (i = ([shuffleList count] - [newList count]); i < [shuffleList count]; i++)
{
[[shuffleList objectAtIndex:i] setShuffleIndex:[NSNumber numberWithInt:i]];
[[shuffleList objectAtIndex:i] setShuffleIndex:i];
}
}
@ -536,7 +537,7 @@
[self addShuffledListToFront];
if (currentEntry && [[currentEntry index] intValue] >= 0)
if (currentEntry && currentEntry.index >= 0)
{
[shuffleList insertObject:currentEntry atIndex:0];
[currentEntry setShuffleIndex:0];
@ -552,26 +553,21 @@
[shuffleList removeObjectAtIndex:i];
}
else {
[[shuffleList objectAtIndex:i] setShuffleIndex:[NSNumber numberWithInt:i]];
[[shuffleList objectAtIndex:i] setShuffleIndex: i];
}
}
}
}
- (id)currentEntry
{
return currentEntry;
}
- (void)setCurrentEntry:(PlaylistEntry *)pe
{
[currentEntry setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
currentEntry.status = kCogEntryNormal;
[currentEntry setStatusMessage:nil];
[pe setStatus:[NSNumber numberWithInteger:kCogEntryPlaying]];
pe.status = kCogEntryPlaying;
[pe setStatusMessage:@"Playing..."];
[tableView scrollRowToVisible:[[pe index] intValue]];
[tableView scrollRowToVisible:pe.index];
[pe retain];
[currentEntry release];
@ -649,7 +645,7 @@
{
for (PlaylistEntry *queueItem in queueList)
{
[queueItem setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
queueItem.status = kCogEntryNormal;
[queueItem setStatusMessage:nil];
[queueItem setQueuePosition:-1];
}
@ -662,7 +658,7 @@
{
for (PlaylistEntry *queueItem in [self selectedObjects])
{
[queueItem setStatus: [NSNumber numberWithInteger:kCogEntryQueued]];
queueItem.status = kCogEntryQueued;
[queueItem setQueuePosition: [queueList count]+1];
[queueItem setStatusMessage: [NSString stringWithFormat:@"Queued: %i", queueItem.queuePosition]];
@ -678,7 +674,7 @@
if (queueItem.queuePosition < 0)
break;
[queueItem setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
queueItem.status = kCogEntryNormal;
[queueItem setStatusMessage:nil];
[queueList removeObjectAtIndex:queueItem.queuePosition - 1];
}

View File

@ -17,9 +17,9 @@ typedef enum {
} PlaylistEntryStatus;
@interface PlaylistEntry : NSObject {
NSNumber *index;
NSNumber *shuffleIndex;
NSNumber *status;
int index;
int shuffleIndex;
PlaylistEntryStatus status;
NSString *statusMessage;
int queuePosition;
@ -30,15 +30,15 @@ typedef enum {
NSString *title;
NSString *genre;
NSString *year;
NSNumber *track;
int track;
NSNumber *totalFrames;
NSNumber *bitrate;
NSNumber *channels;
NSNumber *bitsPerSample;
NSNumber *sampleRate;
long long totalFrames;
int bitrate;
int channels;
int bitsPerSample;
float sampleRate;
NSNumber *seekable;
BOOL seekable;
}
- (void)setMetadata: (NSDictionary *)m;
@ -47,13 +47,13 @@ typedef enum {
- (void)readPropertiesThread;
@property(readonly) NSString *display;
@property(readonly) NSNumber *length;
@property(readonly) double length;
@property(readonly) NSString *path;
@property(readonly) NSString *filename;
@property(retain) NSNumber *index;
@property(retain) NSNumber *shuffleIndex;
@property(retain) NSNumber *status;
@property int index;
@property int shuffleIndex;
@property PlaylistEntryStatus status;
@property(retain) NSString *statusMessage;
@property int queuePosition;
@property(retain) NSURL *URL;
@ -63,14 +63,14 @@ typedef enum {
@property(retain) NSString *title;
@property(retain) NSString *genre;
@property(retain) NSString *year;
@property(retain) NSNumber *track;
@property int track;
@property(retain) NSNumber *totalFrames;
@property(retain) NSNumber *bitrate;
@property(retain) NSNumber *channels;
@property(retain) NSNumber *bitsPerSample;
@property(retain) NSNumber *sampleRate;
@property long long totalFrames;
@property int bitrate;
@property int channels;
@property int bitsPerSample;
@property float sampleRate;
@property(retain) NSNumber *seekable;
@property BOOL seekable;
@end

View File

@ -44,20 +44,20 @@
- (void)setProperties:(NSDictionary *)dict
{
[self setTotalFrames: [dict objectForKey:@"totalFrames" ]];
[self setBitrate: [dict objectForKey:@"bitrate" ]];
[self setChannels: [dict objectForKey:@"channels" ]];
[self setBitsPerSample: [dict objectForKey:@"bitsPerSample" ]];
[self setSampleRate: [dict objectForKey:@"sampleRate" ]];
[self setSeekable: [dict objectForKey:@"seekable" ]];
[self setTotalFrames: [[dict objectForKey:@"totalFrames" ] longLongValue]];
[self setBitrate: [[dict objectForKey:@"bitrate" ] intValue]];
[self setChannels: [[dict objectForKey:@"channels" ] intValue]];
[self setBitsPerSample: [[dict objectForKey:@"bitsPerSample" ] intValue]];
[self setSampleRate: [[dict objectForKey:@"sampleRate" ] floatValue]];
[self setSeekable: [[dict objectForKey:@"seekable" ] boolValue]];
}
- (void)readPropertiesThread
{
NSDictionary *properties = [AudioPropertiesReader propertiesForURL:self.URL];
if (!properties) {
[self setStatus:[NSNumber numberWithInteger:kCogEntryError]];
[self setStatusMessage:@"Failed to read properties!"];
self.status = kCogEntryError;
self.statusMessage = @"Failed to read properties!";
return;
}
@ -80,7 +80,7 @@
[self setAlbum: [m objectForKey:@"album" ]];
[self setGenre: [m objectForKey:@"genre" ]];
[self setYear: [m objectForKey:@"year" ]];
[self setTrack: [m objectForKey:@"track" ]];
[self setTrack: [[m objectForKey:@"track" ] intValue]];
}
- (void)readMetadataThread
@ -105,9 +105,9 @@
}
}
- (NSNumber *)length
- (double)length
{
return [NSNumber numberWithDouble:([self.totalFrames longValue] / [self.sampleRate floatValue])];
return ((double)self.totalFrames / self.sampleRate);
}
- (NSString *)path

View File

@ -250,7 +250,7 @@
NSURL *url = [validURLs objectAtIndex:i];
[pe setURL:url];
[pe setIndex:[NSNumber numberWithInt:(index+i)]];
pe.index = index+i;
[pe setTitle:[[url path] lastPathComponent]];
[pe setQueuePosition:-1];
[entries addObject:pe];