implemented CPCoding support for CPSortDescriptor and made CPTableColumn decode it's _sortDescriptorPrototype

This commit is contained in:
Klaas Pieter Annema
2010-05-20 11:39:47 +02:00
parent 97e4b69eaa
commit 6a33acbb7c
5 changed files with 72 additions and 1 deletions
+6 -1
View File
@@ -396,7 +396,8 @@ var CPTableColumnIdentifierKey = @"CPTableColumnIdentifierKey",
CPTableColumnMinWidthKey = @"CPTableColumnMinWidthKey",
CPTableColumnMaxWidthKey = @"CPTableColumnMaxWidthKey",
CPTableColumnResizingMaskKey = @"CPTableColumnResizingMaskKey",
CPTableColumnIsHiddenkey = @"CPTableColumnIsHiddenKey";
CPTableColumnIsHiddenkey = @"CPTableColumnIsHiddenKey",
CPSortDescriptorPrototypeKey = @"CPSortDescriptorPrototypeKey";
@implementation CPTableColumn (CPCoding)
@@ -419,6 +420,8 @@ var CPTableColumnIdentifierKey = @"CPTableColumnIdentifierKey",
_resizingMask = [aCoder decodeBoolForKey:CPTableColumnResizingMaskKey];
_isHidden = [aCoder decodeBoolForKey:CPTableColumnIsHiddenkey];
_sortDescriptorPrototype = [aCoder decodeObjectForKey:CPSortDescriptorPrototypeKey];
}
return self;
@@ -437,6 +440,8 @@ var CPTableColumnIdentifierKey = @"CPTableColumnIdentifierKey",
[aCoder encodeObject:_resizingMask forKey:CPTableColumnResizingMaskKey];
[aCoder encodeBool:_isHidden forKey:CPTableColumnIsHiddenkey];
[aCoder encodeObject:_sortDescriptorPrototype forKey:CPSortDescriptorPrototypeKey];
}
@end
+28
View File
@@ -149,3 +149,31 @@ CPOrderedDescending = 1;
}
@end
var CPSortDescriptorKeyKey = @"CPSortDescriptorKeyKey", // Don't you just love naming schemes ;)
CPSortDescriptorAscendingKey = @"CPSortDescriptorAscendingKey",
CPSortDescriptorSelectorKey = @"CPSortDescriptorSelectorKey";
@implementation CPSortDescriptor (CPCoding)
- (id)initWithCoder:(CPCoder)aCoder
{
if (self = [super init])
{
_key = [aCoder decodeObjectForKey:CPSortDescriptorKeyKey];
_ascending = [aCoder decodeBoolForKey:CPSortDescriptorAscendingKey];
_selector = CPSelectorFromString([aCoder decodeObjectForKey:CPSortDescriptorSelectorKey]);
}
return self;
}
- (void)encodeWithCoder:(CPCoder)aCoder
{
[aCoder encodeObject:_key forKey:CPSortDescriptorKeyKey];
[aCoder encodeBool:_ascending forKey:CPSortDescriptorAscendingKey];
[aCoder encodeObject:CPStringFromSelector(_selector) forKey:CPSortDescriptorSelectorKey];
}
@end
+1
View File
@@ -67,6 +67,7 @@
@import "NSViewController.j"
@import "NSWindowTemplate.j"
@import "WebView.j"
@import "NSSortDescriptor.j"
function CP_NSMapClassName(aClassName)
+35
View File
@@ -0,0 +1,35 @@
@import <Foundation/CPSortDescriptor.j>
@implementation CPSortDescriptor (NSCoding)
{
}
- (id)NS_initWithCoder:(CPCoder)aCoder
{
if (self = [super init])
{
_key = [aCoder decodeObjectForKey:@"NSKey"];
_selector = CPSelectorFromString([aCoder decodeObjectForKey:@"NSSelector"]);
_ascending = [aCoder decodeBoolForKey:@"NSAscending"];
}
return self;
}
@end
@implementation NSSortDescriptor : CPSortDescriptor
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
}
- (Class)classForKeyedArchiver
{
return [CPSortDescriptor class];
}
@end
+2
View File
@@ -53,6 +53,8 @@
_resizingMask = [aCoder decodeBoolForKey:@"NSIsResizeable"] ? CPTableColumnUserResizingMask : CPTableColumnAutoresizingMask;
_isHidden = [aCoder decodeBoolForKey:@"NSHidden"];
_sortDescriptorPrototype = [aCoder decodeObjectForKey:@"NSSortDescriptorPrototype"];
}
return self;