diff options
author | Bibiko <bibiko@eva.mpg.de> | 2009-09-07 11:09:19 +0000 |
---|---|---|
committer | Bibiko <bibiko@eva.mpg.de> | 2009-09-07 11:09:19 +0000 |
commit | 4693139403ba538559a939e776ee3d65d5c74598 (patch) | |
tree | 078f59a88750739894108f6ed563ddd839cb4db8 | |
parent | 252ac0be49bf409b1eda3726f4f4a47bd6b5b5b6 (diff) | |
download | sequelpro-4693139403ba538559a939e776ee3d65d5c74598.tar.gz sequelpro-4693139403ba538559a939e776ee3d65d5c74598.tar.bz2 sequelpro-4693139403ba538559a939e776ee3d65d5c74598.zip |
• after "Apply Changes" in a Query Favorite Manager update the Query Favorites of all opened documents to synchronize changes in global favorites
• "Import Favorites" in the Query Favorite Manager adds the imported favorites after the last selected item, if no selected item is found it adds them
-rw-r--r-- | Source/SPQueryFavoriteManager.h | 5 | ||||
-rw-r--r-- | Source/SPQueryFavoriteManager.m | 34 |
2 files changed, 25 insertions, 14 deletions
diff --git a/Source/SPQueryFavoriteManager.h b/Source/SPQueryFavoriteManager.h index 4268ffe0..1546186e 100644 --- a/Source/SPQueryFavoriteManager.h +++ b/Source/SPQueryFavoriteManager.h @@ -33,13 +33,8 @@ @interface SPQueryFavoriteManager : NSWindowController { - id delegate; - NSUserDefaults *prefs; - BOOL delegateRespondsToFavoriteUpdates; - - NSDocument *tableDocumentInstance; NSURL *delegatesFileURL; IBOutlet NSPopUpButton *encodingPopUp; IBOutlet NSTableView *favoritesTableView; diff --git a/Source/SPQueryFavoriteManager.m b/Source/SPQueryFavoriteManager.m index ce10bfa7..545d0317 100644 --- a/Source/SPQueryFavoriteManager.m +++ b/Source/SPQueryFavoriteManager.m @@ -48,15 +48,17 @@ - (id)initWithDelegate:(id)managerDelegate { if ((self = [super initWithWindowNibName:@"QueryFavoriteManager"])) { - delegate = managerDelegate; prefs = [NSUserDefaults standardUserDefaults]; favorites = [[NSMutableArray alloc] init]; - delegateRespondsToFavoriteUpdates = [delegate respondsToSelector:@selector(queryFavoritesHaveBeenUpdated:)]; - tableDocumentInstance = [delegate valueForKeyPath:@"tableDocumentInstance"]; - delegatesFileURL = [[delegate valueForKeyPath:@"tableDocumentInstance"] fileURL]; + if(managerDelegate == nil) { + NSBeep(); + NSLog(@"Query Favorite Manger was called without a delegate."); + return nil; + } + delegatesFileURL = [[managerDelegate valueForKeyPath:@"tableDocumentInstance"] fileURL]; } return self; @@ -358,14 +360,18 @@ [[self window] makeFirstResponder:favoritesTableView]; } - // Update current document's and global query favorites + // Update current document's query favorites in the SPQueryController [[SPQueryController sharedQueryController] replaceFavoritesByArray: [self queryFavoritesForFileURL:delegatesFileURL] forFileURL:delegatesFileURL]; + + // Update global preferences' list [prefs setObject:[self queryFavoritesForFileURL:nil] forKey:@"queryFavorites"]; - // Inform delegate to update - if(delegateRespondsToFavoriteUpdates) - [delegate queryFavoritesHaveBeenUpdated:self]; + // Inform all opened documents to update the query favorites list + for(id doc in [[NSDocumentController sharedDocumentController] documents]) + if([[doc valueForKeyPath:@"customQueryInstance"] respondsToSelector:@selector(queryFavoritesHaveBeenUpdated:)]) + [[doc valueForKeyPath:@"customQueryInstance"] queryFavoritesHaveBeenUpdated:self]; + } @@ -693,7 +699,17 @@ } if([spf objectForKey:@"queryFavorites"] && [[spf objectForKey:@"queryFavorites"] count]) { - [favorites addObjectsFromArray:[spf objectForKey:@"queryFavorites"]]; + if([favoritesTableView numberOfSelectedRows] > 0) { + // Insert imported queries after the last selected favorite + NSUInteger insertIndex = [[favoritesTableView selectedRowIndexes] lastIndex] + 1; + NSUInteger i; + for(i=0; i<[[spf objectForKey:@"queryFavorites"] count]; i++) { + [favorites insertObject:[[spf objectForKey:@"queryFavorites"] objectAtIndex:i] atIndex:insertIndex+i]; + } + } else { + // If no selection add them + [favorites addObjectsFromArray:[spf objectForKey:@"queryFavorites"]]; + } [favoritesArrayController rearrangeObjects]; [favoritesTableView reloadData]; } else { |