summaryrefslogtreecommitdiff
path: root/lua/playing.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/playing.lua')
-rw-r--r--lua/playing.lua39
1 files changed, 28 insertions, 11 deletions
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