123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*****************************************************************************
- * VideoOptionsControlBar.swift
- *
- * Copyright © 2019 VLC authors and VideoLAN
- *
- * Authors: Robert Gordon <robwaynegordon@gmail.com>
- *
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
- @objc (VLCVideoOptionsControlBarDelegate)
- protocol VideoOptionsControlBarDelegate: class {
- func didToggleFullScreen(_ optionsBar: VideoOptionsControlBar)
- func didToggleRepeat(_ optionsBar: VideoOptionsControlBar)
- func didSelectSubtitle(_ optionsBar: VideoOptionsControlBar)
- func didSelectMoreOptions(_ optionsBar: VideoOptionsControlBar)
- func didToggleInterfaceLock(_ optionsBar: VideoOptionsControlBar)
- }
- @objc (VLCVideoOptionsControlBar)
- @objcMembers class VideoOptionsControlBar: UIStackView {
-
- // MARK: Instance variables
- weak var delegate: VideoOptionsControlBarDelegate?
-
- var repeatMode: VLCRepeatMode {
- didSet {
- switch repeatMode {
- case .repeatCurrentItem:
- repeatButton.setImage(UIImage(named: "repeatOne-new"), for: .normal)
- case .repeatAllItems:
- repeatButton.setImage(UIImage(named: "repeat-new"), for: .normal)
- case .doNotRepeat:
- repeatButton.setImage(UIImage(named: "no-repeat-new"), for: .normal)
- default:
- assertionFailure("unhandled repeatmode")
- }
- }
- }
-
- lazy var toggleFullScreenButton: UIButton = {
- var toggle = UIButton(type: .system)
- toggle.setImage(UIImage(named: "fullscreenIcon-new"), for: .normal)
- toggle.addTarget(self, action: #selector(toggleFullscreen), for: .touchUpInside)
- toggle.tintColor = .white
- toggle.accessibilityLabel = NSLocalizedString("VIDEO_ASPECT_RATIO_BUTTON", comment: "")
- toggle.accessibilityHint = NSLocalizedString("VIDEO_ASPECT_RATIO_HINT", comment: "")
- return toggle
- }()
-
- lazy var selectSubtitleButton: UIButton = {
- var subbutton = UIButton(type: .system)
- subbutton.setImage(UIImage(named: "subtitlesIcon-new"), for: .normal)
- subbutton.addTarget(self, action: #selector(selectSubtitle), for: .touchUpInside)
- subbutton.tintColor = .white
- subbutton.accessibilityHint = NSLocalizedString("CHOOSE_SUBTITLE_TRACK", comment: "")
- subbutton.accessibilityLabel = NSLocalizedString("SUBTITLES", comment: "")
- return subbutton
- }()
-
- lazy var repeatButton: UIButton = {
- var rptButton = UIButton(type: .system)
- rptButton.addTarget(self, action: #selector(toggleRepeat), for: .touchUpInside)
- rptButton.setImage(UIImage(named: "no-repeat-new"), for: .normal)
- rptButton.tintColor = .white
- rptButton.accessibilityHint = NSLocalizedString("REPEAT_MODE", comment: "")
- rptButton.accessibilityLabel = NSLocalizedString("REPEAT_MODE_HINT", comment: "")
- return rptButton
- }()
-
- lazy var interfaceLockButton: UIButton = {
- var interfaceLockButton = UIButton(type: .system)
- interfaceLockButton.setImage(UIImage(named: "lock-new"), for: .normal)
- interfaceLockButton.addTarget(self, action: #selector(toggleInterfaceLock), for: .touchUpInside)
- interfaceLockButton.tintColor = .white
- interfaceLockButton.accessibilityHint = NSLocalizedString("INTERFACE_LOCK_HINT", comment: "")
- interfaceLockButton.accessibilityLabel = NSLocalizedString("INTERFACE_LOCK_BUTTON", comment: "")
- return interfaceLockButton
- }()
-
- lazy var moreOptionsButton: UIButton = {
- var moreOptionsButton = UIButton(type: .system)
- moreOptionsButton.setImage(UIImage(named: "moreWhite-new"), for: .normal)
- moreOptionsButton.addTarget(self, action: #selector(selectMoreOptions), for: .touchUpInside)
- moreOptionsButton.tintColor = .white
- moreOptionsButton.accessibilityHint = NSLocalizedString("MORE_OPTIONS_HINT", comment: "")
- moreOptionsButton.accessibilityLabel = NSLocalizedString("MORE_OPTIONS_BUTTON", comment: "")
- return moreOptionsButton
- }()
-
- // MARK: Class Initializers
- required init(coder aDecoder: NSCoder) {
- fatalError("init(coder aDecoder: NSCoder) not implemented")
- }
-
- override init(frame: CGRect) {
- repeatMode = .doNotRepeat
- super.init(frame: frame)
- addArrangedSubview(toggleFullScreenButton)
- addArrangedSubview(selectSubtitleButton)
- addArrangedSubview(repeatButton)
- addArrangedSubview(interfaceLockButton)
- addArrangedSubview(moreOptionsButton)
- axis = .horizontal
- translatesAutoresizingMaskIntoConstraints = false
- }
-
- // MARK: Button Action Buttons
- func toggleFullscreen() {
- delegate?.didToggleFullScreen(self)
- }
-
- func selectSubtitle() {
- delegate?.didSelectSubtitle(self)
- }
-
- func selectMoreOptions() {
- delegate?.didSelectMoreOptions(self)
- }
-
- func toggleRepeat() {
- delegate?.didToggleRepeat(self)
- }
-
- func toggleInterfaceLock() {
- delegate?.didToggleInterfaceLock(self)
- }
- }
|