diff --git a/lua/file_browser.lua b/lua/file_browser.lua index 6289828f..944a692e 100644 --- a/lua/file_browser.lua +++ b/lua/file_browser.lua @@ -13,6 +13,8 @@ local theme = require("theme") local screen = require("screen") local filesystem = require("filesystem") local playlist_iterator = require("playlist_iterator") +local img = require("images") + return screen:new { create_ui = function(self) @@ -58,8 +60,21 @@ return screen:new { } end + local get_icon_func = function(item) + if item:is_directory() then + return img.file_directory + elseif playlist_iterator:is_playlist(item) then + return img.file_playlist + elseif playback.is_playable(item:filepath()) then + return img.file_music + else + return img.unknown + end + end + widgets.InfiniteList(self.root, self.iterator, { focus_first_item = true, + get_icon = get_icon_func, callback = function(item) return function() local is_dir = item:is_directory() diff --git a/lua/images.lua b/lua/images.lua index 69bd8e4b..21a1aa9a 100644 --- a/lua/images.lua +++ b/lua/images.lua @@ -31,6 +31,8 @@ local img = { menu = lvgl.ImgData("//lua/img/menu.png"), file_directory = lvgl.ImgData("//lua/img/file_icons/directory.png"), file_playlist = lvgl.ImgData("//lua/img/file_icons/playlist.png"), + file_music = lvgl.ImgData("//lua/img/file_icons/music.png"), + unknown = lvgl.ImgData("//lua/img/file_icons/unknown.png"), } return img diff --git a/lua/img/file_icons/music.png b/lua/img/file_icons/music.png new file mode 100644 index 00000000..b77e8752 Binary files /dev/null and b/lua/img/file_icons/music.png differ diff --git a/lua/img/file_icons/unknown.png b/lua/img/file_icons/unknown.png new file mode 100644 index 00000000..af229f36 Binary files /dev/null and b/lua/img/file_icons/unknown.png differ