diff --git a/lua/playing.lua b/lua/playing.lua index bb3f9f27..df15545a 100644 --- a/lua/playing.lua +++ b/lua/playing.lua @@ -5,6 +5,15 @@ local font = require("font") local playback = require("playback") local queue = require("queue") +local img = { + play = "//lua/img/play.png", + pause = "//lua/img/pause.png", + next = "//lua/img/next.png", + next_disabled = "//lua/img/next_disabled.png", + prev = "//lua/img/prev.png", + prev_disabled = "//lua/img/prev_disabled.png", +} + return function(opts) local screen = {} screen.root = lvgl.Object(nil, { @@ -106,19 +115,20 @@ return function(opts) controls:Object({ flex_grow = 1, h = 1 }) -- spacer - controls:Image { - src = "//lua/img/prev.png", - } + local prev_btn = controls:Button {} + prev_btn:onClicked(queue.previous) + local prev_img = prev_btn:Image { src = img.prev_disabled } + local play_pause_btn = controls:Button {} play_pause_btn:onClicked(function() playback.playing:set(not playback.playing:get()) end) - local play_pause_img = play_pause_btn:Image { - src = "//lua/img/pause.png", - } - controls:Image { - src = "//lua/img/next.png", - } + local play_pause_img = play_pause_btn:Image { src = img.pause } + + local next_btn = controls:Button {} + next_btn:onClicked(queue.next) + local next_img = next_btn:Image { src = img.next_disabled } + controls:Object({ flex_grow = 1, h = 1 }) -- spacer local end_time = controls:Label { @@ -136,9 +146,9 @@ return function(opts) screen.bindings = { playback.playing:bind(function(playing) if playing then - play_pause_img:set_src("//lua/img/pause.png") + play_pause_img:set_src(img.pause) else - play_pause_img:set_src("//lua/img/play.png") + play_pause_img:set_src(img.play) end end), playback.position:bind(function(pos) @@ -162,6 +172,13 @@ return function(opts) queue.position:bind(function(pos) if not pos then return end playlist_pos:set { text = tostring(pos) } + + next_img:set_src( + pos < queue.size:get() and img.next or img.next_disabled + ) + prev_img:set_src( + pos > 1 and img.prev or img.prev_disabled + ) end), queue.size:bind(function(num) if not num then return end