show a preview of the new track position while scrubbing
This commit is contained in:
+18
-8
@@ -16,6 +16,11 @@ local img = {
|
||||
repeat_src = lvgl.ImgData("//lua/img/repeat.png"), -- repeat is a reserved word
|
||||
}
|
||||
|
||||
local format_time = function(time)
|
||||
time = math.floor(time)
|
||||
return string.format("%d:%02d", time // 60, time % 60)
|
||||
end
|
||||
|
||||
local is_now_playing_shown = false
|
||||
|
||||
local icon_enabled_class = "icon_enabled"
|
||||
@@ -128,6 +133,16 @@ return screen:new {
|
||||
if not track.duration then return end
|
||||
playback.position:set(scrubber:value() / 100 * track.duration)
|
||||
end)
|
||||
scrubber:onevent(lvgl.EVENT.VALUE_CHANGED, function()
|
||||
if scrubber:is_dragged() then
|
||||
local track = playback.track:get()
|
||||
if not track then return end
|
||||
if not track.duration then return end
|
||||
cur_time:set {
|
||||
text = format_time(scrubber:value() / 100 * track.duration)
|
||||
}
|
||||
end
|
||||
end)
|
||||
|
||||
local controls = self.root:Object {
|
||||
flex = {
|
||||
@@ -142,7 +157,6 @@ return screen:new {
|
||||
pad_all = 2,
|
||||
}
|
||||
|
||||
|
||||
controls:Object({ flex_grow = 1, h = 1 }) -- spacer
|
||||
|
||||
local repeat_btn = controls:Button {}
|
||||
@@ -187,10 +201,6 @@ return screen:new {
|
||||
controls:Object({ flex_grow = 1, h = 1 }) -- spacer
|
||||
|
||||
|
||||
local format_time = function(time)
|
||||
return string.format("%d:%02d", time // 60, time % 60)
|
||||
end
|
||||
|
||||
self.bindings = {
|
||||
playback.playing:bind(function(playing)
|
||||
if playing then
|
||||
@@ -201,10 +211,10 @@ return screen:new {
|
||||
end),
|
||||
playback.position:bind(function(pos)
|
||||
if not pos then return end
|
||||
cur_time:set {
|
||||
text = format_time(pos)
|
||||
}
|
||||
if not scrubber:is_dragged() then
|
||||
cur_time:set {
|
||||
text = format_time(pos)
|
||||
}
|
||||
local track = playback.track:get()
|
||||
if not track then return end
|
||||
if not track.duration then return end
|
||||
|
||||
Reference in New Issue
Block a user