Changeset 2886

Show
Ignore:
Timestamp:
05/21/05 00:28:53 (4 years ago)
Author:
morris
Message:

Bring in support for Spotlight search

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Footagehead/trunk/English.lproj/Localizable.strings

    r2846 r2886  
    77/* No comment provided by engineer. */ 
    88"%u %@" = "%1$u %2$@"; 
     9 
     10/* Spotlight query (query) */ 
     11"\"%@\"" = "“%@”"; 
    912 
    1013/* No comment provided by engineer. */ 
  • Footagehead/trunk/English.lproj/MainMenu.nib/classes.nib

    r2883 r2886  
    1111                openMenu = id;  
    1212                openParent = id;  
     13                openSpotlight = id;  
    1314                openURL = id;  
    1415                previousImage = id;  
     
    3031                "_menu" = NSPopUpButton;  
    3132                "_moveToTrashButton" = NSButton;  
     33                "_openSpotlightPanel" = NSPanel;  
     34                "_openSpotlightTextView" = NSTextView;  
    3235                "_openURLPanel" = NSPanel;  
    3336                "_openURLTextView" = NSTextView;  
  • Footagehead/trunk/English.lproj/MainMenu.nib/info.nib

    r2884 r2886  
    88        <dict> 
    99                <key>29</key> 
    10                 <string>418 630 317 44 0 0 1280 1002 </string> 
     10                <string>262 594 317 44 0 0 1280 1002 </string> 
    1111        </dict> 
    1212        <key>IBFramework Version</key> 
     
    1818                <integer>21</integer> 
    1919                <integer>438</integer> 
     20                <integer>567</integer> 
    2021                <integer>29</integer> 
    2122                <integer>302</integer> 
  • Footagehead/trunk/English.lproj/ReleaseNotes.rtf

    r2884 r2886  
    5454- Multithreaded preloading of next few images\ 
    5555- Fast thumbnail generation for JPEG files\ 
     56- Spotlight image search support\ 
    5657 
    5758\f0\b \cf2 \ 
  • Footagehead/trunk/FHController.h

    r2883 r2886  
    3131 
    3232@interface FHController : ZAWindowController { 
     33        IBOutlet NSMenuItem                             *_openSpotlightMenuItem; 
     34         
    3335        IBOutlet ZASplitView                    *_splitView; 
    3436        IBOutlet NSView                                 *_leftView; 
     
    5759        IBOutlet NSTextView                             *_openURLTextView; 
    5860 
     61        IBOutlet NSPanel                                *_openSpotlightPanel; 
     62        IBOutlet NSTextView                             *_openSpotlightTextView; 
     63 
    5964        FHFullscreenWindow                              *_fullscreenWindow; 
    6065        FHHandler                                               *_handler; 
     
    7782- (IBAction)                                            open:(id)sender; 
    7883- (IBAction)                                            openURL:(id)sender; 
     84- (IBAction)                                            openSpotlight:(id)sender; 
    7985- (IBAction)                                            openParent:(id)sender; 
    8086- (IBAction)                                            openMenu:(id)sender; 
  • Footagehead/trunk/FHController.m

    r2883 r2886  
    128128        _loadThumbnailsLock     = [[NSConditionLock alloc] initWithCondition:0]; 
    129129         
     130        // --- unlink spotlight item if not available 
     131        if(!NSClassFromString(@"NSMetadataQuery")) 
     132                [_openSpotlightMenuItem setAction:NULL]; 
     133         
    130134        // --- open last directory by default (unset if started by opening a file) 
    131135        _openLast = YES; 
     
    337341     
    338342    return handled; 
    339 } 
    340  
    341  
    342  
    343 - (void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
    344         if(returnCode == NSOKButton) 
    345                 [self loadURL:[ZAURL fileURLWithPath:[sheet filename]] withHint:FHHandlerHintNone selectRow:0]; 
    346 } 
    347  
    348  
    349  
    350 - (void)openURLPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
    351         [_openURLPanel close]; 
    352          
    353         if(returnCode == NSRunStoppedResponse) 
    354                 [self loadURL:[ZAURL URLWithString:[_openURLTextView string] scheme:@"http"] withHint:FHHandlerHintNone selectRow:0]; 
    355 } 
    356  
    357  
    358  
    359 - (void)screenPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
    360         NSScreen                *screen; 
    361         NSRect                  screenRect; 
    362         int                             screenNumber; 
    363  
    364         [_screenPanel close]; 
    365          
    366         if(returnCode == NSRunStoppedResponse) { 
    367                 // --- save in prefs 
    368                 [FHSettings setInt:[_screenPopUpButton indexOfSelectedItem] forKey:FHScreen]; 
    369                 [FHSettings setBool:[_screenAutoSwitchButton state] forKey:FHAutoSwitch]; 
    370                 [FHSettings setInt:[_screenAutoSwitchTextField intValue] forKey:FHAutoSwitchTime]; 
    371                  
    372                 // --- get screen 
    373                 screenNumber = [FHSettings intForKey:FHScreen]; 
    374                  
    375                 if((unsigned int) screenNumber > [[NSScreen screens] count]) 
    376                         screenNumber = 0; 
    377                  
    378                 screen = [[NSScreen screens] objectAtIndex:screenNumber]; 
    379                 screenRect = [screen frame]; 
    380                 screenRect.origin.x = screenRect.origin.y = 0; 
    381                  
    382                 // --- create fullscreen window 
    383                 _fullscreenWindow = [[FHFullscreenWindow alloc] 
    384                         initWithContentRect:screenRect 
    385                                           styleMask:NSBorderlessWindowMask 
    386                                                 backing:NSBackingStoreBuffered 
    387                                                   defer:YES 
    388                                                  screen:screen]; 
    389                  
    390                 [_fullscreenWindow setLevel:NSScreenSaverWindowLevel]; 
    391                 [_fullscreenWindow setDelegate:self]; 
    392                 [_fullscreenWindow setReleasedWhenClosed:YES]; 
    393                 [_fullscreenWindow setBackgroundColor:[NSColor blackColor]]; 
    394                 [_fullscreenWindow setTitle:[[self window] title]]; 
    395                 [_fullscreenPanel setFrame:screenRect display:NO]; 
    396                 [_fullscreenWindow setContentView:[[_fullscreenPanel contentView] retain]]; 
    397                 [[self window] orderOut:self]; 
    398                 [_fullscreenWindow makeKeyAndOrderFront:self]; 
    399                 [self updateImage]; 
    400  
    401                 if([FHSettings boolForKey:FHAutoSwitch]) { 
    402                         _loadImageTimer = [[NSTimer scheduledTimerWithTimeInterval:[FHSettings intForKey:FHAutoSwitchTime] 
    403                                                                                                                                 target:self 
    404                                                                                                                           selector:@selector(loadFileTimer:) 
    405                                                                                                                           userInfo:NULL 
    406                                                                                                                            repeats:YES] retain]; 
    407                 } 
    408         } 
    409343} 
    410344 
     
    452386 
    453387 
     388- (void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
     389        if(returnCode == NSOKButton) 
     390                [self loadURL:[ZAURL fileURLWithPath:[sheet filename]] withHint:FHHandlerHintNone selectRow:0]; 
     391} 
     392 
     393 
     394 
    454395- (IBAction)openURL:(id)sender { 
    455396        [_openURLTextView setSelectedRange:NSMakeRange(0, [[_openURLTextView string] length])]; 
     
    464405 
    465406 
     407- (void)openURLPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
     408        [_openURLPanel close]; 
     409         
     410        if(returnCode == NSRunStoppedResponse) 
     411                [self loadURL:[ZAURL URLWithString:[_openURLTextView string] scheme:@"http"] withHint:FHHandlerHintNone selectRow:0]; 
     412} 
     413 
     414 
     415 
     416- (IBAction)openSpotlight:(id)sender { 
     417        [_openSpotlightTextView setSelectedRange:NSMakeRange(0, [[_openSpotlightTextView string] length])]; 
     418 
     419        [NSApp beginSheet:_openSpotlightPanel 
     420           modalForWindow:[self window] 
     421                modalDelegate:self 
     422           didEndSelector:@selector(openSpotlightPanelDidEnd:returnCode:contextInfo:) 
     423                  contextInfo:NULL]; 
     424} 
     425 
     426 
     427 
     428- (void)openSpotlightPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
     429        ZAURL           *url; 
     430         
     431        [_openSpotlightPanel close]; 
     432         
     433        if(returnCode == NSRunStoppedResponse) { 
     434                url = [[ZAURL alloc] initWithScheme:@"spotlight" host:@"localhost" port:0]; 
     435                [url setPath:[NSSWF:@"/%@", [_openSpotlightTextView string]]]; 
     436                [self loadURL:url withHint:FHHandlerHintSpotlight selectRow:0]; 
     437                [url release]; 
     438        } 
     439} 
     440 
     441 
     442 
    466443- (IBAction)openParent:(id)sender { 
    467444        NSString        *name; 
     
    609586 
    610587- (IBAction)reload:(id)sender { 
    611         [self loadURL:[_handler URL] withHint:FHHandlerHintNone selectRow:[_tableView selectedRow]]; 
     588        [self loadURL:[_handler URL] withHint:[_handler hint] selectRow:[_tableView selectedRow]]; 
    612589} 
    613590 
     
    624601 
    625602 
     603- (void)screenPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
     604        NSScreen                *screen; 
     605        NSRect                  screenRect; 
     606        int                             screenNumber; 
     607 
     608        [_screenPanel close]; 
     609         
     610        if(returnCode == NSRunStoppedResponse) { 
     611                // --- save in prefs 
     612                [FHSettings setInt:[_screenPopUpButton indexOfSelectedItem] forKey:FHScreen]; 
     613                [FHSettings setBool:[_screenAutoSwitchButton state] forKey:FHAutoSwitch]; 
     614                [FHSettings setInt:[_screenAutoSwitchTextField intValue] forKey:FHAutoSwitchTime]; 
     615                 
     616                // --- get screen 
     617                screenNumber = [FHSettings intForKey:FHScreen]; 
     618                 
     619                if((unsigned int) screenNumber > [[NSScreen screens] count]) 
     620                        screenNumber = 0; 
     621                 
     622                screen = [[NSScreen screens] objectAtIndex:screenNumber]; 
     623                screenRect = [screen frame]; 
     624                screenRect.origin.x = screenRect.origin.y = 0; 
     625                 
     626                // --- create fullscreen window 
     627                _fullscreenWindow = [[FHFullscreenWindow alloc] 
     628                        initWithContentRect:screenRect 
     629                                          styleMask:NSBorderlessWindowMask 
     630                                                backing:NSBackingStoreBuffered 
     631                                                  defer:YES 
     632                                                 screen:screen]; 
     633                 
     634                [_fullscreenWindow setLevel:NSScreenSaverWindowLevel]; 
     635                [_fullscreenWindow setDelegate:self]; 
     636                [_fullscreenWindow setReleasedWhenClosed:YES]; 
     637                [_fullscreenWindow setBackgroundColor:[NSColor blackColor]]; 
     638                [_fullscreenWindow setTitle:[[self window] title]]; 
     639                [_fullscreenPanel setFrame:screenRect display:NO]; 
     640                [_fullscreenWindow setContentView:[[_fullscreenPanel contentView] retain]]; 
     641                [[self window] orderOut:self]; 
     642                [_fullscreenWindow makeKeyAndOrderFront:self]; 
     643                [self updateImage]; 
     644 
     645                if([FHSettings boolForKey:FHAutoSwitch]) { 
     646                        _loadImageTimer = [[NSTimer scheduledTimerWithTimeInterval:[FHSettings intForKey:FHAutoSwitchTime] 
     647                                                                                                                                target:self 
     648                                                                                                                          selector:@selector(loadFileTimer:) 
     649                                                                                                                          userInfo:NULL 
     650                                                                                                                           repeats:YES] retain]; 
     651                } 
     652        } 
     653} 
     654 
     655 
     656 
    626657- (IBAction)slideshowButtons:(id)sender { 
    627658        [_screenAutoSwitchTextField setEnabled:[_screenAutoSwitchButton state]]; 
     
    631662 
    632663- (IBAction)revealInFinder:(id)sender { 
    633         // --- might be disabled 
    634664        if(![_revealInFinderButton isEnabled]) 
    635665                return; 
    636666         
    637         // --- select in finder 
    638667        [[NSWorkspace sharedWorkspace] selectFile:[[self selectedFile] path] inFileViewerRootedAtPath:NULL]; 
    639668} 
     
    645674        int                     row; 
    646675         
    647         // --- might be disabled 
    648676        if(![_moveToTrashButton isEnabled]) 
    649677                return; 
    650678         
    651         // --- move to trash 
    652679        file = [self selectedFile]; 
    653680 
     
    664691                row--; 
    665692         
    666         // --- reload 
    667693        [self loadURL:[_handler URL] withHint:FHHandlerHintNone selectRow:row]; 
    668694} 
     
    677703        [self startSpinning]; 
    678704 
    679         // --- load files 
    680705        [url retain]; 
    681         [_handler release]; 
     706         
     707        if(_handler) { 
     708                if(![_handler isSynchronous] && ![_handler isFinished]) 
     709                        [self stopSpinning]; 
     710                 
     711                [_handler release]; 
     712        } 
     713         
    682714        _handler = [[FHHandler alloc] initWithURL:url hint:hint]; 
     715        [_handler setDelegate:self]; 
    683716        [url release]; 
    684717         
    685         // --- adjust interface 
    686718        [self updateLeftStatus]; 
    687719        [self updateButtons]; 
     
    708740        } 
    709741 
    710         [self stopSpinning]; 
     742        if([_handler isSynchronous]) 
     743                [self stopSpinning]; 
    711744} 
    712745 
     
    917950 
    918951 
     952- (void)handlerDidAddFile:(FHHandler *)handler { 
     953        [_tableView reloadData]; 
     954        [self updateLeftStatus]; 
     955} 
     956 
     957 
     958 
     959- (void)handlerDidFinishLoading:(FHHandler *)handler { 
     960        [self stopSpinning]; 
     961} 
     962 
     963 
     964 
    919965#pragma mark - 
    920966 
  • Footagehead/trunk/FHHandler.h

    r920 r2886  
    1 /* $Id: FHHandler.h,v 1.7 2005/01/08 22:55:46 morris Exp $ */ 
     1/* $Id$ */ 
    22 
    33/* 
     
    3333        FHHandlerHintGallery, 
    3434        FHHandlerHintImage, 
    35         FHHandlerHintRange 
     35        FHHandlerHintRange, 
     36        FHHandlerHintSpotlight 
    3637}; 
    3738typedef enum FHHandlerHint              FHHandlerHint; 
     
    4344 
    4445        FHHandlerHint                           _hint; 
     46         
     47        id                                                      _delegate; 
    4548         
    4649        BOOL                                            _loadedFiles; 
     
    5659- (id)                                                  initWithURL:(ZAURL *)url hint:(FHHandlerHint)hint; 
    5760 
     61- (void)                                                setDelegate:(id)delegate; 
     62- (id)                                                  delegate; 
     63 
    5864- (NSArray *)                                   files; 
    5965- (unsigned int)                                numberOfFiles; 
     
    6167- (unsigned int)                                numberOfImages; 
    6268- (BOOL)                                                isLocal; 
     69- (BOOL)                                                isSynchronous; 
     70- (BOOL)                                                isFinished; 
    6371- (FHHandlerHint)                               hint; 
    6472 
     
    7179 
    7280 
     81@interface NSObject(FHHandlerDelegate) 
     82 
     83- (void)handlerDidAddFile:(FHHandler *)handler; 
     84- (void)handlerDidFinishLoading:(FHHandler *)handler; 
     85 
     86@end 
     87 
    7388 
    7489@interface FHPlaceholderHandler : FHHandler 
  • Footagehead/trunk/FHHandler.m

    r2885 r2886  
    3333#import "FHImageHandler.h" 
    3434#import "FHRangeHandler.h" 
     35#import "FHSpotlightHandler.h" 
    3536 
    3637static NSDictionary                             *FHHandlerHints; 
     
    5051                        [FHImageHandler class], 
    5152                                [NSNumber numberWithInt:FHHandlerHintImage], 
     53                        [FHSpotlightHandler class], 
     54                                [NSNumber numberWithInt:FHHandlerHintSpotlight], 
    5255                        NULL]; 
    5356 
     
    5760                        [FHRangeHandler class], 
    5861                        [FHImageHandler class], 
     62                        [FHSpotlightHandler class], 
    5963                        NULL]; 
    6064        } 
     
    148152#pragma mark - 
    149153 
     154- (void)setDelegate:(id)delegate { 
     155        _delegate = delegate; 
     156} 
     157 
     158 
     159 
     160- (id)delegate { 
     161        return _delegate; 
     162} 
     163 
     164 
     165 
     166#pragma mark - 
     167 
    150168- (NSArray *)files { 
    151169        [self doesNotRecognizeSelector:_cmd]; 
     
    189207- (BOOL)isLocal { 
    190208        return [[self URL] isFileURL]; 
     209} 
     210 
     211 
     212 
     213- (BOOL)isSynchronous { 
     214        return YES; 
     215} 
     216 
     217 
     218 
     219- (BOOL)isFinished { 
     220        return YES; 
    191221} 
    192222 
  • Footagehead/trunk/Footagehead.xcode/project.pbxproj

    r2884 r2886  
    5656                        children = ( 
    5757                                A53901F30596A3E7000FBFD6, 
    58                                 1058C7A1FEA54F0111CA2CBB
     58                                A50932DE083E9530006646D1
    5959                                A54D2E8D076214FC00227EBE, 
    6060                        ); 
     
    6363                        refType = 4; 
    6464                        sourceTree = "<group>"; 
    65                 }; 
    66                 1058C7A1FEA54F0111CA2CBB = { 
    67                         isa = PBXFileReference; 
    68                         lastKnownFileType = wrapper.framework; 
    69                         name = Cocoa.framework; 
    70                         path = /System/Library/Frameworks/Cocoa.framework; 
    71                         refType = 0; 
    72                         sourceTree = "<absolute>"; 
    7365                }; 
    7466                1058C7A2FEA54F0111CA2CBB = { 
     
    115107                29B97313FDCFA39411CA2CEA = { 
    116108                        buildSettings = { 
    117                                 MACOSX_DEPLOYMENT_TARGET = 10.2; 
    118                                 SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk; 
    119109                        }; 
    120110                        buildStyles = ( 
     
    263253                                GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 
    264254                                GCC_OPTIMIZATION_LEVEL = 0; 
    265                                 OTHER_CFLAGS = "-DDEVELOPMENT"; 
     255                                OTHER_CFLAGS = "-DDEVELOPMENT $(value)"; 
    266256                                ZERO_LINK = YES; 
    267257                        }; 
     
    275265                                GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 
    276266                                GCC_WARN_UNINITIALIZED_AUTOS = YES; 
    277                                 OTHER_CFLAGS = "-DDEPLOYMENT"; 
     267                                OTHER_CFLAGS = "-DDEPLOYMENT $(value)"; 
    278268                                ZERO_LINK = NO; 
    279269                        }; 
     
    324314                        refType = 4; 
    325315                        sourceTree = "<group>"; 
    326                 }; 
    327                 770EBFC4083C94CE0094BD6C = { 
    328                         fileRef = 770EBFC2083C94CE0094BD6C; 
    329                         isa = PBXBuildFile; 
    330                         settings = { 
    331                         }; 
    332316                }; 
    333317                770EBFC5083C94CE0094BD6C = { 
     
    14651449                                INFOPLIST_FILE = Info.plist; 
    14661450                                MACOSX_DEPLOYMENT_TARGET = 10.2; 
     1451                                OTHER_CFLAGS = "-DMAC_OS_X_VERSION_MAX_ALLOWED=1040"; 
    14671452                                PRODUCT_NAME = Footagehead; 
    14681453                                WRAPPER_EXTENSION = app; 
     
    15301515                                77CDB023083B6B85003BE654, 
    15311516                                770EBFC5083C94CE0094BD6C, 
     1517                                A5092F57083E7812006646D1, 
    15321518                        ); 
    15331519                        isa = PBXSourcesBuildPhase; 
     
    15451531                        buildActionMask = 2147483647; 
    15461532                        files = ( 
     1533                                A50932DF083E9530006646D1, 
    15471534                                A53901F40596A3E7000FBFD6, 
    1548                                 A539028B0596A45A000FBFD6, 
    15491535                                A54D2E8E076214FC00227EBE, 
    15501536                                770EB7A5083BA97E0094BD6C, 
     
    15791565//A53 
    15801566//A54 
     1567                A5092F55083E7812006646D1 = { 
     1568                        fileEncoding = 5; 
     1569                        isa = PBXFileReference; 
     1570                        lastKnownFileType = sourcecode.c.objc; 
     1571                        path = FHSpotlightHandler.m; 
     1572                        refType = 4; 
     1573                        sourceTree = "<group>"; 
     1574                }; 
     1575                A5092F56083E7812006646D1 = { 
     1576                        fileEncoding = 5; 
     1577                        isa = PBXFileReference; 
     1578                        lastKnownFileType = sourcecode.c.h; 
     1579                        path = FHSpotlightHandler.h; 
     1580                        refType = 4; 
     1581                        sourceTree = "<group>"; 
     1582                }; 
     1583                A5092F57083E7812006646D1 = { 
     1584                        fileRef = A5092F55083E7812006646D1; 
     1585                        isa = PBXBuildFile; 
     1586                        settings = { 
     1587                        }; 
     1588                }; 
     1589                A50932DE083E9530006646D1 = { 
     1590                        isa = PBXFileReference; 
     1591                        lastKnownFileType = wrapper.framework; 
     1592                        name = Cocoa.framework; 
     1593                        path = /System/Library/Frameworks/Cocoa.framework; 
     1594                        refType = 0; 
     1595                        sourceTree = "<absolute>"; 
     1596                }; 
     1597                A50932DF083E9530006646D1 = { 
     1598                        fileRef = A50932DE083E9530006646D1; 
     1599                        isa = PBXBuildFile; 
     1600                        settings = { 
     1601                        }; 
     1602                }; 
    15811603                A51395F405771ED4007FE220 = { 
    15821604                        isa = PBXFileReference; 
     
    16441666                A53901F40596A3E7000FBFD6 = { 
    16451667                        fileRef = A53901F30596A3E7000FBFD6; 
    1646                         isa = PBXBuildFile; 
    1647                         settings = { 
    1648                         }; 
    1649                 }; 
    1650                 A539028B0596A45A000FBFD6 = { 
    1651                         fileRef = 1058C7A1FEA54F0111CA2CBB; 
    16521668                        isa = PBXBuildFile; 
    16531669                        settings = { 
     
    18541870                        files = ( 
    18551871                                A54D42DD07663AA300227EBE, 
    1856                                 770EBFC4083C94CE0094BD6C, 
    18571872                        ); 
    18581873                        isa = PBXCopyFilesBuildPhase; 
     
    18931908                                A5B1F9BF067BDF2300111D0A, 
    18941909                                A5B1F9C0067BDF2300111D0A, 
     1910                                A5092F55083E7812006646D1, 
     1911                                A5092F56083E7812006646D1, 
    18951912                        ); 
    18961913                        isa = PBXGroup;