Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: implement move between failed and finished in webui, fixes #3556
  • Loading branch information
perexg committed Feb 9, 2016
1 parent 0f2dbb4 commit 31e958c
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 2 deletions.
28 changes: 28 additions & 0 deletions src/api/api_dvr.c
Expand Up @@ -321,6 +321,32 @@ api_dvr_entry_cancel
return api_idnode_handler(perm, args, resp, api_dvr_cancel, "cancel");
}

static void
api_dvr_move_finished(access_t *perm, idnode_t *self)
{
dvr_entry_move((dvr_entry_t *)self, 0);
}

static int
api_dvr_entry_move_finished
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
return api_idnode_handler(perm, args, resp, api_dvr_move_finished, "move finished");
}

static void
api_dvr_move_failed(access_t *perm, idnode_t *self)
{
dvr_entry_move((dvr_entry_t *)self, 1);
}

static int
api_dvr_entry_move_failed
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
return api_idnode_handler(perm, args, resp, api_dvr_move_failed, "move failed");
}

static void
api_dvr_autorec_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
Expand Down Expand Up @@ -471,6 +497,8 @@ void api_dvr_init ( void )
{ "dvr/entry/rerecord/allow", ACCESS_RECORDER, api_dvr_entry_rerecord_allow, NULL },
{ "dvr/entry/stop", ACCESS_RECORDER, api_dvr_entry_stop, NULL },
{ "dvr/entry/cancel", ACCESS_RECORDER, api_dvr_entry_cancel, NULL },
{ "dvr/entry/move/finished", ACCESS_RECORDER, api_dvr_entry_move_finished, NULL },
{ "dvr/entry/move/failed", ACCESS_RECORDER, api_dvr_entry_move_failed, NULL },

{ "dvr/autorec/class", ACCESS_RECORDER, api_idnode_class, (void*)&dvr_autorec_entry_class },
{ "dvr/autorec/grid", ACCESS_RECORDER, api_idnode_grid, api_dvr_autorec_grid },
Expand Down
2 changes: 2 additions & 0 deletions src/dvr/dvr.h
Expand Up @@ -573,6 +573,8 @@ int64_t dvr_entry_claenup(dvr_entry_t *de, int64_t requiredBytes);

void dvr_entry_set_rerecord(dvr_entry_t *de, int cmd);

void dvr_entry_move(dvr_entry_t *de, int failed);

dvr_entry_t *dvr_entry_stop(dvr_entry_t *de);

dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de, int rerecord);
Expand Down
10 changes: 10 additions & 0 deletions src/dvr/dvr_db.c
Expand Up @@ -3396,6 +3396,16 @@ dvr_entry_set_rerecord(dvr_entry_t *de, int cmd)
}
}

/**
*
*/
void
dvr_entry_move(dvr_entry_t *de, int failed)
{
if(de->de_sched_state == DVR_COMPLETED)
dvr_entry_completed(de, failed ? SM_CODE_USER_REQUEST : SM_CODE_OK);
}

/**
*
*/
Expand Down
2 changes: 2 additions & 0 deletions src/streaming.c
Expand Up @@ -424,6 +424,8 @@ streaming_code2txt(int code)
return N_("User limit reached");
case SM_CODE_WEAK_STREAM:
return N_("Weak stream");
case SM_CODE_USER_REQUEST:
return N_("User request");

case SM_CODE_NO_FREE_ADAPTER:
return N_("No free adapter");
Expand Down
1 change: 1 addition & 0 deletions src/tvheadend.h
Expand Up @@ -482,6 +482,7 @@ typedef enum {
#define SM_CODE_USER_ACCESS 105
#define SM_CODE_USER_LIMIT 106
#define SM_CODE_WEAK_STREAM 107
#define SM_CODE_USER_REQUEST 108

#define SM_CODE_NO_FREE_ADAPTER 200
#define SM_CODE_MUX_NOT_ENABLED 201
Expand Down
64 changes: 62 additions & 2 deletions src/webui/static/app/dvr.js
Expand Up @@ -368,11 +368,41 @@ tvheadend.dvr_finished = function(panel, index) {
}
};

var moveButton = {
name: 'move',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: _('Mark the selected recording as failed'),
iconCls: 'movetofailed',
text: _('Move to failed'),
disabled: true
});
},
callback: function(conf, e, store, select) {
var r = select.getSelections();
if (r && r.length > 0) {
var uuids = [];
for (var i = 0; i < r.length; i++)
uuids.push(r[i].id);
tvheadend.Ajax({
url: 'api/dvr/entry/move/failed',
params: {
uuid: Ext.encode(uuids)
},
success: function(d) {
store.reload();
}
});
}
}
};

function selected(s, abuttons) {
var r = s.getSelections();
var b = r.length > 0 && r[0].data.filesize > 0;
abuttons.download.setDisabled(!b);
abuttons.rerecord.setDisabled(!b);
abuttons.move.setDisabled(!b);
}

tvheadend.idnode_grid(panel, {
Expand Down Expand Up @@ -414,7 +444,7 @@ tvheadend.dvr_finished = function(panel, index) {
'?title=' + encodeURIComponent(title) + '">' + _('Play') + '</a>';
}
}],
tbar: [downloadButton, rerecordButton],
tbar: [downloadButton, rerecordButton, moveButton],
selected: selected,
help: function() {
new tvheadend.help(_('DVR - Finished Recordings'), 'dvr_finished.html');
Expand Down Expand Up @@ -479,11 +509,41 @@ tvheadend.dvr_failed = function(panel, index) {
}
};

var moveButton = {
name: 'move',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: _('Mark the selected recording as finished'),
iconCls: 'movetofinished',
text: _('Move to finished'),
disabled: true
});
},
callback: function(conf, e, store, select) {
var r = select.getSelections();
if (r && r.length > 0) {
var uuids = [];
for (var i = 0; i < r.length; i++)
uuids.push(r[i].id);
tvheadend.Ajax({
url: 'api/dvr/entry/move/finished',
params: {
uuid: Ext.encode(uuids)
},
success: function(d) {
store.reload();
}
});
}
}
};

function selected(s, abuttons) {
var r = s.getSelections();
var b = r.length > 0 && r[0].data.filesize > 0;
abuttons.download.setDisabled(!b);
abuttons.rerecord.setDisabled(r.length <= 0);
abuttons.move.setDisabled(r.length <= 0);
}

tvheadend.idnode_grid(panel, {
Expand Down Expand Up @@ -525,7 +585,7 @@ tvheadend.dvr_failed = function(panel, index) {
'?title=' + encodeURIComponent(title) + '">' + _('Play') + '</a>';
}
}],
tbar: [downloadButton, rerecordButton],
tbar: [downloadButton, rerecordButton, moveButton],
selected: selected,
help: function() {
new tvheadend.help(_('DVR - Failed Recordings'), 'dvr_failed.html');
Expand Down
8 changes: 8 additions & 0 deletions src/webui/static/app/ext.css
Expand Up @@ -600,6 +600,14 @@
background-image: url(../icons/accept.png) !important;
}

.movetofinished {
background-image: url(../icons/accept.png) !important;
}

.movetofailed {
background-image: url(../icons/exclamation.png) !important;
}

.x-linked {
display: inline-block;
background-image: url(../icons/linked.gif) !important;
Expand Down

0 comments on commit 31e958c

Please sign in to comment.