Use a fix scrubber range on the playing screen

this ensure that the amount the scrubber moves for each tick of the
input remains consistent, even when tracks have very different durations
custom
jacqueline 1 year ago
parent d1bf21fcf7
commit 3276d113fc
  1. 13
      lua/playing.lua

@ -123,7 +123,10 @@ return screen:new {
} }
scrubber:onevent(lvgl.EVENT.RELEASED, function() scrubber:onevent(lvgl.EVENT.RELEASED, function()
playback.position:set(scrubber:value()) local track = playback.track:get()
if not track then return end
if not track.duration then return end
playback.position:set(scrubber:value() / 100 * track.duration)
end) end)
local controls = self.root:Object { local controls = self.root:Object {
@ -202,7 +205,10 @@ return screen:new {
text = format_time(pos) text = format_time(pos)
} }
if not scrubber:is_dragged() then if not scrubber:is_dragged() then
scrubber:set { value = pos } local track = playback.track:get()
if not track then return end
if not track.duration then return end
scrubber:set { value = pos / track.duration * 100 }
end end
end), end),
playback.track:bind(function(track) playback.track:bind(function(track)
@ -212,9 +218,6 @@ return screen:new {
} }
title:set { text = track.title } title:set { text = track.title }
artist:set { text = track.artist } artist:set { text = track.artist }
scrubber:set {
range = { min = 0, max = track.duration }
}
end), end),
queue.position:bind(function(pos) queue.position:bind(function(pos)
if not pos then return end if not pos then return end

Loading…
Cancel
Save