- 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>
39 lines
1.4 KiB
Swift
39 lines
1.4 KiB
Swift
//
|
|
// ThumbnailProvider.swift
|
|
// CaseraQLThumbnail
|
|
//
|
|
// Created by Trey Tartt on 12/6/25.
|
|
//
|
|
|
|
import UIKit
|
|
import QuickLookThumbnailing
|
|
|
|
class ThumbnailProvider: QLThumbnailProvider {
|
|
|
|
override func provideThumbnail(for request: QLFileThumbnailRequest, _ handler: @escaping (QLThumbnailReply?, Error?) -> Void) {
|
|
|
|
let thumbnailSize = request.maximumSize
|
|
|
|
handler(QLThumbnailReply(contextSize: thumbnailSize, currentContextDrawing: { () -> Bool in
|
|
// Draw background
|
|
let backgroundColor = UIColor(red: 7/255, green: 160/255, blue: 195/255, alpha: 1)
|
|
backgroundColor.setFill()
|
|
UIRectFill(CGRect(origin: .zero, size: thumbnailSize))
|
|
|
|
// Draw icon
|
|
let config = UIImage.SymbolConfiguration(pointSize: min(thumbnailSize.width, thumbnailSize.height) * 0.5, weight: .regular)
|
|
if let icon = UIImage(systemName: "person.crop.rectangle.stack", withConfiguration: config) {
|
|
let tintedIcon = icon.withTintColor(.white, renderingMode: .alwaysOriginal)
|
|
let iconSize = tintedIcon.size
|
|
let iconOrigin = CGPoint(
|
|
x: (thumbnailSize.width - iconSize.width) / 2,
|
|
y: (thumbnailSize.height - iconSize.height) / 2
|
|
)
|
|
tintedIcon.draw(at: iconOrigin)
|
|
}
|
|
|
|
return true
|
|
}), nil)
|
|
}
|
|
}
|