diff options
Diffstat (limited to 'Source/SPFavoriteNode.m')
-rw-r--r-- | Source/SPFavoriteNode.m | 66 |
1 files changed, 58 insertions, 8 deletions
diff --git a/Source/SPFavoriteNode.m b/Source/SPFavoriteNode.m index f8eb1745..2d124756 100644 --- a/Source/SPFavoriteNode.m +++ b/Source/SPFavoriteNode.m @@ -23,32 +23,82 @@ // // More info at <http://code.google.com/p/sequel-pro/> +#import "SPTreeNode.h" #import "SPFavoriteNode.h" +// Constants +static NSString *SPFavoriteNodeKey = @"SPFavoriteNode"; + @implementation SPFavoriteNode -@synthesize nodeIsGroup; -@synthesize nodeName; @synthesize nodeFavorite; -@synthesize nodeChildren; + +#pragma mark - +#pragma mark Initialisation - (id)init { if ((self = [super init])) { - [self setNodeIsGroup:NO]; - [self setNodeName:nil]; [self setNodeFavorite:nil]; - [self setNodeChildren:[NSMutableArray array]]; } return self; } +- (id)initWithDictionary:(NSMutableDictionary *)dictionary +{ + if ((self = [self init])) { + [self setNodeFavorite:dictionary]; + } + + return self; +} + ++ (SPFavoriteNode *)favoriteNodeWithDictionary:(NSMutableDictionary *)dictionary +{ + return [[[self alloc] initWithDictionary:dictionary] autorelease]; +} + +#pragma mark - +#pragma mark Copying protocol methods + +- (id)copyWithZone:(NSZone *)zone +{ + SPFavoriteNode *node = [[[self class] allocWithZone:zone] init]; + + [node setNodeFavorite:[[self nodeFavorite] copyWithZone:zone]]; + + return node; +} + +#pragma mark - +#pragma mark Coding protocol methods + +- (id)initWithCoder:(NSCoder *)coder +{ + [self setNodeFavorite:[coder decodeObjectForKey:SPFavoriteNodeKey]]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder +{ + [coder encodeObject:[self nodeFavorite] forKey:SPFavoriteNodeKey]; +} + +#pragma mark - +#pragma mark Other + +- (NSString *)description +{ + return [NSString stringWithFormat:@"<%@: %p ('%@')>", [self className], self, [[self nodeFavorite] objectForKey:SPFavoriteNameKey]]; +} + +#pragma mark - + - (void)dealloc { - if (nodeName) [nodeName release], nodeName = nil; if (nodeFavorite) [nodeFavorite release], nodeFavorite = nil; - if (nodeChildren) [nodeChildren release], nodeChildren = nil; [super dealloc]; } |