diff options
author | stuconnolly <stuart02@gmail.com> | 2012-05-02 13:12:38 +0000 |
---|---|---|
committer | stuconnolly <stuart02@gmail.com> | 2012-05-02 13:12:38 +0000 |
commit | 5d87f0f50fc90c7ed47ff82b35f07b2749262132 (patch) | |
tree | 37ab959b7385c8f5aaf2d1465e1f19fbd47247c7 /Source/SPFavoriteNode.m | |
parent | dea294a90f9bf6017986f9c950991a7fc7c9645e (diff) | |
parent | fe555b6d511a51f3bdfb5c0a2b00a3206993076b (diff) | |
download | sequelpro-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.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]; } |