NCSubtitlePlayer+PlayerSubtitleDelegate.swift 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // NCPlayer+PlayerSubtitleDelegate.swift
  3. // Nextcloud
  4. //
  5. // Created by Federico Malagoni on 11/03/22.
  6. // Copyright © 2022 Marino Faggiana. All rights reserved.
  7. //
  8. // Author Marino Faggiana <marino.faggiana@nextcloud.com>
  9. //
  10. // This program is free software: you can redistribute it and/or modify
  11. // it under the terms of the GNU General Public License as published by
  12. // the Free Software Foundation, either version 3 of the License, or
  13. // (at your option) any later version.
  14. //
  15. // This program is distributed in the hope that it will be useful,
  16. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. // GNU General Public License for more details.
  19. //
  20. // You should have received a copy of the GNU General Public License
  21. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  22. //
  23. import Foundation
  24. import NCCommunication
  25. import UIKit
  26. import AVFoundation
  27. import MediaPlayer
  28. import Alamofire
  29. import RealmSwift
  30. public protocol PlayerSubtitleDelegate: AnyObject {
  31. func hideOrShowSubtitle()
  32. func showAlertSubtitles()
  33. }
  34. extension NCPlayer: PlayerSubtitleDelegate {
  35. func hideOrShowSubtitle() {
  36. if self.isSubtitleShowed {
  37. self.hideSubtitle()
  38. self.isSubtitleShowed = false
  39. } else {
  40. self.showAlertSubtitles()
  41. }
  42. }
  43. internal func showAlertSubtitles() {
  44. let alert = UIAlertController(title: nil, message: NSLocalizedString("_subtitle_", comment: ""), preferredStyle: .actionSheet)
  45. for url in subtitleUrls {
  46. print("Play Subtitle at:\n\(url.path)")
  47. let videoUrlTitle = self.metadata.fileName.alphanumeric.dropLast(3)
  48. let subtitleUrlTitle = url.lastPathComponent.alphanumeric.dropLast(3)
  49. var titleSubtitle = String(subtitleUrlTitle.dropFirst(videoUrlTitle.count))
  50. if titleSubtitle.isEmpty {
  51. titleSubtitle = NSLocalizedString("_subtitle_", comment: "")
  52. }
  53. alert.addAction(UIAlertAction(title: titleSubtitle, style: .default, handler: { [self] _ in
  54. if NCUtilityFileSystem.shared.getFileSize(filePath: url.path) > 0 {
  55. self.open(fileFromLocal: url)
  56. if let viewController = viewController {
  57. self.addSubtitlesTo(viewController, self.playerToolBar)
  58. self.isSubtitleShowed = true
  59. self.showSubtitle()
  60. }
  61. } else {
  62. let alertError = UIAlertController(title: NSLocalizedString("_error_", comment: ""), message: NSLocalizedString("_subtitle_not_found_", comment: ""), preferredStyle: .alert)
  63. alertError.addAction(UIKit.UIAlertAction(title: NSLocalizedString("_ok_", comment: ""), style: .default, handler: nil))
  64. viewController?.present(alertError, animated: true, completion: nil)
  65. self.isSubtitleShowed = false
  66. }
  67. }))
  68. }
  69. alert.addAction(UIAlertAction(title: NSLocalizedString("_cancel_", comment: ""), style: .cancel, handler: { _ in
  70. self.isSubtitleShowed = false
  71. }))
  72. alert.popoverPresentationController?.sourceView = self.viewController?.view
  73. self.viewController?.present(alert, animated: true, completion: nil)
  74. }
  75. }