src/widgets/PopcornPlayer.js
author veltr
Mon, 17 Sep 2012 22:44:59 +0900
branchplayers-as-widgets
changeset 958 2aa7fdb0762a
child 959 ee11ed1b739e
permissions -rw-r--r--
Commit before branch switch (for tests)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
958
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     1
IriSP.Widgets.PopcornPlayer = function(player, config) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     2
    IriSP.Widgets.Widget.call(this, player, config);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     3
};
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     4
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     5
IriSP.Widgets.PopcornPlayer.prototype = new IriSP.Widgets.Widget();
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     6
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     7
IriSP.Widgets.PopcornPlayer.prototype.defaults = {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     8
}
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
     9
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    10
IriSP.Widgets.PopcornPlayer.prototype.draw = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    11
    var _tmpId = Popcorn.guid("video"),
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    12
        _videoEl = IriSP.jQuery('<video>');
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    13
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    14
    if (typeof this.video === "undefined") {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    15
        this.video = this.media.video;
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    16
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    17
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    18
    if (this.url_transform) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    19
        this.video = this.url_transform(this.video);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    20
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    21
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    22
    _videoEl.attr({
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    23
        "src" : this.video,
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    24
        "id" : _tmpId
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    25
    })
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    26
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    27
    if(this.width) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    28
        _videoEl.attr("width", this.width);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    29
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    30
    if(this.height) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    31
        _videoEl.attr("height", this.height);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    32
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    33
    this.$.append(_videoEl);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    34
    var _popcorn = Popcorn("#" + _tmpId);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    35
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    36
    // Binding functions to Popcorn
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    37
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    38
    this.media.getCurrentTime = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    39
        return new IriSP.Model.Time(1000*_popcorn.currentTime());
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    40
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    41
    this.media.getVolume = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    42
        return _popcorn.volume();
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    43
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    44
    this.media.getPaused = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    45
        return _popcorn.media.paused;
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    46
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    47
    this.media.getMuted = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    48
        return _popcorn.muted();
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    49
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    50
    this.media.setCurrentTime = function(_milliseconds) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    51
        return _popcorn.currentTime(_milliseconds / 1000);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    52
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    53
    this.media.setVolume = function(_vol) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    54
        return _popcorn.volume(_vol);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    55
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    56
    this.media.mute = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    57
        return _popcorn.muted(true);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    58
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    59
    this.media.unmute = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    60
        return _popcorn.muted(false);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    61
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    62
    this.media.play = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    63
        return _popcorn.play();
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    64
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    65
    this.media.pause = function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    66
        return _popcorn.pause();
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    67
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    68
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    69
    // Binding Popcorn events to media
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    70
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    71
    var _media = this.media;
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    72
    _popcorn.on("timeupdate", function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    73
        _media.trigger("timeupdate", _media.getCurrentTime());
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    74
    });
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    75
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    76
    function simpleEventBind(_eventname) {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    77
        _popcorn.on(_eventname, function() {
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    78
            _media.trigger(_eventname);
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    79
        });
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    80
    }
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    81
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    82
    simpleEventBind("play");
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    83
    simpleEventBind("pause");
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    84
    simpleEventBind("seeked");
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    85
    simpleEventBind("loadedmetadata");
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    86
    simpleEventBind("volumechange");
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    87
    
2aa7fdb0762a Commit before branch switch (for tests)
veltr
parents:
diff changeset
    88
}