diff options
| -rw-r--r-- | main.lua | 62 | 
1 files changed, 47 insertions, 15 deletions
@@ -143,7 +143,8 @@ local function add_object(obj)  				group_type='category',  				id=obj.parent_id,  				parent_id=obj.section .. ':category:0', -				name='*CATCHALL*', +				-- non-ascii symbol to sort near end +				name='🞷CATCHALL🞷',  			})  		end  	end @@ -456,13 +457,6 @@ local function cursor_to_object(id)  	end  end -local function prev_menu() -	if depth > 1 then -		depth = depth - 1 -		update_osd() -	end -end -  local function push_menu(t)  	local menu = {  		options={}, @@ -541,12 +535,21 @@ local function add_programme(opt, time)  	if opt.epg_channel_id then  		local prog = epg_programme(opt.epg_channel_id, time)  		if prog then -			opt = copy_table(opt)  			opt.info = asscape(prog.title)  		end  	end +end -	return opt +local function count_group_children(group) +	if group.children and not group.lazy then +		return tostring(#group.children) +	elseif group.id == 'favourites' then +		local c = 0 +		for _ in pairs(favourites) do +			c = c + 1 +		end +		return tostring(c - 1) -- remove dummy value +	end  end  local function favourites_group_menu_options(group) @@ -562,13 +565,25 @@ local function favourites_group_menu_options(group)  				curr = objects[curr.parent_id]  				path[#path+1] = curr  			end + +			obj = copy_table(obj) +			add_programme(obj, time) +			local c = count_group_children(obj) +			if c then +				obj.info = c +			end  			if #path > 0 and curr.parent_id == 'root' then  				reverse(path) -				obj = copy_table(obj)  				obj.path = path  			end - -			options[#options+1] = add_programme(obj, time) +			options[#options+1] = obj +		elseif id ~= 'oi' then -- ignore dummy value +			-- display missing favourites so that they can be +			-- removed +			options[#options+1] = { +				id=id, +				name='🞷MISSING🞷 ' .. id, +			}  		end  	end  	return options @@ -633,7 +648,13 @@ local function group_menu_options(group)  	local options = {}  	local time = os.time()  	for i, v in ipairs(group.children) do -		options[i] = add_programme(v, time) +		v = copy_table(v) +		add_programme(v, time) +		local c = count_group_children(v) +		if c then +			v.info = c +		end +		options[i] = v  	end  	return options  end @@ -648,6 +669,17 @@ local function push_group_menu(group)  	update_osd()  end +local function prev_menu() +	depth = depth - 1 + +	if depth == 0 then +		-- reset main menu +		push_group_menu(objects[menus[1].group_id]) +	else +		update_osd() +	end +end +  local function play_stream(stream)  	-- add a per-file option containing the stream id, allowing it to be  	-- retrieved when a start-file event is received @@ -673,7 +705,7 @@ local function select_option()  	if opt.type == 'group' then  		push_group_menu(opt) -	else +	elseif opt.type == 'stream' then  		play_stream(opt)  	end  end  | 
