* Update copyright holding and dates * compound IDE Macros updated * update copyright * update copyrights done * update templates and README
74 lines
2.2 KiB
Swift
74 lines
2.2 KiB
Swift
//
|
|
// Copyright 2025 Element Creations Ltd.
|
|
// Copyright 2022-2025 New Vector Ltd.
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
|
// Please see LICENSE files in the repository root for full details.
|
|
//
|
|
|
|
import Compound
|
|
import QuickLook
|
|
import SwiftUI
|
|
|
|
struct LogViewerScreen: View {
|
|
let context: LogViewerScreenViewModel.Context
|
|
|
|
var body: some View {
|
|
PreviewView(urls: context.viewState.urls)
|
|
}
|
|
}
|
|
|
|
private struct PreviewView: UIViewControllerRepresentable {
|
|
let urls: [URL]
|
|
|
|
func makeUIViewController(context: Context) -> UIViewController {
|
|
let previewController = QLPreviewController()
|
|
previewController.dataSource = context.coordinator
|
|
previewController.delegate = context.coordinator
|
|
|
|
return UINavigationController(rootViewController: previewController)
|
|
}
|
|
|
|
func updateUIViewController(_ uiViewController: UIViewController, context: Context) { }
|
|
|
|
func makeCoordinator() -> Coordinator {
|
|
Coordinator(view: self)
|
|
}
|
|
|
|
class Coordinator: NSObject, QLPreviewControllerDataSource, QLPreviewControllerDelegate {
|
|
let view: PreviewView
|
|
|
|
init(view: PreviewView) {
|
|
self.view = view
|
|
}
|
|
|
|
// MARK: - QLPreviewControllerDataSource
|
|
|
|
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
|
|
view.urls.count
|
|
}
|
|
|
|
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
|
|
let url = view.urls[index]
|
|
|
|
return PreviewItem(previewItemURL: url, previewItemTitle: url.lastPathComponent)
|
|
}
|
|
|
|
// MARK: - QLPreviewControllerDelegate
|
|
|
|
func previewController(_ controller: QLPreviewController, editingModeFor previewItem: QLPreviewItem) -> QLPreviewItemEditingMode {
|
|
.disabled
|
|
}
|
|
}
|
|
}
|
|
|
|
private class PreviewItem: NSObject, QLPreviewItem {
|
|
var previewItemURL: URL?
|
|
var previewItemTitle: String?
|
|
|
|
init(previewItemURL: URL?, previewItemTitle: String?) {
|
|
self.previewItemURL = previewItemURL
|
|
self.previewItemTitle = previewItemTitle
|
|
}
|
|
}
|