VideoOptionsControlBar.swift 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*****************************************************************************
  2. * VideoOptionsControlBar.swift
  3. *
  4. * Copyright © 2019 VLC authors and VideoLAN
  5. *
  6. * Authors: Robert Gordon <robwaynegordon@gmail.com>
  7. *
  8. *
  9. * Refer to the COPYING file of the official project for license.
  10. *****************************************************************************/
  11. @objc (VideoOptionsControlBarDelegate)
  12. protocol VideoOptionsControlBarDelegate: class {
  13. func didToggleFullScreen(_ optionsBar: VideoOptionsControlBar)
  14. func didToggleRepeat(_ optionsBar: VideoOptionsControlBar)
  15. func didSelectSubtitle(_ optionsBar: VideoOptionsControlBar)
  16. func didSelectMoreOptions(_ optionsBar: VideoOptionsControlBar)
  17. func didToggleOrientationLock(_ optionsBar: VideoOptionsControlBar)
  18. }
  19. @objc (VLCVideoOptionsControlBar)
  20. @objcMembers class VideoOptionsControlBar: UIStackView {
  21. // MARK: Instance variables
  22. weak var delegate: VideoOptionsControlBarDelegate?
  23. lazy var toggleFullScreenButton: UIButton = {
  24. var toggle = UIButton(type: .system)
  25. toggle.addTarget(self, action: #selector(toggleFullscreen), for: .touchUpInside)
  26. toggle.setImage(UIImage(named: "fullscreenIcon-new"), for: .normal)
  27. toggle.tintColor = .orange
  28. //TODO: add accessability options for fullScreenButton
  29. return toggle
  30. }()
  31. lazy var selectSubtitleButton: UIButton = {
  32. var subbutton = UIButton(type: .system)
  33. subbutton.addTarget(self, action: #selector(selectSubtitle), for: .touchUpInside)
  34. subbutton.setImage(UIImage(named: "subtitleIcon-new"), for: .normal)
  35. subbutton.tintColor = .orange
  36. //TODO: add accessability options for selectingSubtitleButton
  37. return subbutton
  38. }()
  39. lazy var repeatButton: UIButton = {
  40. var rptButton = UIButton(type: .system)
  41. rptButton.addTarget(self, action: #selector(toggleRepeat), for: .touchUpInside)
  42. rptButton.setImage(UIImage(named: "repeatOne-new"), for: .normal)
  43. rptButton.tintColor = .orange
  44. //TODO: add accessability options for repeatButton
  45. return rptButton
  46. }()
  47. lazy var orientationLockButton: UIButton = {
  48. var orientLockButton = UIButton(type: .system)
  49. orientLockButton.addTarget(self, action: #selector(toggleOrientation), for: .touchUpInside)
  50. orientLockButton.setImage(UIImage(named: "lockIcon-new"), for: .normal)
  51. orientLockButton.tintColor = .orange
  52. //TODO: add accessability options for orientationLockButton
  53. return orientLockButton
  54. }()
  55. lazy var moreOptionsButton: UIButton = {
  56. var moreOptionsButton = UIButton(type: .system)
  57. moreOptionsButton.addTarget(self, action: #selector(selectMoreOptions), for: .touchUpInside)
  58. moreOptionsButton.setImage(UIImage(named: "moreWhite-new"), for: .normal)
  59. moreOptionsButton.tintColor = .orange
  60. //TODO: add accessability options for moreOptionsButton
  61. return moreOptionsButton
  62. }()
  63. // MARK: Class Initializers
  64. required init(coder aDecoder: NSCoder) {
  65. super.init(coder: aDecoder)
  66. }
  67. override init(frame: CGRect) {
  68. super.init(frame: frame)
  69. addArrangedSubview(toggleFullScreenButton)
  70. addArrangedSubview(selectSubtitleButton)
  71. addArrangedSubview(repeatButton)
  72. addArrangedSubview(orientationLockButton)
  73. addArrangedSubview(moreOptionsButton)
  74. }
  75. // MARK: Button Action Buttons
  76. func toggleFullscreen() {
  77. delegate?.didToggleFullScreen(self)
  78. }
  79. func selectSubtitle() {
  80. delegate?.didSelectSubtitle(self)
  81. }
  82. func selectMoreOptions() {
  83. delegate?.didSelectMoreOptions(self)
  84. }
  85. func toggleRepeat() {
  86. delegate?.didToggleRepeat(self)
  87. }
  88. func toggleOrientation() {
  89. delegate?.didToggleOrientationLock(self)
  90. }
  91. }