1
0
Fork 0

Player seek feature

This commit is contained in:
Gregory Eremin 2012-09-02 02:38:28 +04:00
parent 9f770892f8
commit e2e2868309
5 changed files with 50 additions and 6 deletions

View File

@ -3,6 +3,7 @@ class BeatHaven.Models.Player extends Backbone.Model
playlist: null
tracks: null
current_track: null
move_it_mousedown: false
initialize: ->
@playlist = new BeatHaven.Collections.Tracklist()
@ -15,11 +16,14 @@ class BeatHaven.Models.Player extends Backbone.Model
else
this.play_something()
else
if @current_track?
@current_track.get("sm_obj").stop()
$(".player .progress-bar .bar").css(width: 0)
@current_track = track
@current_track.get("sm_obj").play()
if @current_track? and @current_track == track
@current_track.get("sm_obj").resume()
else
if @current_track?
@current_track.get("sm_obj").stop()
$(".player .progress-bar .bar").css(width: 0)
@current_track = track
@current_track.get("sm_obj").play()
$(".player .controls .play").css(display: "none")
$(".player .controls .pause").css(display: "inline-block")
@ -29,6 +33,11 @@ class BeatHaven.Models.Player extends Backbone.Model
$(".player .controls .play").css(display: "inline-block")
$(".player .controls .pause").css(display: "none")
seek: (percent) ->
return false unless @current_track?
position = @current_track.get("duration") * 1000 * percent
@current_track.get("sm_obj").setPosition(position)
next: ->
return false unless @current_track?
if @playlist_on
@ -56,9 +65,11 @@ class BeatHaven.Models.Player extends Backbone.Model
$(".player .progress-bar .title").html("#{params.artists.join(', ')} — #{params.track}")
update_buffer_bar: (event) ->
# not implemented
false
update_progress_bar: (obj) ->
return false if @move_it_mousedown
percent = obj.position / obj.duration * 100
$(".player .progress-bar .bar").css(width: "#{percent}%")

View File

@ -6,6 +6,10 @@ class BeatHaven.Models.Track extends Backbone.Model
else
this.find_and_start()
pause: ->
BH.Player.pause()
this.node().addClass("paused")
start: ->
BH.Player.update_title(
artists: @.get("artists")
@ -14,7 +18,7 @@ class BeatHaven.Models.Track extends Backbone.Model
unless @.get("sm_obj")?
this.add_to_library(autoload: true, autoplay: false)
BH.Player.play(this)
$(".artist-page .tracks li[data-id]").removeClass("now-playing")
$(".artist-page .tracks li[data-id]").removeClass("now-playing").removeClass("paused")
this.node().addClass("now-playing")
find_and_start: ->

View File

@ -7,3 +7,16 @@ $ ->
BH.Player.pause()
$(".player .controls .next").live "click", (e) ->
BH.Player.next()
$(".player .move-it")
.live "mousedown", (e) ->
BH.Player.move_it_mousedown = true
.live "mouseup", (e) ->
BH.Player.move_it_mousedown = false
return false unless BH.Player.current_track?
percent = e.offsetX / $(this).width()
BH.Player.seek(percent)
.live "mousemove", (e) ->
return false unless BH.Player.move_it_mousedown and BH.Player.current_track?
percent = e.offsetX / $(this).width() * 100
$(".player .progress-bar .bar").css(width: "#{percent}%")

View File

@ -3,3 +3,7 @@ $ ->
e.preventDefault()
id = parseInt($(this).parent().data("id"), 10)
BH.Player.tracks.get(id).play()
$(".track-pause").live "click", (e) ->
e.preventDefault()
id = parseInt($(this).parent().data("id"), 10)
BH.Player.tracks.get(id).pause()

View File

@ -39,6 +39,18 @@
opacity: 1;
}
}
&.paused {
.track-play {
display: block;
i {
opacity: 1;
}
}
.track-pause {
display: none;
}
}
}
.btn-round {