NCViewerImageCommon.swift 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // NCViewerImageCommon.swift
  3. // Nextcloud
  4. //
  5. // Created by Marino Faggiana on 04/03/2020.
  6. // Copyright © 2020 Marino Faggiana. All rights reserved.
  7. //
  8. import Foundation
  9. class NCViewerImageCommon: NSObject {
  10. @objc static let shared: NCViewerImageCommon = {
  11. let instance = NCViewerImageCommon()
  12. return instance
  13. }()
  14. func getThumbnailImage(metadata: tableMetadata) -> UIImage? {
  15. if CCUtility.fileProviderStorageIconExists(metadata.ocId, fileNameView: metadata.fileNameView) {
  16. let imagePath = CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
  17. return UIImage.init(contentsOfFile: imagePath)
  18. }
  19. return nil
  20. }
  21. func getImage(metadata: tableMetadata) -> UIImage? {
  22. var image: UIImage?
  23. if CCUtility.fileProviderStorageSize(metadata.ocId, fileNameView: metadata.fileNameView) > 0 {
  24. let imagePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
  25. let ext = CCUtility.getExtension(metadata.fileNameView)
  26. if ext == "GIF" { image = UIImage.animatedImage(withAnimatedGIFURL: URL(fileURLWithPath: imagePath)) }
  27. else { image = UIImage.init(contentsOfFile: imagePath) }
  28. }
  29. return image
  30. }
  31. func imageChangeSizeView(mediaBrowser: MediaBrowserViewController?, size: CGSize, metadata: tableMetadata?) {
  32. guard let mediaBrowser = mediaBrowser else { return }
  33. var image: UIImage?
  34. var contentViewSaved : MediaContentView?
  35. for contentView in mediaBrowser.contentViews {
  36. if contentView.position == 0 && contentView.isLoading == false {
  37. image = contentView.image
  38. contentViewSaved = contentView
  39. if metadata != nil , let thumbnailImage = self.getThumbnailImage(metadata: metadata!) {
  40. contentView.image = thumbnailImage
  41. } else {
  42. contentView.image = nil
  43. }
  44. }
  45. }
  46. DispatchQueue.main.async {
  47. //DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) {
  48. mediaBrowser.changeInViewSize(to: size)
  49. if image != nil {
  50. contentViewSaved?.image = image
  51. }
  52. }
  53. }
  54. }