2

質問は本当に簡単です。デフォルトの OSX の Audio QuickLook プラグインの動作をエミュレートしたいのですが、通常はプレビュー ウィンドウの下部に表示される QuickTime Player が必要です。また、カスタム プラグインを使用しているときに、現在プレビューしているファイルのサウンドも聞くことができるようにしたいと考えています。

コンテキストをよりよく理解するのに役立つ可能性のあるコード (GeneratePreviewForURL.m ファイルから) を次に示します。

OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
{
    @autoreleasepool {

        if (QLPreviewRequestIsCancelled(preview)) return noErr;

        NSMutableString *html=[[NSMutableString alloc] init];
        NSDictionary *props;
        NSData *imageData=[NSData dataWithContentsOfFile:@"/tmp/IMAGE.png"];

        props=@{
            (__bridge NSString *)kQLPreviewPropertyTextEncodingNameKey:@"UTF-8",
            (__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"text/html",
            (__bridge NSString *)kQLPreviewPropertyAttachmentsKey:@{
                    @"IMAGE":@{
                            (__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"image/png",
                            (__bridge NSString *)kQLPreviewPropertyAttachmentDataKey: imageData,
                            },
                    },
            };

        [html appendString:@"<html>"];
        [html appendString:@"<body>"];
        [html appendString:@"<img src=\"cid:IMAGE\">"];
        [html appendString:@"<br><br>"];
        //...
        [html appendString:@"</body>"];
        [html appendString:@"</html>"];

        QLPreviewRequestSetDataRepresentation(preview,(CFDataRef)[html dataUsingEncoding:NSUTF8StringEncoding],kUTTypeHTML,(CFDictionaryRef)props);
    }

    return noErr;
}
4

1 に答える 1