Add option to delete stale DVB adapters

This commit is contained in:
Andreas Öman 2008-05-02 07:58:28 +00:00
parent 4afc4092a7
commit ff4b32c8b8
4 changed files with 74 additions and 0 deletions

View file

@ -224,6 +224,14 @@ ajax_adaptereditor(http_connection_t *hc, http_reply_t *hr,
"dvb_adapter_rename('%s', '%s');",
tda->tda_identifier, tda->tda_displayname);
if(tda->tda_rootpath == NULL) {
tcp_qprintf(tq, " / ");
ajax_a_jsfuncf(tq, "Delete adapter...",
"dvb_adapter_delete('%s', '%s');",
tda->tda_identifier, tda->tda_displayname);
}
tcp_qprintf(tq, "</div>");
/* Clone adapter */
@ -936,6 +944,30 @@ ajax_dvbadapterclone(http_connection_t *hc, http_reply_t *hr,
}
/**
* Delete adapter
*/
static int
ajax_dvbadapterdelete(http_connection_t *hc, http_reply_t *hr,
const char *remain, void *opaque)
{
tcp_queue_t *tq = &hr->hr_tq;
th_dvb_adapter_t *tda;
if(remain == NULL || (tda = dvb_adapter_find_by_identifier(remain)) == NULL)
return HTTP_STATUS_NOT_FOUND;
tcp_qprintf(tq, "var o = $('summary_%s'); o.parentNode.removeChild(o);\r\n",
tda->tda_identifier);
tcp_qprintf(tq, "$('dvbadaptereditor').innerHTML ='';\r\n");
dvb_tda_destroy(tda);
http_output(hc, hr, "text/javascript; charset=UTF8", NULL, 0);
return 0;
}
/**
*
*/
@ -964,5 +996,7 @@ ajax_config_dvb_init(void)
AJAX_ACCESS_CONFIG);
http_path_add("/ajax/dvbadapterclone", NULL, ajax_dvbadapterclone,
AJAX_ACCESS_CONFIG);
http_path_add("/ajax/dvbadapterdelete", NULL, ajax_dvbadapterdelete,
AJAX_ACCESS_CONFIG);
}

View file

@ -85,6 +85,13 @@ function dvb_adapter_rename(id, oldname)
}
}
function dvb_adapter_delete(id, name)
{
if(confirm("Are you sure you want to delete '" + name + "'") == true) {
a = new Ajax.Request('/ajax/dvbadapterdelete/' + id);
}
}
function makedivinput(id, url)
{
$(id).innerHTML='<div style="width:100%; overflow:auto">' +

31
dvb.c
View file

@ -757,3 +757,34 @@ dvb_tda_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src)
}
dvb_tda_save(dst);
}
/**
*
*/
int
dvb_tda_destroy(th_dvb_adapter_t *tda)
{
th_dvb_mux_instance_t *tdmi;
char buf[400];
if(tda->tda_rootpath != NULL)
return -1;
snprintf(buf, sizeof(buf), "%s/dvbadapters/%s",
settings_dir, tda->tda_identifier);
unlink(buf);
while((tdmi = LIST_FIRST(&tda->tda_muxes)) != NULL)
dvb_mux_destroy(tdmi);
TAILQ_REMOVE(&dvb_adapters, tda, tda_global_link);
free(tda->tda_identifier);
free(tda->tda_displayname);
free(tda);
return 0;
}

2
dvb.h
View file

@ -70,4 +70,6 @@ void tdmi_stop(th_dvb_mux_instance_t *tdmi);
void dvb_tda_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
int dvb_tda_destroy(th_dvb_adapter_t *tda);
#endif /* DVB_H_ */