aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPFavoriteNode.m
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SPFavoriteNode.m')
-rw-r--r--Source/SPFavoriteNode.m66
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];
}