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