Changeset 5139
- Timestamp:
- 12/15/07 18:57:37 (10 months ago)
- Files:
-
- Spiral/trunk/English.lproj/Preferences.nib/classes.nib (modified) (2 diffs)
- Spiral/trunk/English.lproj/Preferences.nib/info.nib (modified) (1 diff)
- Spiral/trunk/English.lproj/Preferences.nib/keyedobjects.nib (modified) (previous)
- Spiral/trunk/NSString-SPAdditions.h (added)
- Spiral/trunk/NSString-SPAdditions.m (added)
- Spiral/trunk/SPDrillController.m (modified) (1 diff)
- Spiral/trunk/SPDrillView.h (modified) (2 diffs)
- Spiral/trunk/SPDrillView.m (modified) (3 diffs)
- Spiral/trunk/SPPlaylistController.h (modified) (1 diff)
- Spiral/trunk/SPPlaylistController.m (modified) (9 diffs)
- Spiral/trunk/SPPlaylistItem.h (modified) (4 diffs)
- Spiral/trunk/SPPlaylistItem.m (modified) (7 diffs)
- Spiral/trunk/SPPreferencesController.h (modified) (4 diffs)
- Spiral/trunk/SPPreferencesController.m (modified) (8 diffs)
- Spiral/trunk/SPSettings.h (modified) (1 diff)
- Spiral/trunk/SPSettings.m (modified) (1 diff)
- Spiral/trunk/Spiral.xcodeproj/project.pbxproj (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Spiral/trunk/English.lproj/Preferences.nib/classes.nib
r5129 r5139 21 21 <string>id</string> 22 22 <key>resumeBehavior</key> 23 <string>id</string> 24 <key>simplifyFilenames</key> 23 25 <string>id</string> 24 26 </dict> … … 45 47 <key>_resumeBehaviorMatrix</key> 46 48 <string>NSMatrix</string> 49 <key>_simplifyFilenamesButton</key> 50 <string>NSButton</string> 47 51 </dict> 48 52 <key>SUPERCLASS</key> Spiral/trunk/English.lproj/Preferences.nib/info.nib
r5099 r5139 5 5 <key>IBFramework Version</key> 6 6 <string>629</string> 7 <key>IBLastKnownRelativeProjectPath</key>8 <string>../../Spiral.xcodeproj</string>9 7 <key>IBOldestOS</key> 10 8 <integer>5</integer> Spiral/trunk/SPDrillController.m
r5130 r5139 161 161 162 162 163 - (void)drillView:(SPDrillView *)drillView willOpenContainer:(SPPlaylistContainer *)container { 164 [[SPPlaylistController playlistController] reloadItem:container]; 165 } 166 167 168 163 169 - (void)drillView:(SPDrillView *)drillView shouldOpenFile:(SPPlaylistFile *)file { 164 170 QTMovie *movie; Spiral/trunk/SPDrillView.h
r5099 r5139 27 27 */ 28 28 29 @class SPPlaylistGroup, SPPlaylistFile, SPPlaylist Item;29 @class SPPlaylistGroup, SPPlaylistFile, SPPlaylistContainer, SPPlaylistItem; 30 30 @protocol SPDrillViewDelegate; 31 31 … … 58 58 @protocol SPDrillViewDelegate <NSObject> 59 59 60 - (void)drillView:(SPDrillView *)drillView willOpenContainer:(SPPlaylistContainer *)container; 60 61 - (void)drillView:(SPDrillView *)drillView shouldOpenFile:(SPPlaylistFile *)file; 61 62 Spiral/trunk/SPDrillView.m
r5099 r5139 29 29 #import "SPDrillCell.h" 30 30 #import "SPDrillView.h" 31 #import "SPPlaylistController.h" 31 32 #import "SPPlaylistItem.h" 33 #import "SPSettings.h" 32 34 33 35 @interface SPDrillView(Private) … … 201 203 202 204 if([item isKindOfClass:[SPPlaylistContainer class]]) { 203 if([item isKindOfClass:[SPPlaylistFolder class]]) 204 [item reload]; 205 [[self delegate] drillView:self willOpenContainer:item]; 205 206 206 207 [_path addObject:item]; … … 336 337 for(item in [items subarrayWithRange:_visibleRange]) { 337 338 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 339 345 [cell setImage:[item iconWithSize:[[self cell] imageSize]]]; 340 346 [cell drawWithFrame:cellFrame inView:self]; Spiral/trunk/SPPlaylistController.h
r5121 r5139 79 79 - (void)moveSelectionDown; 80 80 - (void)moveSelectionUp; 81 - (void)reloadItem:(id)item; 81 82 82 83 - (IBAction)open:(id)sender; Spiral/trunk/SPPlaylistController.m
r5133 r5139 34 34 #import "SPPlaylistController.h" 35 35 #import "SPPlaylistItem.h" 36 #import "SPPreferencesController.h" 36 37 #import "SPSettings.h" 37 38 … … 46 47 - (void)_saveRecentPlaylist; 47 48 - (void)_restoreExpansionStateForItems:(NSArray *)array; 49 - (NSArray *)_filteredItems:(NSArray *)array; 48 50 49 51 - (void)_addFilesFromQuery:(NSMetadataQuery *)query; … … 113 115 for(item in items) { 114 116 if([item isExpanded]) { 115 if([item isKindOfClass:[SPPlaylistFolder class]]) 116 [item reload]; 117 [self reloadItem:item]; 117 118 118 119 [_outlineView expandItem:item]; … … 246 247 247 248 - (void)_addFilesFromQuery:(NSMetadataQuery *)query { 248 [ [query delegate] reload];249 [self reloadItem:[query delegate]]; 249 250 250 251 [_outlineView reloadData]; … … 334 335 selector:@selector(eventFileWrite:) 335 336 name:WIEventFileWriteNotification]; 337 338 [[NSNotificationCenter defaultCenter] 339 addObserver:self 340 selector:@selector(preferencesDidChange:) 341 name:SPPreferencesDidChangeNotification]; 336 342 337 343 [self window]; … … 472 478 473 479 - (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 476 492 [_outlineView reloadData]; 477 493 } … … 622 638 [_outlineView selectRow:row byExtendingSelection:NO]; 623 639 [_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:)]; 624 651 } 625 652 … … 1011 1038 - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 1012 1039 if(tableColumn == _filesTableColumn) { 1013 return [ item name];1040 return [SPSettings boolForKey:SPSimplifyFilenames] ? [item cleanName] : [item name]; 1014 1041 } 1015 1042 else if(tableColumn == _viewCountTableColumn) { … … 1080 1107 1081 1108 if([[NSFileManager defaultManager] directoryExistsAtPath:path]) { 1082 [ item reload];1109 [self reloadItem:item]; 1083 1110 1084 1111 [_outlineView reloadData]; Spiral/trunk/SPPlaylistItem.h
r5117 r5139 40 40 - (void)setName:(NSString *)name; 41 41 - (NSString *)name; 42 - (NSString *)cleanName; 42 43 - (NSImage *)icon; 43 44 - (NSImage *)iconWithSize:(NSSize)size; … … 50 51 - (void)setRecent:(BOOL)recent; 51 52 - (BOOL)isRecent; 53 54 - (NSComparisonResult)compareName:(id)object; 55 - (NSComparisonResult)compareCleanName:(id)object; 52 56 53 57 @end … … 63 67 NSTimeInterval _duration; 64 68 NSSize _dimensions; 69 70 NSMutableString *_cleanName; 65 71 } 66 72 … … 100 106 - (NSArray *)shuffledItems; 101 107 - (void)startShufflingFromItem:(id)item; 108 - (void)sortUsingSelector:(SEL)selector; 109 - (void)sortItemsUsingSelector:(SEL)selector; 102 110 103 111 @end Spiral/trunk/SPPlaylistItem.m
r5135 r5139 27 27 */ 28 28 29 #import "NSString-SPAdditions.h" 29 30 #import "NSImage-SPAdditions.h" 30 31 #import "SPPlaylistItem.h" … … 264 265 265 266 267 - (NSString *)cleanName { 268 return [self name]; 269 } 270 271 272 266 273 - (NSImage *)icon { 267 274 return NULL; … … 328 335 - (BOOL)isRecent { 329 336 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]; 330 351 } 331 352 … … 403 424 404 425 - (void)dealloc { 426 [_cleanName release]; 405 427 [_path release]; 406 428 [_icon release]; … … 415 437 416 438 #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 417 463 418 464 - (void)setPath:(NSString *)path { … … 692 738 } 693 739 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 694 759 @end 695 760 … … 795 860 796 861 #pragma mark - 862 863 - (NSString *)name { 864 return [[NSFileManager defaultManager] displayNameAtPath:[self path]]; 865 } 866 867 797 868 798 869 - (void)setPath:(NSString *)path { Spiral/trunk/SPPreferencesController.h
r5129 r5139 27 27 */ 28 28 29 #define SPPreferencesDidChangeNotification @"SPPreferencesDidChangeNotification" 30 29 31 @interface SPPreferencesController : WIWindowController { 30 32 IBOutlet NSButton *_playMoviesWhenOpenedButton; 33 IBOutlet NSButton *_simplifyFilenamesButton; 34 IBOutlet NSButton *_checkForUpdateButton; 31 35 IBOutlet NSPopUpButton *_defaultSizePopUpButton; 32 36 IBOutlet NSMatrix *_resumeBehaviorMatrix; … … 35 39 IBOutlet NSComboBox *_preferredAudioComboBox; 36 40 IBOutlet NSComboBox *_preferredSubtitleComboBox; 37 IBOutlet NSButton *_checkForUpdateButton;38 41 } 39 42 … … 41 44 42 45 - (IBAction)playMoviesWhenOpened:(id)sender; 46 - (IBAction)simplifyFilenames:(id)sender; 47 - (IBAction)checkForUpdate:(id)sender; 43 48 - (IBAction)defaultSize:(id)sender; 44 49 - (IBAction)resumeBehavior:(id)sender; … … 46 51 - (IBAction)preferredAudioTrack:(id)sender; 47 52 - (IBAction)preferredSubtitle:(id)sender; 48 - (IBAction)checkForUpdate:(id)sender;49 53 50 54 @end Spiral/trunk/SPPreferencesController.m
r5129 r5139 75 75 76 76 [_playMoviesWhenOpenedButton setState:[SPSettings boolForKey:SPPlayMoviesWhenOpened]]; 77 [_simplifyFilenamesButton setState:[SPSettings boolForKey:SPSimplifyFilenames]]; 78 [_checkForUpdateButton setState:[SPSettings boolForKey:SPCheckForUpdate]]; 77 79 [_defaultSizePopUpButton selectItemWithTag:[SPSettings intForKey:SPDefaultScaling]]; 78 80 [_resumeBehaviorMatrix selectCellWithTag:[SPSettings intForKey:SPResumePlayingBehavior]]; … … 80 82 [_preferredAudioComboBox setStringValue:[SPSettings objectForKey:SPPreferredAudioPattern]]; 81 83 [_preferredSubtitleComboBox setStringValue:[SPSettings objectForKey:SPPreferredSubtitlePattern]]; 82 [_checkForUpdateButton setState:[SPSettings boolForKey:SPCheckForUpdate]];83 84 84 85 [self _updateFastForwardSpeedTextField]; … … 98 99 - (IBAction)playMoviesWhenOpened:(id)sender { 99 100 [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]; 100 121 } 101 122 … … 104 125 - (IBAction)defaultSize:(id)sender { 105 126 [SPSettings setInt:[_defaultSizePopUpButton tagOfSelectedItem] forKey:SPDefaultScaling]; 127 128 [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 106 129 } 107 130 … … 110 133 - (IBAction)resumeBehavior:(id)sender { 111 134 [SPSettings setInt:[[_resumeBehaviorMatrix selectedCell] tag] forKey:SPResumePlayingBehavior]; 135 136 [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 112 137 } 113 138 … … 118 143 119 144 [self _updateFastForwardSpeedTextField]; 145 146 [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 120 147 } 121 148 … … 124 151 - (IBAction)preferredAudioTrack:(id)sender { 125 152 [SPSettings setObject:[_preferredAudioComboBox stringValue] forKey:SPPreferredAudioPattern]; 153 154 [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 126 155 } 127 156 … … 130 159 - (IBAction)preferredSubtitle:(id)sender { 131 160 [SPSettings setObject:[_preferredSubtitleComboBox stringValue] forKey:SPPreferredSubtitlePattern]; 132 }133 134 135 136 - (IBAction)checkForUpdate:(id)sender {137 [SPSettings setBool:[_checkForUpdateButton state] forKey:SPCheckForUpdate];138 161 139 [[ SPApplicationController applicationController] scheduleUpdateCheck];162 [[NSNotificationCenter defaultCenter] postNotificationName:SPPreferencesDidChangeNotification]; 140 163 } 141 164 Spiral/trunk/SPSettings.h
r5129 r5139 34 34 #define SPPreferredAudioPattern @"SPPreferredAudioPattern" 35 35 #define SPCheckForUpdate @"SPCheckForUpdate" 36 #define SPSimplifyFilenames @"SPSimplifyFilenames" 36 37 37 38 #define SPPlaylist @"SPPlaylist" Spiral/trunk/SPSettings.m
r5129 r5139 49 49 [NSNumber numberWithBool:YES], 50 50 SPCheckForUpdate, 51 [NSNumber numberWithBool:YES], 52 SPSimplifyFilenames, 51 53 52 54 [NSNumber numberWithInt:SPPlaylistRepeatOff], Spiral/trunk/Spiral.xcodeproj/project.pbxproj
r5128 r5139 79 79 A50E4A730CCD46CF0070EBAF /* wmv.icns in Resources */ = {isa = PBXBuildFile; fileRef = A50E4A720CCD46CF0070EBAF /* wmv.icns */; }; 80 80 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 */; }; 81 82 A53901F40596A3E7000FBFD6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A53901F30596A3E7000FBFD6 /* Carbon.framework */; }; 82 83 A55CEF610CC699D4006F2DAB /* SPPlaylistController.m in Sources */ = {isa = PBXBuildFile; fileRef = A55CEF5F0CC699D4006F2DAB /* SPPlaylistController.m */; }; … … 253 254 A531D7090D06190D00F91BE0 /* NSImage-SPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage-SPAdditions.h"; sourceTree = "<group>"; }; 254 255 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>"; }; 255 258 A53901F30596A3E7000FBFD6 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; 256 259 A55CEF5E0CC699D4006F2DAB /* SPPlaylistController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPPlaylistController.h; sourceTree = "<group>"; }; … … 510 513 A531D70A0D06190D00F91BE0 /* NSImage-SPAdditions.m */, 511 514 A531D7090D06190D00F91BE0 /* NSImage-SPAdditions.h */, 515 A531EA240D14422700F91BE0 /* NSString-SPAdditions.m */, 516 A531EA250D14422700F91BE0 /* NSString-SPAdditions.h */, 512 517 ); 513 518 name = Additions; … … 910 915 files = ( 911 916 8D11072D0486CEB800E47090 /* main.m in Sources */, 917 A531D70B0D06190D00F91BE0 /* NSImage-SPAdditions.m in Sources */, 918 A531EA260D14422700F91BE0 /* NSString-SPAdditions.m in Sources */, 912 919 A5C7B6190CC7FB4E008FAF45 /* SPAppleRemote.m in Sources */, 913 920 A59630E30CC005EF008728CB /* SPApplicationController.m in Sources */, … … 931 938 A59357C20CCFD506009A8245 /* SPDrillCell.m in Sources */, 932 939 A5935A250CCFE2A9009A8245 /* SPMovieController.m in Sources */, 933 A531D70B0D06190D00F91BE0 /* NSImage-SPAdditions.m in Sources */,934 940 ); 935 941 runOnlyForDeploymentPostprocessing = 0;
