Changeset 5461
- Timestamp:
- 04/18/08 02:14:44 (1 month ago)
- Files:
-
- Spiral/trunk/English.lproj/Drill.nib/info.nib (modified) (1 diff)
- Spiral/trunk/English.lproj/Drill.nib/keyedobjects.nib (modified) (previous)
- Spiral/trunk/English.lproj/DrillItem.nib (added)
- Spiral/trunk/English.lproj/DrillItem.nib/designable.nib (added)
- Spiral/trunk/English.lproj/DrillItem.nib/keyedobjects.nib (added)
- Spiral/trunk/SPDrillController.m (modified) (1 diff)
- Spiral/trunk/SPDrillGradientView.h (added)
- Spiral/trunk/SPDrillGradientView.m (added)
- Spiral/trunk/SPDrillItem.h (added)
- Spiral/trunk/SPDrillItem.m (added)
- Spiral/trunk/SPDrillListView.h (added)
- Spiral/trunk/SPDrillListView.m (added)
- Spiral/trunk/SPDrillSelectionView.h (added)
- Spiral/trunk/SPDrillSelectionView.m (added)
- Spiral/trunk/SPDrillView.h (modified) (2 diffs)
- Spiral/trunk/SPDrillView.m (modified) (11 diffs)
- Spiral/trunk/SPPlaylistItem.m (modified) (1 diff)
- Spiral/trunk/Spiral.xcodeproj/project.pbxproj (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Spiral/trunk/English.lproj/Drill.nib/info.nib
r5121 r5461 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> 11 9 <key>IBOpenObjects</key> 12 <array/> 10 <array> 11 <integer>2</integer> 12 </array> 13 13 <key>IBSystem Version</key> 14 <string>9 B18</string>14 <string>9C7010</string> 15 15 <key>targetFramework</key> 16 16 <string>IBCocoaFramework</string> Spiral/trunk/SPDrillController.m
r5139 r5461 221 221 [_movieController setMovie:NULL]; 222 222 223 [_drillView selectItem:[_movieController playlistFile]];224 225 223 [[self window] setContentView:_drillContentView]; 226 224 [[self window] makeFirstResponder:_drillView]; Spiral/trunk/SPDrillView.h
r5139 r5461 27 27 */ 28 28 29 @class SP PlaylistGroup, SPPlaylistFile, SPPlaylistContainer, SPPlaylistItem;29 @class SPDrillListView, SPPlaylistGroup, SPPlaylistFile, SPPlaylistContainer; 30 30 @protocol SPDrillViewDelegate; 31 31 32 32 @interface SPDrillView : NSControl { 33 33 IBOutlet id <SPDrillViewDelegate> delegate; 34 35 SPDrillListView *_currentListView; 36 id _currentPlaylistItem; 34 37 35 38 SPPlaylistGroup *_playlist; 36 NSMutableArray *_path;37 38 NSRect _screenFrame;39 NSRange _visibleRange;40 NSUInteger _selectedIndex;41 39 } 42 40 … … 45 43 - (void)setPlaylist:(SPPlaylistGroup *)playlist; 46 44 - (SPPlaylistGroup *)playlist; 47 48 - (void)selectItem:(SPPlaylistItem *)item;49 45 50 46 - (void)openSelection; Spiral/trunk/SPDrillView.m
r5139 r5461 27 27 */ 28 28 29 #import "SPDrillCell.h" 29 #import "SPDrillItem.h" 30 #import "SPDrillListView.h" 30 31 #import "SPDrillView.h" 31 32 #import "SPPlaylistController.h" … … 35 36 @interface SPDrillView(Private) 36 37 37 - (void)_initDrillView; 38 - (NSRange)_visibleRangeForIndex:(NSUInteger)index; 39 - (SPPlaylistContainer *)_currentContainer; 40 - (id)_selectedItem; 38 - (void)_addListViewWithItem:(id)item selectCurrentItem:(BOOL)selectCurrentItem; 41 39 42 40 @end … … 45 43 @implementation SPDrillView(Private) 46 44 47 - (void)_initDrillView { 48 _path = [[NSMutableArray alloc] init]; 49 _screenFrame = [[[self window] screen] frame]; 45 - (void)_addListViewWithItem:(id)item selectCurrentItem:(BOOL)selectCurrentItem { 46 NSMutableArray *drillItems; 47 SPDrillItem *drillItem, *selectItem = NULL; 48 SPDrillListView *previousListView; 49 id playlistItem; 50 51 previousListView = _currentListView; 52 53 _currentListView = [[SPDrillListView alloc] initWithFrame:[SPDrillListView frameSizedToFitFromFrame:[self frame]]]; 50 54 51 [[self cell] setTextColor:[NSColor whiteColor]]; 52 [[self cell] setFont:[NSFont systemFontOfSize:72.0]]; 53 [[self cell] setLineBreakMode:NSLineBreakByTruncatingMiddle]; 54 } 55 56 57 58 - (NSRange)_visibleRangeForIndex:(NSUInteger)index { 59 NSArray *items; 60 NSUInteger cells; 55 drillItems = [NSMutableArray array]; 61 56 62 items = [[self _currentContainer] items]; 63 cells = floor([self frame].size.height / [[self cell] cellSize].height); 57 for(playlistItem in [item items]) { 58 drillItem = [[SPDrillItem alloc] init]; 59 [drillItem setPlaylistItem:playlistItem]; 60 [drillItem setStringValue:[playlistItem name]]; 61 [drillItem setImage:[playlistItem iconWithSize:NSMakeSize(128.0, 128.0)]]; 62 [drillItems addObject:drillItem]; 63 64 if([playlistItem isEqual:_currentPlaylistItem]) 65 selectItem = [drillItem retain]; 66 67 [drillItem release]; 68 } 64 69 65 if([items count] < cells) 66 return NSMakeRange(0, [items count]); 67 else if([items count] < index + cells) 68 return NSMakeRange([items count] - cells, cells); 69 else 70 return NSMakeRange(index, cells); 71 } 72 73 74 75 - (SPPlaylistContainer *)_currentContainer { 76 return [_path lastObject]; 77 } 78 79 80 81 - (id)_selectedItem { 82 NSArray *items; 83 NSUInteger index; 70 [_currentListView setItems:drillItems selectItem:selectItem]; 84 71 85 items = [[self _currentContainer] items]; 86 index = _visibleRange.location + _selectedIndex; 72 [selectItem release]; 87 73 88 if(index < [items count])89 return [items objectAtIndex:index];74 [item retain]; 75 [_currentPlaylistItem release]; 90 76 91 return NULL; 77 _currentPlaylistItem = item; 78 79 [self addSubview:_currentListView]; 80 [previousListView removeFromSuperviewWithoutNeedingDisplay]; 92 81 } 93 82 … … 98 87 @implementation SPDrillView 99 88 100 + (Class)cellClass {101 return [SPDrillCell class];102 }103 104 105 106 #pragma mark -107 108 - (id)initWithFrame:(NSRect)frame {109 self = [super initWithFrame:frame];110 111 [self _initDrillView];112 113 return self;114 }115 116 117 118 - (id)initWithCoder:(NSCoder *)coder {119 self = [super initWithCoder:coder];120 121 [self _initDrillView];122 123 return self;124 }125 126 127 128 89 - (void)dealloc { 129 90 [_playlist release]; 130 [_path release];131 91 132 92 [super dealloc]; … … 156 116 _playlist = playlist; 157 117 158 [_path setArray:[NSArray arrayWithObject:playlist]]; 159 160 _selectedIndex = 0; 161 _visibleRange = [self _visibleRangeForIndex:0]; 162 163 [self setNeedsDisplay:YES]; 118 [self _addListViewWithItem:playlist selectCurrentItem:NO]; 164 119 } 165 120 … … 174 129 #pragma mark - 175 130 176 - (void)selectItem:(SPPlaylistItem *)item {177 NSArray *items;178 NSUInteger index;179 180 items = [[self _currentContainer] items];181 index = [items indexOfObject:item];182 183 if(index == NSNotFound)184 return;185 186 if(index > 0)187 index--;188 189 _visibleRange = [self _visibleRangeForIndex:index];190 _selectedIndex = [[items subarrayWithRange:_visibleRange] indexOfObject:item];191 192 [self setNeedsDisplay:YES];193 }194 195 196 197 #pragma mark -198 199 131 - (void)openSelection { 200 132 id item; 201 133 202 item = [ self _selectedItem];134 item = [[_currentListView selectedItem] playlistItem]; 203 135 204 136 if([item isKindOfClass:[SPPlaylistContainer class]]) { 205 137 [[self delegate] drillView:self willOpenContainer:item]; 206 138 207 [_path addObject:item]; 208 209 _selectedIndex = 0; 210 _visibleRange = [self _visibleRangeForIndex:0]; 211 212 [self setNeedsDisplay:YES]; 139 [self _addListViewWithItem:item selectCurrentItem:NO]; 213 140 } 214 141 else if([item isKindOfClass:[SPPlaylistFile class]]) { … … 220 147 221 148 - (void)closeSelection { 222 NSArray *items; 223 NSUInteger index; 224 id item; 149 id parentItem; 225 150 226 if([_path count] > 1) { 227 item = [[[_path lastObject] retain] autorelease]; 228 229 [_path removeObjectAtIndex:[_path count] - 1]; 230 231 items = [[self _currentContainer] items]; 232 index = [items indexOfObject:item]; 233 234 if(index == NSNotFound) { 235 _selectedIndex = 0; 236 _visibleRange = [self _visibleRangeForIndex:0]; 237 } else { 238 if(index > 0) 239 index--; 240 241 _visibleRange = [self _visibleRangeForIndex:index]; 242 _selectedIndex = [[items subarrayWithRange:_visibleRange] indexOfObject:item]; 243 } 244 245 [self setNeedsDisplay:YES]; 246 } 151 parentItem = [_currentPlaylistItem parentItem]; 152 153 if(parentItem) 154 [self _addListViewWithItem:parentItem selectCurrentItem:YES]; 247 155 } 248 156 … … 250 158 251 159 - (void)moveSelectionUp { 252 if(_visibleRange.location + _selectedIndex > 0) { 253 if(_visibleRange.location > 0 && _selectedIndex <= 1) 254 _visibleRange = [self _visibleRangeForIndex:_visibleRange.location + _selectedIndex - 2]; 255 else if(_selectedIndex > 1 || (_selectedIndex > 0 && _visibleRange.location == 0)) 256 _selectedIndex--; 257 258 [self setNeedsDisplay:YES]; 259 } 160 [_currentListView moveSelectionUp]; 260 161 } 261 162 … … 263 164 264 165 - (void)moveSelectionDown { 265 NSUInteger items, visibleItems; 266 267 items = [[self _currentContainer] numberOfItems]; 268 visibleItems = _visibleRange.location + _visibleRange.length; 269 270 if(_visibleRange.location + _selectedIndex + 1 < items) { 271 if(_selectedIndex + 2 >= _visibleRange.length && visibleItems < items) 272 _visibleRange = [self _visibleRangeForIndex:_visibleRange.location + _selectedIndex - _visibleRange.length + 3]; 273 else if(_selectedIndex + 2 < _visibleRange.length || (visibleItems >= items && _selectedIndex + 1 < _visibleRange.length)) 274 _selectedIndex++; 275 276 [self setNeedsDisplay:YES]; 277 } 166 [_currentListView moveSelectionDown]; 278 167 } 279 168 … … 294 183 295 184 - (void)keyDown:(NSEvent *)event { 296 id item;297 185 unichar key; 298 186 299 187 key = [event character]; 300 item = [self _selectedItem];301 188 302 189 if(key == NSEnterCharacter || key == NSCarriageReturnCharacter || key == NSRightArrowFunctionKey) … … 310 197 } 311 198 312 313 314 - (void)drawRect:(NSRect)rect {315 NSArray *items;316 NSBezierPath *path;317 NSGradient *gradient;318 SPDrillCell *cell;319 id item;320 NSRect cellFrame, selectionFrame, firstCellFrame, lastCellFrame;321 NSSize cellSize;322 NSUInteger index;323 CGFloat heightOffset;324 BOOL selection;325 326 items = [[self _currentContainer] items];327 index = 0;328 selection = NO;329 330 cellSize = [[self cell] cellSize];331 heightOffset = floor((rect.size.height - (_visibleRange.length * cellSize.height)) / 2.0);332 selectionFrame = NSMakeRect(3.0, rect.size.height - cellSize.height - heightOffset - 3.0, rect.size.width - 8.0, cellSize.height);333 firstCellFrame = cellFrame = selectionFrame;334 cellFrame.origin.x += 20.0;335 cellFrame.size.width -= 40.0;336 337 for(item in [items subarrayWithRange:_visibleRange]) {338 cell = [[self cell] copy];339 340 if([SPSettings boolForKey:SPSimplifyFilenames])341 [cell setObjectValue:[item cleanName]];342 else343 [cell setObjectValue:[item name]];344 345 [cell setImage:[item iconWithSize:[[self cell] imageSize]]];346 [cell drawWithFrame:cellFrame inView:self];347 [cell release];348 349 if(index == _selectedIndex) {350 selection = YES;351 selectionFrame.origin.y = cellFrame.origin.y;352 }353 354 lastCellFrame = cellFrame;355 cellFrame.origin.y -= cellFrame.size.height;356 357 index++;358 }359 360 if(_visibleRange.location > 0 || [items count] > _visibleRange.location + _visibleRange.length) {361 gradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.0]362 endingColor:[NSColor colorWithCalibratedWhite:0.0 alpha:1.0]];363 364 if(_visibleRange.location > 0)365 [gradient drawInRect:firstCellFrame angle:90.0];366 367 if([items count] > _visibleRange.location + _visibleRange.length)368 [gradient drawInRect:lastCellFrame angle:270.0];369 370 [gradient release];371 }372 373 if(selection) {374 [[NSColor colorWithCalibratedWhite:1.0 alpha:1.0] set];375 376 path = [NSBezierPath bezierPathWithRoundedRect:selectionFrame xRadius:16.0 yRadius:16.0];377 [path setLineWidth:6.0];378 [path stroke];379 }380 }381 382 199 @end Spiral/trunk/SPPlaylistItem.m
r5142 r5461 227 227 SPPlaylistItem *item = other; 228 228 229 return [_identifier isEqualToString:item->_identifier];229 return (item && [_identifier isEqualToString:item->_identifier]); 230 230 } 231 231 Spiral/trunk/Spiral.xcodeproj/project.pbxproj
r5460 r5461 119 119 A56D50FF0DB7BD0200F1B2EF /* RemoteConnected.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A56D50FC0DB7BD0200F1B2EF /* RemoteConnected.tiff */; }; 120 120 A59356FA0CCFD068009A8245 /* SPDrillView.m in Sources */ = {isa = PBXBuildFile; fileRef = A59356F80CCFD068009A8245 /* SPDrillView.m */; }; 121 A59357C20CCFD506009A8245 /* SPDrillCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A59357C00CCFD506009A8245 /* SPDrillCell.m */; };122 121 A5935A250CCFE2A9009A8245 /* SPMovieController.m in Sources */ = {isa = PBXBuildFile; fileRef = A5935A230CCFE2A9009A8245 /* SPMovieController.m */; }; 123 122 A59630E30CC005EF008728CB /* SPApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = A59630E10CC005EF008728CB /* SPApplicationController.m */; }; … … 145 144 A5E545D40CC244A000A608D1 /* SPQTMovieView.m in Sources */ = {isa = PBXBuildFile; fileRef = A5E545D20CC244A000A608D1 /* SPQTMovieView.m */; }; 146 145 A5E54A4B0CC2A8E800A608D1 /* SPFullscreenWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = A5E54A490CC2A8E800A608D1 /* SPFullscreenWindow.m */; }; 146 A5F34DC50DB7F8EB004C3DF6 /* SPDrillItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A5F34DC10DB7F8EB004C3DF6 /* SPDrillItem.m */; }; 147 A5F34DC60DB7F8EB004C3DF6 /* SPDrillListView.m in Sources */ = {isa = PBXBuildFile; fileRef = A5F34DC20DB7F8EB004C3DF6 /* SPDrillListView.m */; }; 148 A5F34DE00DB7FA03004C3DF6 /* DrillItem.nib in Resources */ = {isa = PBXBuildFile; fileRef = A5F34DDE0DB7FA03004C3DF6 /* DrillItem.nib */; }; 149 A5F34EEB0DB804F3004C3DF6 /* SPDrillGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = A5F34EE90DB804F3004C3DF6 /* SPDrillGradientView.m */; }; 150 A5F34FBC0DB80CD8004C3DF6 /* SPDrillSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = A5F34FBB0DB80CD8004C3DF6 /* SPDrillSelectionView.m */; }; 147 151 A5F518810DB669D7001BE2F8 /* IOBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A5F518800DB669D7001BE2F8 /* IOBluetooth.framework */; }; 148 152 A5F5189A0DB66E1D001BE2F8 /* SPPS3Remote.m in Sources */ = {isa = PBXBuildFile; fileRef = A5F518990DB66E1D001BE2F8 /* SPPS3Remote.m */; }; … … 305 309 A59356F70CCFD068009A8245 /* SPDrillView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPDrillView.h; sourceTree = "<group>"; }; 306 310 A59356F80CCFD068009A8245 /* SPDrillView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDrillView.m; sourceTree = "<group>"; }; 307 A59357BF0CCFD506009A8245 /* SPDrillCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPDrillCell.h; sourceTree = "<group>"; };308 A59357C00CCFD506009A8245 /* SPDrillCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDrillCell.m; sourceTree = "<group>"; };309 311 A5935A220CCFE2A9009A8245 /* SPMovieController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPMovieController.h; sourceTree = "<group>"; }; 310 312 A5935A230CCFE2A9009A8245 /* SPMovieController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPMovieController.m; sourceTree = "<group>"; }; … … 344 346 A5E54A480CC2A8E800A608D1 /* SPFullscreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPFullscreenWindow.h; sourceTree = "<group>"; }; 345 347 A5E54A490CC2A8E800A608D1 /* SPFullscreenWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPFullscreenWindow.m; sourceTree = "<group>"; }; 348 A5F34DC10DB7F8EB004C3DF6 /* SPDrillItem.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = SPDrillItem.m; sourceTree = "<group>"; }; 349 A5F34DC20DB7F8EB004C3DF6 /* SPDrillListView.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = SPDrillListView.m; sourceTree = "<group>"; }; 350 A5F34DC30DB7F8EB004C3DF6 /* SPDrillListView.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = SPDrillListView.h; sourceTree = "<group>"; }; 351 A5F34DC40DB7F8EB004C3DF6 /* SPDrillItem.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = SPDrillItem.h; sourceTree = "<group>"; }; 352 A5F34DDF0DB7FA03004C3DF6 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DrillItem.nib; sourceTree = "<group>"; }; 353 A5F34EE90DB804F3004C3DF6 /* SPDrillGradientView.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = SPDrillGradientView.m; sourceTree = "<group>"; }; 354 A5F34EEA0DB804F3004C3DF6 /* SPDrillGradientView.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = SPDrillGradientView.h; sourceTree = "<group>"; }; 355 A5F34FBA0DB80CD8004C3DF6 /* SPDrillSelectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPDrillSelectionView.h; sourceTree = "<group>"; }; 356 A5F34FBB0DB80CD8004C3DF6 /* SPDrillSelectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDrillSelectionView.m; sourceTree = "<group>"; }; 346 357 A5F518800DB669D7001BE2F8 /* IOBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOBluetooth.framework; path = /System/Library/Frameworks/IOBluetooth.framework; sourceTree = "<absolute>"; }; 347 358 A5F518980DB66E1D001BE2F8 /* SPPS3Remote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPPS3Remote.h; sourceTree = "<group>"; }; … … 463 474 77CDAE70083B3515003BE654 /* ReleaseNotes.rtf */, 464 475 775BF1300CCF730100E93928 /* Drill.nib */, 476 A5F34DDE0DB7FA03004C3DF6 /* DrillItem.nib */, 465 477 775BF86B0CD0C5B800E93928 /* HUD.nib */, 466 478 77A2722D0CC4D03A0040B352 /* Inspector.nib */, … … 665 677 isa = PBXGroup; 666 678 children = ( 667 A59357C00CCFD506009A8245 /* SPDrillCell.m */, 668 A59357BF0CCFD506009A8245 /* SPDrillCell.h */, 679 A5F34EE90DB804F3004C3DF6 /* SPDrillGradientView.m */, 680 A5F34EEA0DB804F3004C3DF6 /* SPDrillGradientView.h */, 681 A5F34DC10DB7F8EB004C3DF6 /* SPDrillItem.m */, 682 A5F34DC40DB7F8EB004C3DF6 /* SPDrillItem.h */, 683 A5F34DC20DB7F8EB004C3DF6 /* SPDrillListView.m */, 684 A5F34DC30DB7F8EB004C3DF6 /* SPDrillListView.h */, 685 A5F34FBB0DB80CD8004C3DF6 /* SPDrillSelectionView.m */, 686 A5F34FBA0DB80CD8004C3DF6 /* SPDrillSelectionView.h */, 669 687 A59356F80CCFD068009A8245 /* SPDrillView.m */, 670 688 A59356F70CCFD068009A8245 /* SPDrillView.h */, … … 858 876 A50E4A6A0CCD456A0070EBAF /* flv.icns in Resources */, 859 877 A50E4A730CCD46CF0070EBAF /* wmv.icns in Resources */, 878 A5F34DE00DB7FA03004C3DF6 /* DrillItem.nib in Resources */, 860 879 ); 861 880 runOnlyForDeploymentPostprocessing = 0; … … 957 976 775BF12B0CCF722000E93928 /* SPDrillController.m in Sources */, 958 977 A59356FA0CCFD068009A8245 /* SPDrillView.m in Sources */, 959 A59357C20CCFD506009A8245 /* SPDrillCell.m in Sources */,960 978 A5935A250CCFE2A9009A8245 /* SPMovieController.m in Sources */, 961 979 A5F5189A0DB66E1D001BE2F8 /* SPPS3Remote.m in Sources */, 980 A5F34DC50DB7F8EB004C3DF6 /* SPDrillItem.m in Sources */, 981 A5F34DC60DB7F8EB004C3DF6 /* SPDrillListView.m in Sources */, 982 A5F34EEB0DB804F3004C3DF6 /* SPDrillGradientView.m in Sources */, 983 A5F34FBC0DB80CD8004C3DF6 /* SPDrillSelectionView.m in Sources */, 962 984 ); 963 985 runOnlyForDeploymentPostprocessing = 0; … … 1095 1117 ); 1096 1118 name = Preferences.nib; 1119 sourceTree = "<group>"; 1120 }; 1121 A5F34DDE0DB7FA03004C3DF6 /* DrillItem.nib */ = { 1122 isa = PBXVariantGroup; 1123 children = ( 1124 A5F34DDF0DB7FA03004C3DF6 /* English */, 1125 ); 1126 name = DrillItem.nib; 1097 1127 sourceTree = "<group>"; 1098 1128 };
