Made duplicate and dead item removal correctly remove the items by their arranged indexes

CQTexperiment
Chris Moeller 2013-10-18 00:25:37 -07:00
parent 2f5769d668
commit aa2676f605
1 changed files with 25 additions and 6 deletions

View File

@ -470,36 +470,55 @@
- (IBAction)removeDuplicates:(id)sender { - (IBAction)removeDuplicates:(id)sender {
NSMutableArray *originals = [[NSMutableArray alloc] init]; NSMutableArray *originals = [[NSMutableArray alloc] init];
NSMutableIndexSet *duplicates = [[NSMutableIndexSet alloc] init]; NSMutableArray *duplicates = [[NSMutableArray alloc] init];
for (PlaylistEntry *pe in [self content]) for (PlaylistEntry *pe in [self content])
{ {
if ([originals containsObject:[pe URL]]) if ([originals containsObject:[pe URL]])
[duplicates addIndex:[pe index]]; [duplicates addObject:pe];
else else
[originals addObject:[pe URL]]; [originals addObject:[pe URL]];
} }
if ([duplicates count] > 0) if ([duplicates count] > 0)
[self removeObjectsAtArrangedObjectIndexes:duplicates]; {
NSArray * arrangedContent = [self arrangedObjects];
NSMutableIndexSet * duplicatesIndex = [[NSMutableIndexSet alloc] init];
for (PlaylistEntry *pe in duplicates)
{
[duplicatesIndex addIndex:[arrangedContent indexOfObject:pe]];
}
[self removeObjectsAtArrangedObjectIndexes:duplicatesIndex];
[duplicatesIndex release];
}
[duplicates release]; [duplicates release];
[originals release]; [originals release];
} }
- (IBAction)removeDeadItems:(id)sender { - (IBAction)removeDeadItems:(id)sender {
NSMutableIndexSet *deadItems = [[NSMutableIndexSet alloc] init]; NSMutableArray *deadItems = [[NSMutableArray alloc] init];
for (PlaylistEntry *pe in [self content]) for (PlaylistEntry *pe in [self content])
{ {
NSURL *url = [pe URL]; NSURL *url = [pe URL];
if ([url isFileURL]) if ([url isFileURL])
if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]])
[deadItems addIndex:[pe index]]; [deadItems addObject:pe];
} }
if ([deadItems count] > 0) if ([deadItems count] > 0)
[self removeObjectsAtArrangedObjectIndexes:deadItems]; {
NSArray * arrangedContent = [self arrangedObjects];
NSMutableIndexSet * deadItemsIndex = [[NSMutableIndexSet alloc] init];
for (PlaylistEntry *pe in deadItems)
{
[deadItemsIndex addIndex:[arrangedContent indexOfObject:pe]];
}
[self removeObjectsAtArrangedObjectIndexes:deadItemsIndex];
[deadItemsIndex release];
}
[deadItems release]; [deadItems release];
} }