Pass through channel name, icon changes and allow EIT to create missing channels (however these need to be overidden)

This commit is contained in:
Adam Sutton 2012-05-28 16:58:13 +01:00
parent 36a312b1e0
commit 20097dd255
2 changed files with 32 additions and 19 deletions

View file

@ -1162,7 +1162,7 @@ int epg_channel_set_name ( epg_channel_t *channel, const char *name )
if ( !channel->name || strcmp(channel->name, name) ) {
if (channel->name) free(channel->name);
channel->name = strdup(name);
// NOTE: does not remap
// TODO: need to allow overriding of EIT created channels
if ( !channel->channel ) {
LIST_FOREACH(ch, &channel_unmapped, ch_eulink) {
if ( _epg_channel_cmp(channel, ch) ) {
@ -1171,11 +1171,31 @@ int epg_channel_set_name ( epg_channel_t *channel, const char *name )
}
}
}
// pass through
if ( channel->channel ) {
save |= channel_rename(channel->channel, name);
}
save |= 1;
}
return save;
}
int epg_channel_set_icon ( epg_channel_t *channel, const char *icon )
{
int save = 0;
if ( !channel | !icon ) return 0;
if ( !channel->icon || strcmp(channel->icon, icon) ) {
if ( channel->icon ) free(channel->icon);
channel->icon = strdup(icon);
// pass through
if ( channel->channel ) {
channel_set_icon(channel->channel, icon);
}
save = 1;
}
return save;
}
int epg_channel_set_channel ( epg_channel_t *ec, channel_t *ch )
{
int save = 0;
@ -1204,18 +1224,6 @@ int epg_channel_set_channel ( epg_channel_t *ec, channel_t *ch )
return save;
}
int epg_channel_set_icon ( epg_channel_t *channel, const char *icon )
{
int save = 0;
if ( !channel | !icon ) return 0;
if ( !channel->icon || strcmp(channel->icon, icon) ) {
if ( channel->icon ) free(channel->icon);
channel->icon = strdup(icon);
save = 1;
}
return save;
}
epg_broadcast_t *epg_channel_get_broadcast
( epg_channel_t *channel, time_t start, time_t stop, int create, int *save )
{

View file

@ -32,9 +32,9 @@ static const char* _eit_name ( void )
return "eit";
}
static void _eit_episode_uri ( char *uri, const char *title, const char *summary )
static void _eit_episode_uri
( char *uri, const char *title, const char *summary )
{
}
// called from dvb_tables.c
@ -43,6 +43,7 @@ void eit_callback ( channel_t *ch, int id, time_t start, time_t stop,
const char *extitem, const char *extdesc,
const char *exttext ) {
int save = 0;
epg_channel_t *ec;
epg_broadcast_t *ebc;
epg_episode_t *ee;
const char *summary = NULL;
@ -53,10 +54,13 @@ void eit_callback ( channel_t *ch, int id, time_t start, time_t stop,
//if (epggrab_eit_disabled) return;
/* Channel */
if (!ch->ch_epg_channel) {
// TODO: create??
return;
ec = ch->ch_epg_channel;
if (!ec) {
ec = epg_channel_find_by_uri(ch->ch_name, 1, &save);
if (ec)
epg_channel_set_channel(ec, ch);
}
if (!ec) return;
/* Find broadcast */
ebc = epg_channel_get_broadcast(ch->ch_epg_channel, start, stop, 1, &save);
@ -67,7 +71,8 @@ void eit_callback ( channel_t *ch, int id, time_t start, time_t stop,
/* Create/Replace episode */
if ( !ebc->episode ||
!epg_episode_fuzzy_match(ebc->episode, uri, title, summary, description) ) {
!epg_episode_fuzzy_match(ebc->episode, uri, title,
summary, description) ) {
/* Create episode */
ee = epg_episode_find_by_uri(uri, 1, &save);