Add Quick Look Preview and Thumbnail extensions for .casera files
- Add CaseraQLPreview extension to show custom preview with contractor details and import instructions when viewing .casera files - Add CaseraQLThumbnail extension to display teal icon in Messages and Files app instead of generic white box - Update UTExportedTypeDeclarations to conform to public.content for better system file type recognition 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
57
iosApp/CaseraQLPreview/PreviewProvider.swift
Normal file
57
iosApp/CaseraQLPreview/PreviewProvider.swift
Normal file
@@ -0,0 +1,57 @@
|
||||
//
|
||||
// PreviewProvider.swift
|
||||
// CaseraQLPreview
|
||||
//
|
||||
// Created by Trey Tartt on 12/6/25.
|
||||
//
|
||||
|
||||
import QuickLook
|
||||
|
||||
class PreviewProvider: QLPreviewProvider, QLPreviewingController {
|
||||
|
||||
|
||||
/*
|
||||
Use a QLPreviewProvider to provide data-based previews.
|
||||
|
||||
To set up your extension as a data-based preview extension:
|
||||
|
||||
- Modify the extension's Info.plist by setting
|
||||
<key>QLIsDataBasedPreview</key>
|
||||
<true/>
|
||||
|
||||
- Add the supported content types to QLSupportedContentTypes array in the extension's Info.plist.
|
||||
|
||||
- Remove
|
||||
<key>NSExtensionMainStoryboard</key>
|
||||
<string>MainInterface</string>
|
||||
|
||||
and replace it by setting the NSExtensionPrincipalClass to this class, e.g.
|
||||
<key>NSExtensionPrincipalClass</key>
|
||||
<string>$(PRODUCT_MODULE_NAME).PreviewProvider</string>
|
||||
|
||||
- Implement providePreview(for:)
|
||||
*/
|
||||
|
||||
func providePreview(for request: QLFilePreviewRequest) async throws -> QLPreviewReply {
|
||||
|
||||
//You can create a QLPreviewReply in several ways, depending on the format of the data you want to return.
|
||||
//To return Data of a supported content type:
|
||||
|
||||
let contentType = UTType.plainText // replace with your data type
|
||||
|
||||
let reply = QLPreviewReply.init(dataOfContentType: contentType, contentSize: CGSize.init(width: 800, height: 800)) { (replyToUpdate : QLPreviewReply) in
|
||||
|
||||
let data = Data("Hello world".utf8)
|
||||
|
||||
//setting the stringEncoding for text and html data is optional and defaults to String.Encoding.utf8
|
||||
replyToUpdate.stringEncoding = .utf8
|
||||
|
||||
//initialize your data here
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
return reply
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user