Changeset 5139

Show
Ignore:
Timestamp:
12/15/07 18:57:37 (10 months ago)
Author:
morris
Message:

Add setting for simplifying file names in playlist

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Spiral/trunk/English.lproj/Preferences.nib/classes.nib

    r5129 r5139  
    2121                                <string>id</string> 
    2222                                <key>resumeBehavior</key> 
     23                                <string>id</string> 
     24                                <key>simplifyFilenames</key> 
    2325                                <string>id</string> 
    2426                        </dict> 
     
    4547                                <key>_resumeBehaviorMatrix</key> 
    4648                                <string>NSMatrix</string> 
     49                                <key>_simplifyFilenamesButton</key> 
     50                                <string>NSButton</string> 
    4751                        </dict> 
    4852                        <key>SUPERCLASS</key> 
  • Spiral/trunk/English.lproj/Preferences.nib/info.nib

    r5099 r5139  
    55        <key>IBFramework Version</key> 
    66        <string>629</string> 
    7         <key>IBLastKnownRelativeProjectPath</key> 
    8         <string>../../Spiral.xcodeproj</string> 
    97        <key>IBOldestOS</key> 
    108        <integer>5</integer> 
  • Spiral/trunk/SPDrillController.m

    r5130 r5139  
    161161 
    162162 
     163- (void)drillView:(SPDrillView *)drillView willOpenContainer:(SPPlaylistContainer *)container { 
     164        [[SPPlaylistController playlistController] reloadItem:container]; 
     165} 
     166 
     167 
     168 
    163169- (void)drillView:(SPDrillView *)drillView shouldOpenFile:(SPPlaylistFile *)file { 
    164170        QTMovie         *movie; 
  • Spiral/trunk/SPDrillView.h

    r5099 r5139  
    2727 */ 
    2828 
    29 @class SPPlaylistGroup, SPPlaylistFile, SPPlaylistItem; 
     29@class SPPlaylistGroup, SPPlaylistFile, SPPlaylistContainer, SPPlaylistItem; 
    3030@protocol SPDrillViewDelegate; 
    3131 
     
    5858@protocol SPDrillViewDelegate <NSObject> 
    5959 
     60- (void)drillView:(SPDrillView *)drillView willOpenContainer:(SPPlaylistContainer *)container; 
    6061- (void)drillView:(SPDrillView *)drillView shouldOpenFile:(SPPlaylistFile *)file; 
    6162 
  • Spiral/trunk/SPDrillView.m

    r5099 r5139  
    2929#import "SPDrillCell.h" 
    3030#import "SPDrillView.h" 
     31#import "SPPlaylistController.h" 
    3132#import "SPPlaylistItem.h" 
     33#import "SPSettings.h" 
    3234 
    3335@interface SPDrillView(Private) 
     
    201203         
    202204        if([item isKindOfClass:[SPPlaylistContainer class]]) { 
    203                 if([item isKindOfClass:[SPPlaylistFolder class]]) 
    204                         [item reload]; 
     205                [[self delegate] drillView:self willOpenContainer:item]; 
    205206                 
    206207                [_path addObject:item]; 
     
    336337        for(item in [items subarrayWithRange:_visibleRange]) { 
    337338                cell = [[self cell] copy]; 
    338                 [cell setObjectValue:[item name]]; 
     339                 
     340                if([SPSettings boolForKey:SPSimplifyFilenames]) 
     341                        [cell setObjectValue:[item cleanName]]; 
     342                else 
     343                        [cell setObjectValue:[item name]]; 
     344 
    339345                [cell setImage:[item iconWithSize:[[self cell] imageSize]]]; 
    340346                [cell drawWithFrame:cellFrame inView:self]; 
  • Spiral/trunk/SPPlaylistController.h

    r5121 r5139  
    7979- (void)moveSelectionDown; 
    8080- (void)moveSelectionUp; 
     81- (void)reloadItem:(id)item; 
    8182 
    8283- (IBAction)open:(id)sender; 
  • Spiral/trunk/SPPlaylistController.m

    r5133 r5139  
    3434#import "SPPlaylistController.h" 
    3535#import "SPPlaylistItem.h" 
     36#import "SPPreferencesController.h" 
    3637#import "SPSettings.h" 
    3738 
     
    4647- (void)_saveRecentPlaylist; 
    4748- (void)_restoreExpansionStateForItems:(NSArray *)array; 
     49- (NSArray *)_filteredItems:(NSArray *)array; 
    4850 
    4951- (void)_addFilesFromQuery:(NSMetadataQuery *)query; 
     
    113115        for(item in items) { 
    114116                if([item isExpanded]) { 
    115                         if([item isKindOfClass:[SPPlaylistFolder class]]) 
    116                                 [item reload]; 
     117                        [self reloadItem:item]; 
    117118                         
    118119                        [_outlineView expandItem:item]; 
     
    246247 
    247248- (void)_addFilesFromQuery:(NSMetadataQuery *)query { 
    248         [[query delegate] reload]; 
     249        [self reloadItem:[query delegate]]; 
    249250 
    250251        [_outlineView reloadData]; 
     
    334335                   selector:@selector(eventFileWrite:) 
    335336                           name:WIEventFileWriteNotification]; 
     337         
     338        [[NSNotificationCenter defaultCenter] 
     339                addObserver:self 
     340                   selector:@selector(preferencesDidChange:) 
     341                           name:SPPreferencesDidChangeNotification]; 
    336342         
    337343        [self window]; 
     
    472478 
    473479- (void)eventFileWrite:(NSNotification *)notification { 
    474         [[_eventQueueItems objectForKey:[notification object]] reload]; 
    475          
     480        [self reloadItem:[_eventQueueItems objectForKey:[notification object]]]; 
     481         
     482        [_outlineView reloadData]; 
     483
     484 
     485 
     486 
     487- (void)preferencesDidChange:(NSNotification *)notification { 
     488        [_playlist sortItemsUsingSelector:[SPSettings boolForKey:SPSimplifyFilenames] 
     489                ? @selector(compareCleanName:) 
     490                : @selector(compareName:)]; 
     491 
    476492        [_outlineView reloadData]; 
    477493} 
     
    622638        [_outlineView selectRow:row byExtendingSelection:NO]; 
    623639        [_outlineView scrollRowToVisible:row]; 
     640} 
     641 
     642 
     643 
     644- (void)reloadItem:(id)item { 
     645        if([item respondsToSelector:@selector(reload)]) 
     646                [item reload]; 
     647         
     648        [item sortUsingSelector:[SPSettings boolForKey:SPSimplifyFilenames] 
     649                ? @selector(compareCleanName:) 
     650                : @selector(compareName:)]; 
    624651} 
    625652 
     
    10111038- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 
    10121039        if(tableColumn == _filesTableColumn) { 
    1013                 return [item name]; 
     1040                return [SPSettings boolForKey:SPSimplifyFilenames] ? [item cleanName] : [item name]; 
    10141041        } 
    10151042        else if(tableColumn == _viewCountTableColumn) { 
     
    10801107                 
    10811108                if([[NSFileManager defaultManager] directoryExistsAtPath:path]) { 
    1082                         [item reload]; 
     1109                        [self reloadItem:item]; 
    10831110                         
    10841111                        [_outlineView reloadData]; 
  • Spiral/trunk/SPPlaylistItem.h

    r5117 r5139  
    4040- (void)setName:(NSString *)name; 
    4141- (NSString *)name; 
     42- (NSString *)cleanName; 
    4243- (NSImage *)icon; 
    4344- (NSImage *)iconWithSize:(NSSize)size; 
     
    5051- (void)setRecent:(BOOL)recent; 
    5152- (BOOL)isRecent; 
     53 
     54- (NSComparisonResult)compareName:(id)object; 
     55- (NSComparisonResult)compareCleanName:(id)object; 
    5256 
    5357@end 
     
    6367        NSTimeInterval                  _duration; 
    6468        NSSize                                  _dimensions; 
     69         
     70        NSMutableString                 *_cleanName; 
    6571} 
    6672 
     
    100106- (NSArray *)shuffledItems; 
    101107- (void)startShufflingFromItem:(id)item; 
     108- (void)sortUsingSelector:(SEL)selector; 
     109- (void)sortItemsUsingSelector:(SEL)selector; 
    102110 
    103111@end 
  • Spiral/trunk/SPPlaylistItem.m

    r5135 r5139  
    2727 */ 
    2828 
     29#import "NSString-SPAdditions.h" 
    2930#import "NSImage-SPAdditions.h" 
    3031#import "SPPlaylistItem.h" 
     
    264265 
    265266 
     267- (NSString *)cleanName { 
     268        return [self name]; 
     269} 
     270 
     271 
     272 
    266273- (NSImage *)icon { 
    267274        return NULL; 
     
    328335- (BOOL)isRecent { 
    329336        return _recent; 
     337} 
     338 
     339 
     340 
     341#pragma mark - 
     342 
     343- (NSComparisonResult)compareName:(id)object { 
     344        return [[self name] compare:[object name] options:NSCaseInsensitiveSearch | NSNumericSearch]; 
     345} 
     346 
     347 
     348 
     349- (NSComparisonResult)compareCleanName:(id)object { 
     350        return [[self cleanName] compare:[object cleanName] options:NSCaseInsensitiveSearch | NSNumericSearch]; 
    330351} 
    331352 
     
    403424 
    404425- (void)dealloc { 
     426        [_cleanName release]; 
    405427        [_path release]; 
    406428        [_icon release]; 
     
    415437 
    416438#pragma mark - 
     439 
     440- (NSString *)name { 
     441        return [[NSFileManager defaultManager] displayNameAtPath:[self path]]; 
     442} 
     443 
     444 
     445 
     446- (NSString *)cleanName { 
     447        if(!_cleanName) { 
     448                _cleanName = [[[self name] stringByDeletingPathExtension] mutableCopy]; 
     449                [_cleanName removeSubstringWithStartString:@"[" endString:@"]"]; 
     450                [_cleanName removeSubstringWithStartString:@"(" endString:@")"]; 
     451                [_cleanName replaceOccurrencesOfString:@" - " withString:@" " options:0 range:NSMakeRange(0, [_cleanName length])]; 
     452                [_cleanName replaceOccurrencesOfString:@"_" withString:@" " options:0 range:NSMakeRange(0, [_cleanName length])]; 
     453                [_cleanName removeSurroundingWhitespace]; 
     454                 
     455                if([_cleanName length] == 0) 
     456                        [_cleanName setString:[[self name] stringByDeletingPathExtension]]; 
     457        } 
     458         
     459        return _cleanName; 
     460} 
     461 
     462 
    417463 
    418464- (void)setPath:(NSString *)path { 
     
    692738} 
    693739 
     740 
     741 
     742- (void)sortUsingSelector:(SEL)selector { 
     743        [_sortedItems sortUsingSelector:selector]; 
     744         
     745        [self sortItemsUsingSelector:selector]; 
     746} 
     747 
     748 
     749 
     750- (void)sortItemsUsingSelector:(SEL)selector { 
     751        id              item; 
     752         
     753        for(item in _sortedItems) { 
     754                if([item respondsToSelector:@selector(sortUsingSelector:)]) 
     755                        [item sortUsingSelector:selector]; 
     756        } 
     757} 
     758 
    694759@end 
    695760 
     
    795860 
    796861#pragma mark - 
     862 
     863- (NSString *)name { 
     864        return [[NSFileManager defaultManager] displayNameAtPath:[self path]]; 
     865} 
     866 
     867 
    797868 
    798869- (void)setPath:(NSString *)path { 
  • Spiral/trunk/SPPreferencesController.h

    r5129 r5139  
    2727 */ 
    2828 
     29#define SPPreferencesDidChangeNotification              @"SPPreferencesDidChangeNotification" 
     30 
    2931@interface SPPreferencesController : WIWindowController { 
    3032        IBOutlet NSButton                       *_playMoviesWhenOpenedButton; 
     33        IBOutlet NSButton                       *_simplifyFilenamesButton; 
     34        IBOutlet NSButton                       *_checkForUpdateButton; 
    3135        IBOutlet NSPopUpButton          *_defaultSizePopUpButton; 
    3236        IBOutlet NSMatrix                       *_resumeBehaviorMatrix; 
     
    3539        IBOutlet NSComboBox                     *_preferredAudioComboBox; 
    3640        IBOutlet NSComboBox                     *_preferredSubtitleComboBox; 
    37         IBOutlet NSButton                       *_checkForUpdateButton; 
    3841} 
    3942 
     
    4144 
    4245- (IBAction)playMoviesWhenOpened:(id)sender; 
     46- (IBAction)simplifyFilenames:(id)sender; 
     47- (IBAction)checkForUpdate:(id)sender; 
    4348- (IBAction)defaultSize:(id)sender; 
    4449- (IBAction)resumeBehavior:(id)sender; 
     
    4651- (IBAction)preferredAudioTrack:(id)sender; 
    4752- (IBAction)preferredSubtitle:(id)sender; 
    48 - (IBAction)checkForUpdate:(id)sender; 
    4953 
    5054@end 
  • Spiral/trunk/SPPreferencesController.m

    r5129 r5139  
    7575         
    7676        [_playMoviesWhenOpenedButton setState:[SPSettings boolForKey:SPPlayMoviesWhenOpened]]; 
     77        [_simplifyFilenamesButton setState:[SPSettings boolForKey:SPSimplifyFilenames]]; 
     78        [_checkForUpdateButton setState:[SPSettings boolForKey:SPCheckForUpdate]]; 
    7779        [_defaultSizePopUpButton selectItemWithTag:[SPSettings intForKey:SPDefaultScaling]]; 
    7880        [_resumeBehaviorMatrix selectCellWithTag:[SPSettings intForKey:SPResumePlayingBehavior]]; 
     
    8082        [_preferredAudioComboBox setStringValue:[SPSettings objectForKey:SPPreferredAudioPattern]]; 
    8183        [_preferredSubtitleComboBox setStringValue:[SPSettings objectForKey:SPPreferredSubtitlePattern]]; 
    82         [_checkForUpdateButton setState:[SPSettings boolForKey:SPCheckForUpdate]]; 
    8384         
    8485        [self _updateFastForwardSpeedTextField]; 
     
    9899- (IBAction)playMoviesWhenOpened:(id)sender { 
    99100        [SPSettings setBool:[_playMoviesWhenOpenedButton state] forKey:SPPlayMoviesWhenOpened]; 
     101         
     102        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
     103} 
     104 
     105 
     106 
     107- (IBAction)simplifyFilenames:(id)sender { 
     108        [SPSettings setBool:[_simplifyFilenamesButton state] forKey:SPSimplifyFilenames]; 
     109         
     110        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
     111} 
     112 
     113 
     114 
     115- (IBAction)checkForUpdate:(id)sender { 
     116        [SPSettings setBool:[_checkForUpdateButton state] forKey:SPCheckForUpdate]; 
     117         
     118        [[SPApplicationController applicationController] scheduleUpdateCheck]; 
     119         
     120        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
    100121} 
    101122 
     
    104125- (IBAction)defaultSize:(id)sender { 
    105126        [SPSettings setInt:[_defaultSizePopUpButton tagOfSelectedItem] forKey:SPDefaultScaling]; 
     127         
     128        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
    106129} 
    107130 
     
    110133- (IBAction)resumeBehavior:(id)sender { 
    111134        [SPSettings setInt:[[_resumeBehaviorMatrix selectedCell] tag] forKey:SPResumePlayingBehavior]; 
     135         
     136        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
    112137} 
    113138 
     
    118143         
    119144        [self _updateFastForwardSpeedTextField]; 
     145         
     146        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
    120147} 
    121148 
     
    124151- (IBAction)preferredAudioTrack:(id)sender { 
    125152        [SPSettings setObject:[_preferredAudioComboBox stringValue] forKey:SPPreferredAudioPattern]; 
     153         
     154        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
    126155} 
    127156 
     
    130159- (IBAction)preferredSubtitle:(id)sender { 
    131160        [SPSettings setObject:[_preferredSubtitleComboBox stringValue] forKey:SPPreferredSubtitlePattern]; 
    132 } 
    133  
    134  
    135  
    136 - (IBAction)checkForUpdate:(id)sender { 
    137         [SPSettings setBool:[_checkForUpdateButton state] forKey:SPCheckForUpdate]; 
    138161         
    139         [[SPApplicationController applicationController] scheduleUpdateCheck]; 
     162        [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 
    140163} 
    141164 
  • Spiral/trunk/SPSettings.h

    r5129 r5139  
    3434#define SPPreferredAudioPattern                 @"SPPreferredAudioPattern" 
    3535#define SPCheckForUpdate                                @"SPCheckForUpdate" 
     36#define SPSimplifyFilenames                             @"SPSimplifyFilenames" 
    3637 
    3738#define SPPlaylist                                              @"SPPlaylist" 
  • Spiral/trunk/SPSettings.m

    r5129 r5139  
    4949                [NSNumber numberWithBool:YES], 
    5050                        SPCheckForUpdate, 
     51                [NSNumber numberWithBool:YES], 
     52                        SPSimplifyFilenames, 
    5153                 
    5254                [NSNumber numberWithInt:SPPlaylistRepeatOff], 
  • Spiral/trunk/Spiral.xcodeproj/project.pbxproj

    r5128 r5139  
    7979                A50E4A730CCD46CF0070EBAF /* wmv.icns in Resources */ = {isa = PBXBuildFile; fileRef = A50E4A720CCD46CF0070EBAF /* wmv.icns */; }; 
    8080                A531D70B0D06190D00F91BE0 /* NSImage-SPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A531D70A0D06190D00F91BE0 /* NSImage-SPAdditions.m */; }; 
     81                A531EA260D14422700F91BE0 /* NSString-SPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A531EA240D14422700F91BE0 /* NSString-SPAdditions.m */; }; 
    8182                A53901F40596A3E7000FBFD6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A53901F30596A3E7000FBFD6 /* Carbon.framework */; }; 
    8283                A55CEF610CC699D4006F2DAB /* SPPlaylistController.m in Sources */ = {isa = PBXBuildFile; fileRef = A55CEF5F0CC699D4006F2DAB /* SPPlaylistController.m */; }; 
     
    253254                A531D7090D06190D00F91BE0 /* NSImage-SPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage-SPAdditions.h"; sourceTree = "<group>"; }; 
    254255                A531D70A0D06190D00F91BE0 /* NSImage-SPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage-SPAdditions.m"; sourceTree = "<group>"; }; 
     256                A531EA240D14422700F91BE0 /* NSString-SPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = "NSString-SPAdditions.m"; sourceTree = "<group>"; }; 
     257                A531EA250D14422700F91BE0 /* NSString-SPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "NSString-SPAdditions.h"; sourceTree = "<group>"; }; 
    255258                A53901F30596A3E7000FBFD6 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; 
    256259                A55CEF5E0CC699D4006F2DAB /* SPPlaylistController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPPlaylistController.h; sourceTree = "<group>"; }; 
     
    510513                                A531D70A0D06190D00F91BE0 /* NSImage-SPAdditions.m */, 
    511514                                A531D7090D06190D00F91BE0 /* NSImage-SPAdditions.h */, 
     515                                A531EA240D14422700F91BE0 /* NSString-SPAdditions.m */, 
     516                                A531EA250D14422700F91BE0 /* NSString-SPAdditions.h */, 
    512517                        ); 
    513518                        name = Additions; 
     
    910915                        files = ( 
    911916                                8D11072D0486CEB800E47090 /* main.m in Sources */, 
     917                                A531D70B0D06190D00F91BE0 /* NSImage-SPAdditions.m in Sources */, 
     918                                A531EA260D14422700F91BE0 /* NSString-SPAdditions.m in Sources */, 
    912919                                A5C7B6190CC7FB4E008FAF45 /* SPAppleRemote.m in Sources */, 
    913920                                A59630E30CC005EF008728CB /* SPApplicationController.m in Sources */, 
     
    931938                                A59357C20CCFD506009A8245 /* SPDrillCell.m in Sources */, 
    932939                                A5935A250CCFE2A9009A8245 /* SPMovieController.m in Sources */, 
    933                                 A531D70B0D06190D00F91BE0 /* NSImage-SPAdditions.m in Sources */, 
    934940                        ); 
    935941                        runOnlyForDeploymentPostprocessing = 0;