From 15679510e196a44234b3929ca8420b4e5e011b27 Mon Sep 17 00:00:00 2001 From: Thies Schroeder Date: Fri, 18 Feb 2011 22:11:24 +0100 Subject: [PATCH] add functionality to delete recordings --- src/dvr/dvr.h | 2 ++ src/dvr/dvr_db.c | 15 +++++++++++++++ src/webui/extjs.c | 13 +++++++++++++ src/webui/static/app/dvr.js | 23 +++++++++++++++++++++++ 4 files changed, 53 insertions(+) diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 888fc986..f31249ff 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -274,6 +274,8 @@ void dvr_extra_time_pre_set(dvr_config_t *cfg, int d); void dvr_extra_time_post_set(dvr_config_t *cfg, int d); +int dvr_entry_delete(dvr_entry_t *de); + /** * Query interface */ diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index c7933c62..254c7745 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -1160,3 +1160,18 @@ dvr_val2pri(dvr_prio_t v) { return val2str(v, priotab) ?: "invalid"; } + +int +dvr_entry_delete(dvr_entry_t *de) +{ + int result; + tvhlog(LOG_DEBUG, "dvr_db", "Going to delete recording '%s'", de->de_filename); + result = unlink(de->de_filename); + if( result == 0 || result == ENOENT ) + { + dvr_entry_remove(de); + } + return result; + +} + diff --git a/src/webui/extjs.c b/src/webui/extjs.c index e6111064..09349a05 100644 --- a/src/webui/extjs.c +++ b/src/webui/extjs.c @@ -804,6 +804,19 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque) out = htsmsg_create_map(); htsmsg_add_u32(out, "success", 1); + + } else if(!strcmp(op, "deleteEntry")) { + s = http_arg_get(&hc->hc_req_args, "entryId"); + + if((de = dvr_entry_find_by_id(atoi(s))) == NULL) { + pthread_mutex_unlock(&global_lock); + return HTTP_STATUS_BAD_REQUEST; + } + + dvr_entry_delete(de); + + out = htsmsg_create_map(); + htsmsg_add_u32(out, "success", 1); } else if(!strcmp(op, "createEntry")) { diff --git a/src/webui/static/app/dvr.js b/src/webui/static/app/dvr.js index 26c578d7..7439c7a8 100644 --- a/src/webui/static/app/dvr.js +++ b/src/webui/static/app/dvr.js @@ -98,6 +98,14 @@ tvheadend.dvrDetails = function(entry) { text: "Abort recording" }); break; + case 'completedError': + case 'completed': + win.addButton({ + handler: deleteEvent, + text: "Delete recording" + + }); + break; } @@ -119,6 +127,21 @@ tvheadend.dvrDetails = function(entry) { } }); } + + function deleteEvent() { + Ext.Ajax.request({ + url: 'dvr', + params: {entryId: entry.id, op: 'deleteEntry'}, + + success:function(response, options) { + win.close();v + }, + + failure:function(response, options) { + Ext.MessageBox.alert('DVR', response.statusText); + } + }); + } }