aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPFavoriteNode.m
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2012-05-02 13:12:38 +0000
committerstuconnolly <stuart02@gmail.com>2012-05-02 13:12:38 +0000
commit5d87f0f50fc90c7ed47ff82b35f07b2749262132 (patch)
tree37ab959b7385c8f5aaf2d1465e1f19fbd47247c7 /Source/SPFavoriteNode.m
parentdea294a90f9bf6017986f9c950991a7fc7c9645e (diff)
parentfe555b6d511a51f3bdfb5c0a2b00a3206993076b (diff)
downloadsequelpro-5d87f0f50fc90c7ed47ff82b35f07b2749262132.tar.gz
sequelpro-5d87f0f50fc90c7ed47ff82b35f07b2749262132.tar.bz2
sequelpro-5d87f0f50fc90c7ed47ff82b35f07b2749262132.zip
Merge outline view branch into trunk.
Adds support for managing and grouping favorites into folders in the connection view and removes the associated favorites management from the preferences window. NOTE: On first launch your connection favorites will be migrated from Sequel Pro's preference file to a new file in ~/Application Support/Sequel Pro/Data. Your old favorites will remain in the preference file until removed in a future version. Outstanding known issues: - Removing a group node with no child favorites presents a warning about also removing the non-existent favorites. - Starting the application with no favorites, creating a group node then selecting, hides the connection details input. Doesn't support emoty selection. - Setting the name of a connection, adding it to the favorites and then swicthing to a different connection type, screws with the favorite name. - The preservation between launches of whether group nodes are collapsed or not is currently not supported.
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];
}