Sha256: 9c1c73d0273211d4ee33554820997846b4f8637aff2bf0841e6a73a056d73899

Contents?: true

Size: 1.89 KB

Versions: 9

Compression:

Stored size: 1.89 KB

Contents

pageflow.mediaPlayer.volumeBinding = function(player, settings, options) {
  options = options || {};

  var originalPlay = player.play;
  var originalPause = player.pause;

  var volumeFactor = 'volumeFactor' in options ? options.volumeFactor : 1;

  player.play = function() {
    player.volume(player.targetVolume());
    listenToVolumeSetting();

    return originalPlay.call(player);
  };

  player.playAndFadeIn = function(duration) {
    if (!player.paused() && !player.intendingToPause()) {
      return new jQuery.Deferred().resolve().promise();
    }

    player.intendToPlay();
    player.volume(0);

    return $.when(originalPlay.call(player)).then(function() {
      listenToVolumeSetting();
      return player.fadeVolume(player.targetVolume(), duration).then(null, function() {
        return new jQuery.Deferred().resolve().promise();
      });
    });
  };

  player.pause = function() {
    stopListeningToVolumeSetting();
    originalPause.call(player);
  };

  player.fadeOutAndPause = function(duration) {
    if (player.paused() && !player.intendingToPlay()) {
      return new jQuery.Deferred().resolve().promise();
    }

    player.intendToPause();
    stopListeningToVolumeSetting();

    return player.fadeVolume(0, duration).always(function() {
      return player.ifIntendingToPause().then(function() {
        originalPause.call(player);
      });
    });
  };

  player.changeVolumeFactor = function(factor, duration) {
    volumeFactor = factor;
    return player.fadeVolume(player.targetVolume(), duration);
  };

  player.targetVolume = function() {
    return settings.get('volume') * volumeFactor;
  };

  function listenToVolumeSetting() {
    settings.on('change:volume', onVolumeChange);
  }

  function stopListeningToVolumeSetting() {
    settings.off('change:volume', onVolumeChange);
  }

  function onVolumeChange(model, value) {
    player.fadeVolume(player.targetVolume(), 40);
  }
};

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
pageflow-0.11.4 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.11.3 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.11.2 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.11.1 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.11.0 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.10.0 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.9.2 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.9.1 app/assets/javascripts/pageflow/media_player/volume_binding.js
pageflow-0.9.0 app/assets/javascripts/pageflow/media_player/volume_binding.js