2009-06-30 4 views
5

現在プロジェクトで作業中ですが、com.apple.sidebarlists.plistファイルに追加してサイドバー項目を追加することはできますが、Finderを再起動すると、割り当てられたアイコンを使用してフォルダアイコンを表示する方法がわかりませんカスタムアイコン。フォルダにカスタムアイコンを使用する必要がある場合、プログラムでFinderサイドバーにフォルダアイコンを配置するにはどうすればよいですか?

誰でも私にこれをさせるリンクまたはソリューションを教えてもらえますか?事前に束をありがとう!

答えて

6

純粋なCocoaを使用してこれを行う方法はありません。代わりにLSSharedFileList APIを使用してください。これは、サイドバーのリストを管理するためのサポートされた方法です。アイテムを挿入すると、カスタムアイコン(アイコンサービスからのIconRefとして)を提供できます。

+0

サンドボックスで実行しているときにこのAPIを利用できますか? –

+0

@DavidKocher残念ながら、 – dejuknow

+0

@dejuknow:間違っています。そのためにcom.apple.coreservices.sharedlileslistd.xpcサービスを使用します。基本的にNSXPCServiceConnectionを作成し、追加するFileURL、アイコンプロパティを含むbookmarkdata(またはFsRef/UrlBookmarkData/whateverで既存のものを取得)を含むSFLListItemを使用してSFLListChangeオブジェクトを作成し、XPCサービスを介してSFLListに変更を公開します。ヴォイラ。詳細はアプリのサンドボックスガイドをご覧ください。 Googleはcoreservices/sharedfileslist.frameworkヘッダー(またはそれらをnm/otool/classdumpでダンプします)。がんばろう。 – kervich

0

私は明らかにしないためにはあまりにも頑固でした。私はした:

[[NSWokspace sharedWorkspace] setIcon:someIcon forFile:someFile options:0]; 

フォルダの画像アイコンを設定します。私はその後、com.apple.sidebarlists.plistNSUserDefaultsを追加して、Apple Eventsを通じてFinderを再起動しました。それはすべての仕事をしました。

+0

しないでください。ピーター・ホセイが言ったことをやってください。 Launch Services APIを使用しない理由はありません。 –

+0

Mmmm NSWokspace ...おいしいね。 –

1

私は、アイコンのことは知らないが、私はここで利用可能なオープンソースであるEBLaunchServicesラッパーを使用して、サイドバーに項目を追加します。

https://github.com/Eric-Bro/EBLaunchServices

非常に使いやすいです。たとえば、あなたが呼び出すサイドバーにOSXFUSEボリュームを追加する:

NSURL* volumeUrl = [NSURL fileURLWithPath:@"/Volumes/MyVolume"]; 
[EBLaunchServices addItemWithURL:volumeUrl toList:kLSSharedFileListFavoriteVolumes]; 
関連する問題