přesně tohle jsem zkoušel. Raději blíže popíšu problém:
Získam seznam všech aplikací takto:
NSString *pathString = @"/Applications";
NSURL *directoryURL = [[NSURL alloc] initFileURLWithPath:pathString isDirectory:YES];
NSArray *keys = [NSArray arrayWithObjects:
NSURLIsDirectoryKey, NSURLIsPackageKey, NSURLLocalizedNameKey, NSURLCustomIconKey, nil];
NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager]
enumeratorAtURL:directoryURL
includingPropertiesForKeys:keys
options:(NSDirectoryEnumerationSkipsPackageDescendants |
NSDirectoryEnumerationSkipsHiddenFiles)
errorHandler:^(NSURL *url, NSError *error) {
return YES;
}];
potom v cyklu procházím enumerator a do PopUpButtonu přidávám itemy:
NSString *localizedName = nil;
[url getResourceValue:&localizedName forKey:NSURLLocalizedNameKey error:NULL];
NSNumber *isPackage = nil;
[url getResourceValue:&isPackage forKey:NSURLIsPackageKey error:NULL];
if ([isPackage boolValue]) {
[popupImageApp addItemWithTitle:localizedName];
NSImage *iconImage = nil;
[url getResourceValue:&iconImage forKey:NSURLCustomIconKey error:NULL];
NSMenuItem *item = [popupImageApp itemWithTitle:localizedName];
[item setImage:iconImage];
Názvy aplikací se přidají korektně, akorát ty ikony ne. Protože se jedná o PreferencePane, nedá se to debugovat, takže ani nevím, jestli získám k jednotlivým aplikacím ikony. Jak se PreferencePane dá debugovat? Případně metodou kontrolních tisků? :) Díky