clean up the PVR recop interface slightly. We want to have a clear distinction between aborting a current recording and clearing all status
This commit is contained in:
parent
0ce7637407
commit
26cee09253
3 changed files with 38 additions and 25 deletions
12
htmlui.c
12
htmlui.c
|
@ -654,7 +654,15 @@ page_event(http_connection_t *hc, const char *remain, void *opaque)
|
|||
epg_unlock();
|
||||
return HTTP_STATUS_UNAUTHORIZED;
|
||||
}
|
||||
cmd = RECOP_CANCEL;
|
||||
cmd = RECOP_ABORT;
|
||||
}
|
||||
|
||||
if(http_arg_get(&hc->hc_url_args, "clear")) {
|
||||
if(!html_verify_access(hc, "record-events")) {
|
||||
epg_unlock();
|
||||
return HTTP_STATUS_UNAUTHORIZED;
|
||||
}
|
||||
cmd = RECOP_CLEAR;
|
||||
}
|
||||
|
||||
if(cmd != -1)
|
||||
|
@ -723,7 +731,7 @@ page_event(http_connection_t *hc, const char *remain, void *opaque)
|
|||
|
||||
default:
|
||||
tcp_qprintf(&tq,
|
||||
"<input type=\"submit\" class=\"knapp\" name=\"cancel\" "
|
||||
"<input type=\"submit\" class=\"knapp\" name=\"clear\" "
|
||||
"value=\"Clear error status\">");
|
||||
break;
|
||||
|
||||
|
|
47
pvr.c
47
pvr.c
|
@ -53,7 +53,6 @@ struct pvr_rec_list pvrr_global_list;
|
|||
static void pvr_database_save(pvr_rec_t *pvrr);
|
||||
static void pvr_database_erase(pvr_rec_t *pvrr);
|
||||
static void pvr_database_load(void);
|
||||
static void pvr_unrecord(pvr_rec_t *pvrr);
|
||||
static void pvrr_fsm(pvr_rec_t *pvrr);
|
||||
static void pvrr_subscription_callback(struct th_subscription *s,
|
||||
subscription_event_t event,
|
||||
|
@ -156,15 +155,14 @@ pvr_free(pvr_rec_t *pvrr)
|
|||
|
||||
|
||||
static void
|
||||
pvr_unrecord(pvr_rec_t *pvrr)
|
||||
pvr_abort(pvr_rec_t *pvrr)
|
||||
{
|
||||
if(pvrr->pvrr_status == HTSTV_PVR_STATUS_SCHEDULED) {
|
||||
pvr_free(pvrr);
|
||||
} else {
|
||||
pvrr->pvrr_error = HTSTV_PVR_STATUS_ABORTED;
|
||||
pvrr_fsm(pvrr);
|
||||
}
|
||||
|
||||
if(pvrr->pvrr_status != HTSTV_PVR_STATUS_RECORDING)
|
||||
return;
|
||||
|
||||
pvrr->pvrr_error = HTSTV_PVR_STATUS_ABORTED;
|
||||
pvrr_fsm(pvrr);
|
||||
|
||||
pvr_database_save(pvrr);
|
||||
clients_send_ref(-1);
|
||||
}
|
||||
|
@ -225,31 +223,38 @@ pvr_event_record_op(th_channel_t *ch, event_t *e, recop_t op)
|
|||
break;
|
||||
}
|
||||
|
||||
if(pvrr != NULL) {
|
||||
if(pvrr != NULL && op == RECOP_CLEAR) {
|
||||
switch(pvrr->pvrr_status) {
|
||||
case HTSTV_PVR_STATUS_ABORTED:
|
||||
case HTSTV_PVR_STATUS_NO_TRANSPONDER:
|
||||
case HTSTV_PVR_STATUS_FILE_ERROR:
|
||||
case HTSTV_PVR_STATUS_DISK_FULL:
|
||||
case HTSTV_PVR_STATUS_BUFFER_ERROR:
|
||||
case HTSTV_PVR_STATUS_SCHEDULED:
|
||||
pvr_database_erase(pvrr);
|
||||
pvr_free(pvrr);
|
||||
pvrr = NULL;
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
switch(op) {
|
||||
case RECOP_TOGGLE:
|
||||
if(pvrr != NULL) {
|
||||
pvr_unrecord(pvrr);
|
||||
return;
|
||||
case RECOP_CLEAR:
|
||||
if(pvrr != NULL) switch(pvrr->pvrr_status) {
|
||||
case HTSTV_PVR_STATUS_ABORTED:
|
||||
case HTSTV_PVR_STATUS_NO_TRANSPONDER:
|
||||
case HTSTV_PVR_STATUS_FILE_ERROR:
|
||||
case HTSTV_PVR_STATUS_DISK_FULL:
|
||||
case HTSTV_PVR_STATUS_BUFFER_ERROR:
|
||||
case HTSTV_PVR_STATUS_SCHEDULED:
|
||||
pvr_database_erase(pvrr);
|
||||
pvr_free(pvrr);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return;
|
||||
|
||||
case RECOP_CANCEL:
|
||||
case RECOP_ABORT:
|
||||
if(pvrr != NULL)
|
||||
pvr_unrecord(pvrr);
|
||||
pvr_abort(pvrr);
|
||||
return;
|
||||
|
||||
case RECOP_ONCE:
|
||||
|
@ -1106,8 +1111,8 @@ static struct strtab recoptab[] = {
|
|||
{ "once", RECOP_ONCE },
|
||||
{ "daily", RECOP_DAILY },
|
||||
{ "weekly", RECOP_WEEKLY },
|
||||
{ "cancel", RECOP_CANCEL },
|
||||
{ "toggle", RECOP_TOGGLE }
|
||||
{ "abort", RECOP_ABORT },
|
||||
{ "clear", RECOP_CLEAR }
|
||||
};
|
||||
|
||||
int
|
||||
|
|
4
pvr.h
4
pvr.h
|
@ -92,11 +92,11 @@ typedef struct pvr_rec {
|
|||
|
||||
|
||||
typedef enum {
|
||||
RECOP_TOGGLE,
|
||||
RECOP_ONCE,
|
||||
RECOP_DAILY,
|
||||
RECOP_WEEKLY,
|
||||
RECOP_CANCEL,
|
||||
RECOP_ABORT,
|
||||
RECOP_CLEAR,
|
||||
} recop_t;
|
||||
|
||||
void pvr_init(void);
|
||||
|
|
Loading…
Add table
Reference in a new issue