Files
honeyDueKMP/iosApp/CaseraQLThumbnail/ThumbnailProvider.swift
Trey t 997932f0df 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>
2025-12-06 02:11:20 -06:00

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)
}
}