mirror of
				https://gitea.invidious.io/iv-org/videojs-quality-selector.git
				synced 2024-08-15 00:43:13 +00:00 
			
		
		
		
	Merge pull request #14 from yokuze/support_quality_selector_buttons_outside_control_bar_13
Refs #13 Support QualitySelector buttons anywhere in the component hierarchy
This commit is contained in:
		
						commit
						27a32a2bda
					
				
					 5 changed files with 19 additions and 13 deletions
				
			
		|  | @ -39,7 +39,7 @@ module.exports = function(videojs) { | |||
|        */ | ||||
|       handleClick: function(event) { | ||||
|          MenuItem.prototype.handleClick.call(this, event); | ||||
|          this.player().trigger(events.QUALITY_SELECTED, this.source); | ||||
|          this.player().trigger(events.QUALITY_REQUESTED, this.source); | ||||
|       }, | ||||
| 
 | ||||
|    }); | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ module.exports = function(videojs) { | |||
|          MenuButton.call(this, player, options); | ||||
| 
 | ||||
|          // Update interface instantly so the user's change is acknowledged
 | ||||
|          player.on(events.QUALITY_SELECTED, function(event, newSource) { | ||||
|          player.on(events.QUALITY_REQUESTED, function(event, newSource) { | ||||
|             this.setSelectedSource(newSource); | ||||
|             player.addClass(QUALITY_CHANGE_CLASS); | ||||
| 
 | ||||
|  | @ -34,6 +34,11 @@ module.exports = function(videojs) { | |||
|             }); | ||||
|          }.bind(this)); | ||||
| 
 | ||||
|          player.on(events.QUALITY_SELECTED, function(event, newSource) { | ||||
|             // Update the selected source with the source that was actually selected
 | ||||
|             this.setSelectedSource(newSource); | ||||
|          }.bind(this)); | ||||
| 
 | ||||
|          // Since it's possible for the player to get a source before the selector is
 | ||||
|          // created, make sure to update once we get a "ready" signal.
 | ||||
|          player.one('ready', function() { | ||||
|  | @ -50,8 +55,12 @@ module.exports = function(videojs) { | |||
|        * @param source {object} player source to display as selected | ||||
|        */ | ||||
|       setSelectedSource: function(source) { | ||||
|          this.selectedSrc = source ? source.src : undefined; | ||||
|          var src = (source ? source.src : undefined); | ||||
| 
 | ||||
|          if (this.selectedSrc !== src) { | ||||
|             this.selectedSrc = src; | ||||
|             this.update(); | ||||
|          } | ||||
|       }, | ||||
| 
 | ||||
|       /** | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| 
 | ||||
| module.exports = { | ||||
| 
 | ||||
|    QUALITY_REQUESTED: 'qualityRequested', | ||||
|    QUALITY_SELECTED: 'qualitySelected', | ||||
| 
 | ||||
| }; | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ module.exports = function(videojs) { | |||
| 
 | ||||
|    videojs.hook('setup', function(player) { | ||||
|       // Add handler to switch sources when the user requests a change
 | ||||
|       player.on(events.QUALITY_SELECTED, function(event, newSource) { | ||||
|       player.on(events.QUALITY_REQUESTED, function(event, newSource) { | ||||
|          var sources = player.currentSources(), | ||||
|              currentTime = player.currentTime(), | ||||
|              isPaused = player.paused(), | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| 'use strict'; | ||||
| 
 | ||||
| var _ = require('underscore'); | ||||
| var _ = require('underscore'), | ||||
|     events = require('../events'); | ||||
| 
 | ||||
| module.exports = function(videojs) { | ||||
| 
 | ||||
|  | @ -10,8 +11,7 @@ module.exports = function(videojs) { | |||
| 
 | ||||
|          setSource: function(playerSelectedSource, next) { | ||||
|             var sources = player.currentSources(), | ||||
|                 userSelectedSource, chosenSource, | ||||
|                 qualitySelector; | ||||
|                 userSelectedSource, chosenSource; | ||||
| 
 | ||||
|             // There are generally two source options, the one that videojs
 | ||||
|             // auto-selects and the one that a "user" of this plugin has
 | ||||
|  | @ -28,11 +28,7 @@ module.exports = function(videojs) { | |||
| 
 | ||||
|             chosenSource = userSelectedSource || playerSelectedSource; | ||||
| 
 | ||||
|             // Update the quality selector with the new source
 | ||||
|             qualitySelector = player.controlBar.getChild('qualitySelector'); | ||||
|             if (qualitySelector) { | ||||
|                qualitySelector.setSelectedSource(chosenSource); | ||||
|             } | ||||
|             player.trigger(events.QUALITY_SELECTED, chosenSource); | ||||
| 
 | ||||
|             // Pass along the chosen source
 | ||||
|             next(null, chosenSource); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue