Fixed validation for undo/redo menu items. Added sort descriptors and predicates to undo chain.
parent
a24149dc10
commit
d654c37fe3
|
@ -16,7 +16,7 @@
|
||||||
@implementation PlaylistController
|
@implementation PlaylistController
|
||||||
|
|
||||||
#define SHUFFLE_HISTORY_SIZE 100
|
#define SHUFFLE_HISTORY_SIZE 100
|
||||||
#define UNDO_STACK_LIMIT 100
|
#define UNDO_STACK_LIMIT 0
|
||||||
|
|
||||||
- (id)initWithCoder:(NSCoder *)decoder
|
- (id)initWithCoder:(NSCoder *)decoder
|
||||||
{
|
{
|
||||||
|
@ -247,6 +247,9 @@
|
||||||
|
|
||||||
- (void)setSortDescriptors:(NSArray *)sortDescriptors
|
- (void)setSortDescriptors:(NSArray *)sortDescriptors
|
||||||
{
|
{
|
||||||
|
NSLog(@"Current: %@, setting: %@", [self sortDescriptors], sortDescriptors);
|
||||||
|
[[[self undoManager] prepareWithInvocationTarget:self] setSortDescriptors:[self sortDescriptors]];
|
||||||
|
|
||||||
//Cheap hack so the index column isn't sorted
|
//Cheap hack so the index column isn't sorted
|
||||||
if (([sortDescriptors count] != 0) && [[[sortDescriptors objectAtIndex:0] key] caseInsensitiveCompare:@"index"] == NSOrderedSame)
|
if (([sortDescriptors count] != 0) && [[[sortDescriptors objectAtIndex:0] key] caseInsensitiveCompare:@"index"] == NSOrderedSame)
|
||||||
{
|
{
|
||||||
|
@ -258,6 +261,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
[super setSortDescriptors:sortDescriptors];
|
[super setSortDescriptors:sortDescriptors];
|
||||||
|
[self rearrangeObjects];
|
||||||
|
[self updateIndexesFromRow:0];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)sortByPath
|
- (IBAction)sortByPath
|
||||||
|
@ -265,7 +270,6 @@
|
||||||
NSSortDescriptor *s = [[NSSortDescriptor alloc] initWithKey:@"url" ascending:YES selector:@selector(compare:)];
|
NSSortDescriptor *s = [[NSSortDescriptor alloc] initWithKey:@"url" ascending:YES selector:@selector(compare:)];
|
||||||
|
|
||||||
[self setSortDescriptors:[NSArray arrayWithObject:s]];
|
[self setSortDescriptors:[NSArray arrayWithObject:s]];
|
||||||
[self rearrangeObjects];
|
|
||||||
|
|
||||||
[s release];
|
[s release];
|
||||||
|
|
||||||
|
@ -529,6 +533,8 @@
|
||||||
|
|
||||||
- (void)setFilterPredicate:(NSPredicate *)filterPredicate
|
- (void)setFilterPredicate:(NSPredicate *)filterPredicate
|
||||||
{
|
{
|
||||||
|
[[[self undoManager] prepareWithInvocationTarget:self] setFilterPredicate:[self filterPredicate]];
|
||||||
|
|
||||||
[super setFilterPredicate:filterPredicate];
|
[super setFilterPredicate:filterPredicate];
|
||||||
|
|
||||||
[self updateIndexesFromRow:0];
|
[self updateIndexesFromRow:0];
|
||||||
|
|
|
@ -238,10 +238,20 @@
|
||||||
{
|
{
|
||||||
SEL action = [anItem action];
|
SEL action = [anItem action];
|
||||||
|
|
||||||
if (action == @selector(undo:) && [[playlistController undoManager] canUndo])
|
if (action == @selector(undo:))
|
||||||
|
{
|
||||||
|
if ([[playlistController undoManager] canUndo])
|
||||||
return YES;
|
return YES;
|
||||||
if (action == @selector(redo:) && [[playlistController undoManager] canRedo])
|
else
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
if (action == @selector(redo:))
|
||||||
|
{
|
||||||
|
if ([[playlistController undoManager] canRedo])
|
||||||
return YES;
|
return YES;
|
||||||
|
else
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
return [super validateUserInterfaceItem:anItem];
|
return [super validateUserInterfaceItem:anItem];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue