From 79c928dcdda14db7f47d4db33097baadd6fb1e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Berg?= Date: Wed, 24 Mar 2010 08:09:10 +0100 Subject: [PATCH] Remove my 10.6 QuickLook panel code since Nathan's implementation handles this more gracefully (includes 10.5 support). --- ApplicationController.h | 3 -- ApplicationController.m | 25 ++-------- PBGitHistoryController.m | 103 ++------------------------------------- 3 files changed, 9 insertions(+), 122 deletions(-) diff --git a/ApplicationController.h b/ApplicationController.h index 59b103f..4305662 100644 --- a/ApplicationController.h +++ b/ApplicationController.h @@ -7,7 +7,6 @@ // #import -#import /* for QLPreviewPanel */ #import "PBGitRepository.h" @class PBCLIProxy; @@ -38,7 +37,5 @@ - (IBAction)saveAction:sender; - (IBAction) showHelp:(id) sender; -- (IBAction)togglePreviewPanel:(id)previewPanel; - - (IBAction) showCloneRepository:(id)sender; @end diff --git a/ApplicationController.m b/ApplicationController.m index c06e8c1..624bf67 100644 --- a/ApplicationController.m +++ b/ApplicationController.m @@ -31,6 +31,7 @@ if(![[NSBundle bundleWithPath:@"/System/Library/Frameworks/Quartz.framework/Frameworks/QuickLookUI.framework"] load]) if(![[NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/QuickLookUI.framework"] load]) NSLog(@"Could not load QuickLook"); + self.cliProxy = [PBCLIProxy new]; } @@ -215,7 +216,7 @@ return managedObjectModel; } - managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; + managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; return managedObjectModel; } @@ -292,12 +293,14 @@ */ - (IBAction) saveAction:(id)sender { + NSError *error = nil; if (![[self managedObjectContext] save:&error]) { [[NSApplication sharedApplication] presentError:error]; } } + /** Implementation of the applicationShouldTerminate: method, used here to handle the saving of changes in the application managed object context @@ -346,26 +349,6 @@ return reply; } -// QuickLook preview panel - -- (IBAction)togglePreviewPanel:(id)previewPanel -{ - if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) { - [[QLPreviewPanel sharedPreviewPanel] orderOut:nil]; - } else { - [[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil]; - } -} - -- (BOOL) validateMenuItem:(NSMenuItem *)item { - if ([item action] == @selector(saveAction:)) { - // disable the Save menu item if there is no repository document open - return ([[PBRepositoryDocumentController sharedDocumentController] currentDocument] != nil); - } else { - return [NSApp validateMenuItem:item]; - } -} - - (void)applicationWillTerminate:(NSNotification *)aNotification { [PBGitDefaults removePreviousDocumentPaths]; diff --git a/PBGitHistoryController.m b/PBGitHistoryController.m index 51b3637..b84c4c5 100644 --- a/PBGitHistoryController.m +++ b/PBGitHistoryController.m @@ -20,6 +20,7 @@ #import "PBDiffWindowController.h" #import "PBGitDefaults.h" #import "PBGitRevList.h" + #define QLPreviewPanel NSClassFromString(@"QLPreviewPanel") #define kHistorySelectedDetailIndexKey @"PBHistorySelectedDetailIndex" #define kHistoryDetailViewIndex 0 @@ -37,87 +38,7 @@ @implementation PBGitHistoryController @synthesize selectedCommitDetailsIndex, webCommit, gitTree, commitController, refController; -// MARK: Quick Look panel support - -- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel; -{ - return YES; -} - -- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel -{ - // This document is now responsible of the preview panel - // It is allowed to set the delegate, data source and refresh panel. - previewPanel = panel; - panel.delegate = self; - panel.dataSource = self; -} - -- (void)endPreviewPanelControl:(QLPreviewPanel *)panel -{ - // This document loses its responsisibility on the preview panel - // Until the next call to -beginPreviewPanelControl: it must not - // change the panel's delegate, data source or refresh it. - [previewPanel release]; - previewPanel = nil; -} - -// MARK: Quick Look panel data source - -- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel -{ - return [[fileBrowser selectedRowIndexes] count]; -} - -- (id )previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index -{ - return [[treeController selectedObjects] objectAtIndex:index]; -} - -// MARK: Quick Look panel delegate - -- (BOOL)previewPanel:(QLPreviewPanel *)panel handleEvent:(NSEvent *)event -{ - // redirect all key down events to the table view - if ([event type] == NSKeyDown) { - [fileBrowser keyDown:event]; - return YES; - } - return NO; -} - -// This delegate method provides the rect on screen from which the panel will zoom. -- (NSRect)previewPanel:(QLPreviewPanel *)panel sourceFrameOnScreenForPreviewItem:(id )item -{ - NSInteger index = [fileBrowser rowForItem:[[treeController selectedNodes] objectAtIndex:0]]; - if (index == NSNotFound) { - return NSZeroRect; - } - - NSRect iconRect = [fileBrowser frameOfCellAtColumn:0 row:index]; - - // check that the icon rect is visible on screen - NSRect visibleRect = [fileBrowser visibleRect]; - - if (!NSIntersectsRect(visibleRect, iconRect)) { - return NSZeroRect; - } - - // convert icon rect to screen coordinates - iconRect = [fileBrowser convertRectToBase:iconRect]; - iconRect.origin = [[fileBrowser window] convertBaseToScreen:iconRect.origin]; - - return iconRect; -} - -// This delegate method provides a transition image between the table view and the preview panel -- (id)previewPanel:(QLPreviewPanel *)panel transitionImageForPreviewItem:(id )item contentRect:(NSRect *)contentRect -{ - PBGitTree * treeItem = (PBGitTree *)item; - return treeItem.iconImage; -} - -// MARK: NSToolbarItemValidation Methods +#pragma mark NSToolbarItemValidation Methods - (BOOL) validateToolbarItem:(NSToolbarItem *)theItem { @@ -137,7 +58,7 @@ return res; } -// MARK: PBGitHistoryController +#pragma mark PBGitHistoryController - (void)awakeFromNib { @@ -185,11 +106,6 @@ - (void) updateKeys { - // Remove any references in the QLPanel - //[[QLPreviewPanel sharedPreviewPanel] setURLs:[NSArray array] currentIndex:0 preservingDisplayState:YES]; - // We have to do this manually, as NSTreeController leaks memory? - //[treeController setSelectionIndexPaths:[NSArray array]]; - selectedCommit = [[commitController selectedObjects] lastObject]; if (self.selectedCommitDetailsIndex == kHistoryTreeViewIndex) { @@ -381,12 +297,7 @@ && [event modifierFlags] & NSCommandKeyMask) { // command+alt+f - [superController.window makeFirstResponder: searchField]; - } - else if ([[event charactersIgnoringModifiers] isEqualToString: @" "]) - { - // space - [[NSApp delegate] togglePreviewPanel:self]; + [[superController window] makeFirstResponder: searchField]; } else { @@ -409,10 +320,6 @@ - (IBAction) toggleQLPreviewPanel:(id)sender { - // !!! Andre Berg 20100324: commented this out since brotherbard implements - // the QLPreviewPanel a bit more gracefully than me - // [[NSApp delegate] togglePreviewPanel:sender]; - if ([[QLPreviewPanel sharedPreviewPanel] respondsToSelector:@selector(setDataSource:)]) { // Public QL API if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) @@ -759,7 +666,7 @@ PBGitTree *treeItem = (PBGitTree *)[[treeController selectedObjects] objectAtIndex:index]; NSURL *previewURL = [NSURL fileURLWithPath:[treeItem tmpFileNameForContents]]; - return ()previewURL; + return (id )previewURL; } #pragma mark