Tusker/Tusker/Screens/Attachment Gallery/FallbackGalleryContentViewC...

95 lines
2.2 KiB
Swift

//
// FallbackGalleryContentViewController.swift
// Tusker
//
// Created by Shadowfacts on 3/18/24.
// Copyright © 2024 Shadowfacts. All rights reserved.
//
import UIKit
import GalleryVC
import QuickLook
import Pachyderm
private class FallbackGalleryContentViewController: QLPreviewController {
private let previewItem = GalleryPreviewItem()
init(url: URL) {
super.init(nibName: nil, bundle: nil)
self.previewItem.previewItemURL = url
dataSource = self
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
overrideUserInterfaceStyle = .dark
navigationItem.rightBarButtonItems = [
UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(closePressed))
]
}
@objc private func closePressed() {
self.dismiss(animated: true)
}
}
extension FallbackGalleryContentViewController: QLPreviewControllerDataSource {
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> any QLPreviewItem {
previewItem
}
}
class FallbackGalleryNavigationController: UINavigationController, GalleryContentViewController {
init(url: URL) {
super.init(nibName: nil, bundle: nil)
self.viewControllers = [FallbackGalleryContentViewController(url: url)]
}
override func viewDidLoad() {
super.viewDidLoad()
container?.disableGalleryScrollAndZoom()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: GalleryContentViewController
var container: (any GalleryVC.GalleryContentViewControllerContainer)?
var contentSize: CGSize {
.zero
}
var activityItemsForSharing: [Any] {
[]
}
var caption: String? {
nil
}
var canAnimateFromSourceView: Bool {
false
}
}
private class GalleryPreviewItem: NSObject, QLPreviewItem {
var previewItemURL: URL? = nil
}