Changeset 4880
- Timestamp:
- 08/23/07 23:57:04 (1 year ago)
- Files:
-
- Footagehead/trunk/English.lproj/ReleaseNotes.rtf (modified) (1 diff)
- Footagehead/trunk/FHApplicationController.m (modified) (3 diffs)
- Footagehead/trunk/FHBrowserController.m (modified) (6 diffs)
- Footagehead/trunk/FHFile.m (modified) (1 diff)
- Footagehead/trunk/FHFileHandler.m (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Footagehead/trunk/English.lproj/ReleaseNotes.rtf
r4877 r4880 217 217 - Reverse rotate right/left so they do what they're called\ 218 218 - Rotate spreads correctly\ 219 - Moving up when standing at the root path now displays a list of mounted volumes\ 219 220 220 221 \f0\b \cf2 \ Footagehead/trunk/FHApplicationController.m
r4733 r4880 30 30 #import "FHBrowserController.h" 31 31 #import "FHHandler.h" 32 #import "FHFileHandler.h" 32 33 #import "FHImageView.h" 33 34 #import "FHSettings.h" … … 169 170 items--; 170 171 } 172 173 if(count == 0) { 174 i = _initialMenuItems + _menuItems - 1; 175 176 if([[_goMenu itemAtIndex:i] isSeparatorItem]) { 177 [_goMenu removeItemAtIndex:i]; 178 179 _menuItems--; 180 } 181 } else { 182 i = items - count - 1; 183 184 if(![[_goMenu itemAtIndex:i] isSeparatorItem]) { 185 [_goMenu insertItem:[NSMenuItem separatorItem] atIndex:i + 1]; 186 187 _menuItems++; 188 } 189 } 171 190 } 172 191 … … 254 273 url = [WIURL URLWithString:[FHSettings objectForKey:FHOpenURL]]; 255 274 256 if([url isFileURL] && ![ [NSFileManager defaultManager] fileExistsAtPath:[url path]])275 if([url isFileURL] && ![FHFileHandler handlesURL:url isPrimary:YES]) 257 276 url = [WIURL fileURLWithPath:NSHomeDirectory()]; 258 277 Footagehead/trunk/FHBrowserController.m
r4879 r4880 55 55 - (void)_updateRightStatus; 56 56 57 - (NSString *)_nameOfRootVolume; 58 57 59 @end 58 60 … … 254 256 - (void)_loadURL:(WIURL *)url selectRow:(NSInteger)row name:(NSString *)name { 255 257 NSArray *files; 258 NSString *subtitle; 256 259 FHHandler *handler; 257 260 FHFile *file; … … 278 281 [_imageLoader setFiles:files]; 279 282 280 if([[_handler URL] isFileURL] )283 if([[_handler URL] isFileURL] && [[[_handler URL] path] length] > 0) 281 284 [[WIEventQueue sharedQueue] addPath:[[_handler URL] path] forMode:WIEventFileWrite]; 282 285 283 [[self window] setTitle:@"Footagehead" withSubtitle:[[_handler stringComponents] lastObject]]; 286 subtitle = [[_handler stringComponents] lastObject]; 287 288 if(!subtitle && [[_handler URL] isFileURL]) 289 subtitle = [[NSHost currentHost] name]; 290 291 [[self window] setTitle:[NSApp name] withSubtitle:subtitle]; 284 292 285 293 [self updateSpreads]; … … 414 422 415 423 [_rightStatusTextField setStringValue:string]; 424 } 425 426 427 428 #pragma mark - 429 430 - (NSString *)_nameOfRootVolume { 431 NSFileManager *fileManager; 432 NSEnumerator *enumerator; 433 NSString *volume, *path; 434 435 fileManager = [NSFileManager defaultManager]; 436 enumerator = [[fileManager directoryContentsAtPath:@"/Volumes/"] objectEnumerator]; 437 438 while((volume = [enumerator nextObject])) { 439 path = [fileManager pathContentOfSymbolicLinkAtPath:[NSSWF:@"/Volumes/%@", volume]]; 440 441 if([path isEqualToString:@"/"]) 442 return volume; 443 } 444 445 return @"/"; 416 446 } 417 447 … … 1201 1231 name = [[[_handler URL] path] lastPathComponent]; 1202 1232 1233 if([url isFileURL] && [name isEqualToString:@"/"]) 1234 name = [self _nameOfRootVolume]; 1235 1203 1236 [self _loadURL:url selectName:name]; 1204 1237 } … … 1320 1353 1321 1354 row = [_tableView selectedRow]; 1355 1356 if(row < 0) 1357 return; 1358 1322 1359 file = [self fileAtIndex:row]; 1323 1360 Footagehead/trunk/FHFile.m
r4868 r4880 95 95 #pragma mark - 96 96 97 - (NSComparisonResult)compareName:(FHFile *)file { 98 return [[self name] compare:[file name] options:NSCaseInsensitiveSearch | NSNumericSearch]; 99 } 100 101 102 103 #pragma mark - 104 97 105 - (void)setImage:(FHImage *)image { 98 106 [image retain]; Footagehead/trunk/FHFileHandler.m
r4726 r4880 59 59 + (BOOL)handlesURL:(WIURL *)url isPrimary:(BOOL)primary { 60 60 if(primary && [url isFileURL]) { 61 if([[url path] length] == 0) 62 return YES; 63 61 64 if([[NSFileManager defaultManager] directoryExistsAtPath:[url path]]) 62 65 return YES; … … 123 126 124 127 - (NSArray *)files { 128 NSFileManager *fileManager; 129 NSEnumerator *enumerator; 125 130 NSSet *types; 126 131 NSArray *files; 127 NSString * name, *path, *extension;132 NSString *volume, *name, *path, *extension, *symlink; 128 133 WIURL *url; 129 134 LSItemInfoRecord itemInfoRecord; 130 135 OSStatus err; 131 BOOL isDirectory ;136 BOOL isDirectory, isRoot; 132 137 NSUInteger i, count; 133 138 134 139 if(!_files) { 135 files = [[NSFileManager defaultManager] directoryContentsWithFileAtPath:_rootPath]; 136 files = [files sortedArrayUsingFunction:compareFile context:NULL]; 137 count = [files count]; 138 types = [NSSet setWithArray:[FHFileHandler handledFileTypes]]; 139 _files = [[NSMutableArray alloc] initWithCapacity:count]; 140 fileManager = [NSFileManager defaultManager]; 140 141 141 for(i = 0; i < count; i++) { 142 name = [files objectAtIndex:i]; 143 path = [_rootPath stringByAppendingPathComponent:name]; 144 145 if([name hasPrefix:@"."]) 146 continue; 147 148 url = [WIURL fileURLWithPath:path]; 149 err = LSCopyItemInfoForURL((CFURLRef) [url URL], kLSRequestBasicFlagsOnly, &itemInfoRecord); 150 151 if(err != noErr) 152 continue; 153 154 if(itemInfoRecord.flags & kLSItemInfoIsInvisible) 155 continue; 156 157 isDirectory = (itemInfoRecord.flags & kLSItemInfoIsContainer || itemInfoRecord.flags & kLSItemInfoIsSymlink); 158 159 if(!isDirectory) { 160 extension = [path pathExtension]; 161 162 if(![types containsObject:extension]) { 163 if([[[self class] _directoryHandledFileTypes] containsObject:extension]) 164 isDirectory = YES; 165 else 142 if([_rootPath length] == 0) { 143 _files = [[NSMutableArray alloc] initWithCapacity:0]; 144 145 [_files addObject:[FHFile fileWithURL:[WIURL fileURLWithPath:@"/Network"] isDirectory:YES]]; 146 147 enumerator = [[fileManager directoryContentsAtPath:@"/Volumes/"] objectEnumerator]; 148 149 while((volume = [enumerator nextObject])) { 150 path = [NSSWF:@"/Volumes/%@", volume]; 151 symlink = [fileManager pathContentOfSymbolicLinkAtPath:path]; 152 153 if(symlink) 154 path = symlink; 155 156 [_files addObject:[FHFile fileWithURL:[WIURL fileURLWithPath:path] name:volume isDirectory:YES]]; 157 } 158 159 [_files sortUsingSelector:@selector(compareName:)]; 160 161 _numberOfFiles = [_files count]; 162 } else { 163 isRoot = [_rootPath isEqualToString:@"/"]; 164 files = [[fileManager directoryContentsWithFileAtPath:_rootPath] sortedArrayUsingFunction:compareFile context:NULL]; 165 count = [files count]; 166 types = [NSSet setWithArray:[FHFileHandler handledFileTypes]]; 167 _files = [[NSMutableArray alloc] initWithCapacity:count]; 168 169 for(i = 0; i < count; i++) { 170 name = [files objectAtIndex:i]; 171 path = [_rootPath stringByAppendingPathComponent:name]; 172 173 if([name hasPrefix:@"."]) 174 continue; 175 176 url = [WIURL fileURLWithPath:path]; 177 err = LSCopyItemInfoForURL((CFURLRef) [url URL], kLSRequestBasicFlagsOnly, &itemInfoRecord); 178 179 if(err != noErr) 180 continue; 181 182 if(itemInfoRecord.flags & kLSItemInfoIsInvisible) 183 continue; 184 185 if(isRoot) { 186 if([path isEqualToString:@"/Network"] || 187 [path isEqualToString:@"/automount"] || 188 [path isEqualToString:@"/etc"] || 189 [path isEqualToString:@"/mach"] || 190 [path isEqualToString:@"/tmp"] || 191 [path isEqualToString:@"/var"]) 166 192 continue; 167 193 } 194 195 isDirectory = (itemInfoRecord.flags & kLSItemInfoIsContainer || itemInfoRecord.flags & kLSItemInfoIsSymlink); 196 197 if(!isDirectory) { 198 extension = [path pathExtension]; 199 200 if(![types containsObject:extension]) { 201 if([[[self class] _directoryHandledFileTypes] containsObject:extension]) 202 isDirectory = YES; 203 else 204 continue; 205 } 206 } 207 208 [_files addObject:[FHFile fileWithURL:url isDirectory:isDirectory]]; 209 210 _numberOfFiles++; 211 212 if(!isDirectory) 213 _numberOfImages++; 168 214 } 169 170 [_files addObject:[FHFile fileWithURL:url isDirectory:isDirectory]];171 172 _numberOfFiles++;173 174 if(!isDirectory)175 _numberOfImages++;176 215 } 177 216 } … … 179 218 return _files; 180 219 } 181 220 221 222 - (WIURL *)parentURL { 223 if([_rootPath isEqualToString:@"/"] || 224 ([_rootPath hasPrefix:@"/Volumes"] && [[_rootPath pathComponents] count] == 3) || 225 ([_rootPath hasPrefix:@"/Network"] && [[_rootPath pathComponents] count] == 2)) 226 return [WIURL fileURLWithPath:@""]; 227 228 return [super parentURL]; 229 } 230 182 231 @end 183
