I am trying to add a new item to the Finder Sidebar Favorites 
kLSSharedFileListFavoriteItems list. The API for doing this, 
LSSharedFileListInsertItemURL, is not working for me. The Sidebar folder is 
created, but with a generic folder icon and the name taken from the target 
folder instead of the supplied display name. Can anyone see the error in the 
code below? All the API calls are returning noErr or other success codes; there 
is no error report.

The app is not Sandboxed.
Running on OS X 10.7.5.

Thanks if you can help,

-- Ben



+ (BOOL) createSidebarFavoritesIcon:(NSString *)targetPath 
displayName:(NSString *)name icon:(NSString *)iconPath
{
        BOOL success = NO;
        
        NSURL *folderURL = [NSURL fileURLWithPath:targetPath];
        
        IconRef iconRef = NULL;
        
        if (iconPath != nil)
        {
                NSURL *iconURL = [NSURL fileURLWithPath:iconPath];

                FSRef iconFSRef;
                CFURLGetFSRef((CFURLRef)iconURL, &iconFSRef);
                
                OSStatus status = RegisterIconRefFromFSRef('MYAP', 'SFAV', 
&iconFSRef, &iconRef);
                if (status != noErr)
                {
                        NSLog(@"%s: RegisterIconRefFromFSRef failed, error code 
%d", __FUNCTION__, (int)status);
                }
        }
        
        // Create a reference to the shared file list.
        LSSharedFileListRef favoritesList = 
LSSharedFileListCreate(kCFAllocatorDefault,
                kLSSharedFileListFavoriteItems,
                NULL);
        
        if (favoritesList != NULL)
        {
                LSSharedFileListItemRef item = 
LSSharedFileListInsertItemURL(favoritesList,
                        kLSSharedFileListItemLast,
                        (CFStringRef)name,      // inDisplayName -- defaults to 
the folder name
                        iconRef,
                        (CFURLRef)folderURL,
                        NULL,                   // inPropertiesToSet
                        NULL                    // inPropertiesToClear
                        );
                
                if (item != NULL)
                {
                        success = YES;
                        CFRelease(item);
                }
                
                CFRelease(favoritesList);
        }

        return success;
}


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to