parent
							
								
									02954cd40b
								
							
						
					
					
						commit
						0975c2cdbd
					
				| 
		 After Width: | Height: | Size: 3.5 KiB  | 
@ -0,0 +1,85 @@ | 
				
			|||||||
 | 
					local backstack = require("backstack") | 
				
			||||||
 | 
					local font = require("font") | 
				
			||||||
 | 
					local lvgl = require("lvgl") | 
				
			||||||
 | 
					local playback = require("playback") | 
				
			||||||
 | 
					local screen = require("screen") | 
				
			||||||
 | 
					local widgets = require("widgets") | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return screen:new { | 
				
			||||||
 | 
					  create_ui = function(self) | 
				
			||||||
 | 
					    self.root = lvgl.Object(nil, { | 
				
			||||||
 | 
					      flex = { | 
				
			||||||
 | 
					        flex_direction = "column", | 
				
			||||||
 | 
					        flex_wrap = "wrap", | 
				
			||||||
 | 
					        justify_content = "center", | 
				
			||||||
 | 
					        align_items = "center", | 
				
			||||||
 | 
					        align_content = "center", | 
				
			||||||
 | 
					      }, | 
				
			||||||
 | 
					      w = lvgl.HOR_RES(), | 
				
			||||||
 | 
					      h = lvgl.VER_RES(), | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					    self.root:center() | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    self.status_bar = widgets.StatusBar(self, { | 
				
			||||||
 | 
					      back_cb = backstack.pop, | 
				
			||||||
 | 
					      transparent_bg = true, | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local info = lvgl.List(self.root, { | 
				
			||||||
 | 
					      w = lvgl.PCT(100), | 
				
			||||||
 | 
					      h = lvgl.PCT(100), | 
				
			||||||
 | 
					      flex_grow = 1, | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Use buttons so we can scroll through the list, and labels so we can | 
				
			||||||
 | 
					    -- change the text as the track changes. | 
				
			||||||
 | 
					    local label = function(text) | 
				
			||||||
 | 
					      local b = info:add_btn(nil, "") | 
				
			||||||
 | 
					      local ret = b:Label { | 
				
			||||||
 | 
					        w = lvgl.PCT(100), | 
				
			||||||
 | 
					        h = lvgl.SIZE_CONTENT, | 
				
			||||||
 | 
					        text = text, | 
				
			||||||
 | 
					        text_font = font.fusion_10, | 
				
			||||||
 | 
					        text_align = 1, -- left | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					      return ret | 
				
			||||||
 | 
					    end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local album_artist = label("Loading...") | 
				
			||||||
 | 
					    local genre = label("") | 
				
			||||||
 | 
					    local disc = label("") | 
				
			||||||
 | 
					    local tracknum = label("") | 
				
			||||||
 | 
					    local encoding = label("") | 
				
			||||||
 | 
					    local sample_rate = label("") | 
				
			||||||
 | 
					    local num_channels = label("") | 
				
			||||||
 | 
					    local bits_per_sample = label("") | 
				
			||||||
 | 
					    local path = label("") | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    self.bindings = self.bindings + { | 
				
			||||||
 | 
					      playback.track:bind(function(track) | 
				
			||||||
 | 
					        if not track then | 
				
			||||||
 | 
					          return | 
				
			||||||
 | 
					        end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        -- Genres are stored in a table of (genre, bool) pairs | 
				
			||||||
 | 
					        local function genres(tbl) | 
				
			||||||
 | 
					          local all = {} | 
				
			||||||
 | 
					          for item,_ in pairs(tbl) do | 
				
			||||||
 | 
					            table.insert(all, item) | 
				
			||||||
 | 
					          end | 
				
			||||||
 | 
					          return table.concat(all, ", ") | 
				
			||||||
 | 
					        end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        album_artist:set { text = "Album artist: " .. (track.album_artist or "") } | 
				
			||||||
 | 
					        genre:set { text = "Genre: " .. (track.genre and genres(track.genre) or "") } | 
				
			||||||
 | 
					        disc:set { text = "Disc: " .. (track.disc or "") } | 
				
			||||||
 | 
					        tracknum:set { text = "Track: " .. (track.track or "") } | 
				
			||||||
 | 
					        encoding:set { text = "Encoding: " .. (track.encoding or "") } | 
				
			||||||
 | 
					        sample_rate:set { text = "Sample rate: " .. (track.sample_rate or "") } | 
				
			||||||
 | 
					        num_channels:set { text = "Channels: " .. (track.num_channels or "") } | 
				
			||||||
 | 
					        bits_per_sample:set { text = "Bits per sample: " .. (track.bits_per_sample or "") } | 
				
			||||||
 | 
					        path:set { text = "Path: " .. (track.uri or "") } | 
				
			||||||
 | 
					      end), | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  end, | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue