2012-06-15 67 views
2

這個問題很簡單。我想模仿默認OSX的音頻QuickLook插件的行爲,我需要通常停留在其預覽窗口底部的QuickTime Player。我也喜歡當我的自定義插件正在使用時,我也可以聽到我目前正在預覽的文件的聲音。如何將QuickTime播放器欄插入到自定義QuickLook插件中?

下面是一些代碼(從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"]; 

    [email protected]{ 
      (__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; 
} 

回答

0

和Xcode 4.2 OSX 10.6.8有可能獲得的結果簡單地使用<audio>標籤並加載文件的<src>屬性(如果你還想在預覽窗口打開時播放音頻,你只需要將<autoplay>屬性設置爲「true」)......不幸的是,現在在Xver 5.1上小牛隊,似乎既不使用cid:方案(您已經在示例代碼中使用了加載.png fi樂)完成這項工作!

只有reporting a bug to Apple可能(可能)解決這個問題。