Как сделать значок "загрузка" в Finder on Mountain Lion 10.8?

Начиная с OS X 10.8 Mountain Lion, Safari создает динамический значок при загрузке файла, как показано ниже:

: enter image description here

Индикатор выполнения показывает ход выполнения, и нажатие кнопки закрытия верхнего левого верхнего уровня говорит Safari прекратить загрузку.

Есть ли способ для стороннего приложения создать такой значок?

Я предполагаю, что нет совместимого с App Store способом, но мне любопытно, как это сделать/как Safari делает это только ради интереса.

Ответ 1

Я думаю, что это часть NSFileWrapper, и вы можете сделать это с помощью App Store. Я не знаю.

NSFileWrapper *fw = [[NSFileWrapper alloc] initWithURL:fileURL,
                    // don't memory map, we only want to change the icon
                                               options:NSFileWrapperReadingWithoutMapping 
                                                 error:NULL];

[fw setIcon:updatedIcon];

Обратите внимание, что icon и setIcon являются частью категории ApplicationKit, а не основной реализацией NSFileWrapper в Foundation: https://developer.apple.com/library/mac/#documentation/AppKit/Reference/NSFileWrapper_AppKitAdditions/NSFileWrapperApplicationKitAdditions.html

Изменить: как у вас может быть индикатор выполнения. Чтобы сделать кнопку закрытия, вам понадобится ссылка NSView на значок, как вы можете сделать с значками док-станции.

Изменить 2: браузер WebKit делает это тоже (а не только Safari), поэтому, если вы вырыли источник, вы, вероятно, сможете его найти.

Редактирование 3: Я думаю, что это делается автоматически с помощью NSURLDownload. Вы могли бы использовать этот стиль самостоятельно, если бы сделали фальшивую загрузку, которая действительно создавала загруженный контент "на лету". Однако я не считаю возможным сделать произвольный щелчок.