Skip to content

Commit

Permalink
Some playlistentry cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
vspader committed Feb 23, 2008
1 parent b7beb27 commit 7109dec
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 73 deletions.
2 changes: 1 addition & 1 deletion AudioScrobbler/AudioScrobbler.m
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ - (void) start:(PlaylistEntry *)pe
escapeForLastFM([pe title]),
escapeForLastFM([pe album]),
@"", // TODO: MusicBrainz support
(int)([[pe totalFrames] longValue]/[[pe sampleRate] floatValue]),
(int)(pe.length),
escapeForLastFM([[pe URL] path])
]];
}
Expand Down
7 changes: 2 additions & 5 deletions Playlist/PlaylistController.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ typedef enum {

BOOL shuffle;
RepeatMode repeat;

int selectedRow;
}

@property(retain) PlaylistEntry *currentEntry;

//Private Methods
- (void)updateIndexesFromRow:(int) row;
- (void)updateTotalTime;
Expand Down Expand Up @@ -77,9 +77,6 @@ typedef enum {
- (NSString *)totalTimeDisplay;

//FUN PLAYLIST MANAGEMENT STUFF!
- (id)currentEntry;
- (void)setCurrentEntry:(PlaylistEntry *)pe;

- (BOOL)next;
- (BOOL)prev;

Expand Down
64 changes: 30 additions & 34 deletions Playlist/PlaylistController.m
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

@implementation PlaylistController

@synthesize currentEntry;

#define SHUFFLE_HISTORY_SIZE 100

+ (void)initialize {
Expand Down Expand Up @@ -177,7 +179,7 @@ - (void)updateTotalTime
ldiv_t hoursAndMinutes;

for (PlaylistEntry *pe in [self arrangedObjects]) {
tt += [[pe length] doubleValue];
tt += pe.length;
}

int sec = (int)(tt);
Expand Down Expand Up @@ -206,7 +208,7 @@ - (void)updateIndexesFromRow:(int) row
PlaylistEntry *p;
p = [[self arrangedObjects] objectAtIndex:j];

[p setIndex:[NSNumber numberWithInt:j]];
p.index = j;
}
}

Expand All @@ -229,17 +231,17 @@ - (void)insertObjects:(NSArray *)objects atArrangedObjectIndexes:(NSIndexSet *)i
- (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--)
Expand All @@ -249,9 +251,8 @@ - (void)removeObjectsAtArrangedObjectIndexes:(NSIndexSet *)indexes
i--;
}
}
[currentEntry setIndex: [NSNumber numberWithInt:-i - 1]];
currentEntry.index = -i - 1;

NSLog(@"UPDATING INDEX: %@", [currentEntry index]);
}

[super removeObjectsAtArrangedObjectIndexes:indexes];
Expand Down Expand Up @@ -392,7 +393,7 @@ - (PlaylistEntry *)getNextEntry:(PlaylistEntry *)pe

pe = [queueList objectAtIndex:0];
[queueList removeObjectAtIndex:0];
[pe setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
pe.status = kCogEntryNormal;
[pe setStatusMessage:nil];
[pe setQueuePosition:-1];

Expand All @@ -409,18 +410,18 @@ - (PlaylistEntry *)getNextEntry:(PlaylistEntry *)pe

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)
Expand Down Expand Up @@ -457,18 +458,18 @@ - (PlaylistEntry *)getPrevEntry:(PlaylistEntry *)pe

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];
Expand Down Expand Up @@ -512,7 +513,7 @@ - (void)addShuffledListToFront
int i;
for (i = 0; i < [shuffleList count]; i++)
{
[[shuffleList objectAtIndex:i] setShuffleIndex:[NSNumber numberWithInt:i]];
[[shuffleList objectAtIndex:i] setShuffleIndex:i];
}
}

Expand All @@ -526,7 +527,7 @@ - (void)addShuffledListToBack
int i;
for (i = ([shuffleList count] - [newList count]); i < [shuffleList count]; i++)
{
[[shuffleList objectAtIndex:i] setShuffleIndex:[NSNumber numberWithInt:i]];
[[shuffleList objectAtIndex:i] setShuffleIndex:i];
}
}

Expand All @@ -536,7 +537,7 @@ - (void)resetShuffleList

[self addShuffledListToFront];

if (currentEntry && [[currentEntry index] intValue] >= 0)
if (currentEntry && currentEntry.index >= 0)
{
[shuffleList insertObject:currentEntry atIndex:0];
[currentEntry setShuffleIndex:0];
Expand All @@ -552,26 +553,21 @@ - (void)resetShuffleList
[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];
Expand Down Expand Up @@ -649,7 +645,7 @@ - (IBAction)emptyQueueList:(id)sender
{
for (PlaylistEntry *queueItem in queueList)
{
[queueItem setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
queueItem.status = kCogEntryNormal;
[queueItem setStatusMessage:nil];
[queueItem setQueuePosition:-1];
}
Expand All @@ -662,7 +658,7 @@ - (IBAction)addToQueue:(id)sender
{
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]];

Expand All @@ -678,7 +674,7 @@ - (IBAction)removeFromQueue:(id)sender
if (queueItem.queuePosition < 0)
break;

[queueItem setStatus:[NSNumber numberWithInteger:kCogEntryNormal]];
queueItem.status = kCogEntryNormal;
[queueItem setStatusMessage:nil];
[queueList removeObjectAtIndex:queueItem.queuePosition - 1];
}
Expand Down
42 changes: 21 additions & 21 deletions Playlist/PlaylistEntry.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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
22 changes: 11 additions & 11 deletions Playlist/PlaylistEntry.m
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,20 @@ + (void)initialize {

- (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;
}
Expand All @@ -80,7 +80,7 @@ - (void)setMetadata: (NSDictionary *)m
[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
Expand All @@ -105,9 +105,9 @@ - (NSString *)display
}
}

- (NSNumber *)length
- (double)length
{
return [NSNumber numberWithDouble:([self.totalFrames longValue] / [self.sampleRate floatValue])];
return ((double)self.totalFrames / self.sampleRate);
}

- (NSString *)path
Expand Down
2 changes: 1 addition & 1 deletion Playlist/PlaylistLoader.m
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ - (void)insertURLs:(NSArray *)urls atIndex:(int)index sort:(BOOL)sort
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];
Expand Down

0 comments on commit 7109dec

Please sign in to comment.