VLCMediaPlayer: Multiple selection of media tracks
Proposal for multiple selection of media tracks.
// example
let mediaPlayer: VLCMediaPlayer = ...
// Get tracks
// Audio Tracks
let audioTracks: [VLCMediaPlayer.Track] = mediaPlayer.audioTracks
// Video Tracks
let videoTracks: [VLCMediaPlayer.Track] = mediaPlayer.videoTracks
// Text Tracks
let textTracks: [VLCMediaPlayer.Track] = mediaPlayer.textTracks
// Subtitle selection
guard let sub = textTracks.first else { return }
sub.isSelected = true
// Deselect subtitles
sub.isSelected = false
// Deselect all subtitles
mediaPlayer.deselectAllTextTracks()
A little practical example
// When using UITableView
let mediaPlayer: VLCMediaPlayer
var audioTracks: [VLCMediaPlayer.Track] = []
var videoTracks: [VLCMediaPlayer.Track] = []
var textTracks: [VLCMediaPlayer.Track] = []
func loadData() {
audioTracks = mediaPlayer.audioTracks
videoTracks = mediaPlayer.videoTracks
textTracks = mediaPlayer.textTracks
tableView.reloadData()
}
func getTracks(section: Int) -> [VLCMediaPlayer.Track] {
switch section {
case 0: return audioTracks
case 1: return videoTracks
case 2: return textTracks
default: fatalError()
}
}
// MARK: - UITableViewDataSource
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath)
let tracks: [VLCMediaPlayer.Track] = getTracks(section: indexPath.section)
if tracks.count < indexPath.row {
let track = tracks[indexPath.row]
cell.textLabel?.text = track.trackName
cell.accessoryType = track.isSelected ? .checkmark : .none
}
return cell
}
// MARK: - UITableViewDelegate
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let tracks: [VLCMediaPlayer.Track] = getTracks(section: indexPath.section)
guard tracks.count < indexPath.row else { return }
let track = tracks[indexPath.row]
track.isSelected.toggle()
// reload UI
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
tableView.reloadData()
}
}
Related #586 (closed)
If this attempt is not suitable, please close this merge request.
best regards.
Edited by Felix Paul Kühne