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
Merge request reports
Activity
Filter activity
Please register or sign in to reply