Merge remote-tracking branch 'origin/pr/184'

This commit is contained in:
Adam Sutton 2012-12-06 20:10:41 +00:00
commit d651666a50
3 changed files with 75 additions and 54 deletions

View file

@ -1390,31 +1390,41 @@ extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque,
return 0;
}
static int is_dvr_entry_old(dvr_entry_t *entry)
static int is_dvr_entry_finished(dvr_entry_t *entry)
{
dvr_entry_sched_state_t state = entry->de_sched_state;
switch (state) {
case DVR_COMPLETED: return 1;
case DVR_MISSED_TIME: return 1;
default: return 0;
}
return state == DVR_COMPLETED;
}
static int is_dvr_entry_new(dvr_entry_t *entry)
static int is_dvr_entry_upcoming(dvr_entry_t *entry)
{
return !is_dvr_entry_old(entry);
dvr_entry_sched_state_t state = entry->de_sched_state;
return state == DVR_RECORDING || state == DVR_SCHEDULED;
}
static int is_dvr_entry_failed(dvr_entry_t *entry)
{
dvr_entry_sched_state_t state = entry->de_sched_state;
return state == DVR_MISSED_TIME || state == DVR_NOSTATE;
}
static int
extjs_dvrlist_old(http_connection_t *hc, const char *remain, void *opaque)
extjs_dvrlist_finished(http_connection_t *hc, const char *remain, void *opaque)
{
return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_old, dvr_sort_start_descending);
return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_finished, dvr_sort_start_descending);
}
static int
extjs_dvrlist_new(http_connection_t *hc, const char *remain, void *opaque)
extjs_dvrlist_upcoming(http_connection_t *hc, const char *remain, void *opaque)
{
return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_new, dvr_sort_start_ascending);
return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_upcoming, dvr_sort_start_ascending);
}
static int
extjs_dvrlist_failed(http_connection_t *hc, const char *remain, void *opaque)
{
return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_failed, dvr_sort_start_descending);
}
/**
@ -1937,27 +1947,28 @@ extjs_config(http_connection_t *hc, const char *remain, void *opaque)
void
extjs_start(void)
{
http_path_add("/about.html", NULL, page_about, ACCESS_WEB_INTERFACE);
http_path_add("/extjs.html", NULL, extjs_root, ACCESS_WEB_INTERFACE);
http_path_add("/tablemgr", NULL, extjs_tablemgr, ACCESS_WEB_INTERFACE);
http_path_add("/channels", NULL, extjs_channels, ACCESS_WEB_INTERFACE);
http_path_add("/epggrab", NULL, extjs_epggrab, ACCESS_WEB_INTERFACE);
http_path_add("/channeltags", NULL, extjs_channeltags, ACCESS_WEB_INTERFACE);
http_path_add("/confignames", NULL, extjs_confignames, ACCESS_WEB_INTERFACE);
http_path_add("/epg", NULL, extjs_epg, ACCESS_WEB_INTERFACE);
http_path_add("/epgrelated", NULL, extjs_epgrelated, ACCESS_WEB_INTERFACE);
http_path_add("/epgobject", NULL, extjs_epgobject, ACCESS_WEB_INTERFACE);
http_path_add("/dvr", NULL, extjs_dvr, ACCESS_WEB_INTERFACE);
http_path_add("/dvrlist_new", NULL, extjs_dvrlist_new, ACCESS_WEB_INTERFACE);
http_path_add("/dvrlist_old", NULL, extjs_dvrlist_old, ACCESS_WEB_INTERFACE);
http_path_add("/subscriptions", NULL, extjs_subscriptions, ACCESS_WEB_INTERFACE);
http_path_add("/ecglist", NULL, extjs_ecglist, ACCESS_WEB_INTERFACE);
http_path_add("/config", NULL, extjs_config, ACCESS_WEB_INTERFACE);
http_path_add("/languages", NULL, extjs_languages, ACCESS_WEB_INTERFACE);
http_path_add("/mergechannel", NULL, extjs_mergechannel, ACCESS_ADMIN);
http_path_add("/iptv/services", NULL, extjs_iptvservices, ACCESS_ADMIN);
http_path_add("/servicedetails", NULL, extjs_servicedetails, ACCESS_ADMIN);
http_path_add("/tv/adapter", NULL, extjs_tvadapter, ACCESS_ADMIN);
http_path_add("/about.html", NULL, page_about, ACCESS_WEB_INTERFACE);
http_path_add("/extjs.html", NULL, extjs_root, ACCESS_WEB_INTERFACE);
http_path_add("/tablemgr", NULL, extjs_tablemgr, ACCESS_WEB_INTERFACE);
http_path_add("/channels", NULL, extjs_channels, ACCESS_WEB_INTERFACE);
http_path_add("/epggrab", NULL, extjs_epggrab, ACCESS_WEB_INTERFACE);
http_path_add("/channeltags", NULL, extjs_channeltags, ACCESS_WEB_INTERFACE);
http_path_add("/confignames", NULL, extjs_confignames, ACCESS_WEB_INTERFACE);
http_path_add("/epg", NULL, extjs_epg, ACCESS_WEB_INTERFACE);
http_path_add("/epgrelated", NULL, extjs_epgrelated, ACCESS_WEB_INTERFACE);
http_path_add("/epgobject", NULL, extjs_epgobject, ACCESS_WEB_INTERFACE);
http_path_add("/dvr", NULL, extjs_dvr, ACCESS_WEB_INTERFACE);
http_path_add("/dvrlist_upcoming", NULL, extjs_dvrlist_upcoming, ACCESS_WEB_INTERFACE);
http_path_add("/dvrlist_finished", NULL, extjs_dvrlist_finished, ACCESS_WEB_INTERFACE);
http_path_add("/dvrlist_failed", NULL, extjs_dvrlist_failed, ACCESS_WEB_INTERFACE);
http_path_add("/subscriptions", NULL, extjs_subscriptions, ACCESS_WEB_INTERFACE);
http_path_add("/ecglist", NULL, extjs_ecglist, ACCESS_WEB_INTERFACE);
http_path_add("/config", NULL, extjs_config, ACCESS_WEB_INTERFACE);
http_path_add("/languages", NULL, extjs_languages, ACCESS_WEB_INTERFACE);
http_path_add("/mergechannel", NULL, extjs_mergechannel, ACCESS_ADMIN);
http_path_add("/iptv/services", NULL, extjs_iptvservices, ACCESS_ADMIN);
http_path_add("/servicedetails", NULL, extjs_servicedetails, ACCESS_ADMIN);
http_path_add("/tv/adapter", NULL, extjs_tvadapter, ACCESS_ADMIN);
#if ENABLE_LINUXDVB
extjs_start_dvb();

View file

@ -143,7 +143,7 @@ tvheadend.dvrDetails = function(entry) {
/**
*
*/
tvheadend.dvrschedule = function(title, dvrStore) {
tvheadend.dvrschedule = function(title, iconCls, dvrStore) {
var actions = new Ext.ux.grid.RowActions({
header : '',
@ -359,7 +359,7 @@ tvheadend.dvrschedule = function(title, dvrStore) {
stripeRows : true,
disableSelection : true,
title : title,
iconCls : 'clock',
iconCls : iconCls,
store : dvrStore,
cm : dvrCm,
plugins : [ actions ],
@ -617,8 +617,12 @@ tvheadend.dvr = function() {
remoteSort : true
});
}
tvheadend.dvrStoreNew = datastoreBuilder('dvrlist_new');
tvheadend.dvrStoreOld = datastoreBuilder('dvrlist_old');
tvheadend.dvrStoreUpcoming = datastoreBuilder('dvrlist_upcoming');
tvheadend.dvrStoreFinished = datastoreBuilder('dvrlist_finished');
tvheadend.dvrStoreFailed = datastoreBuilder('dvrlist_failed');
tvheadend.dvrStores = [tvheadend.dvrStoreUpcoming,
tvheadend.dvrStoreFinished,
tvheadend.dvrStoreFailed];
function updateDvrStore(store, r, m) {
@ -630,28 +634,28 @@ tvheadend.dvr = function() {
Ext.data.Record.COMMIT);
}
function reloadStores() {
for (var i = 0; i < tvheadend.dvrStores.length; i++) {
tvheadend.dvrStores[i].reload();
}
}
tvheadend.comet.on('dvrdb', function(m) {
if (m.reload != null) {
tvheadend.dvrStoreOld.reload();
tvheadend.dvrStoreNew.reload();
reloadStores();
}
if (m.updateEntry != null) {
r = tvheadend.dvrStoreNew.getById(m.id);
if (typeof r !== 'undefined') {
updateDvrStore(tvheadend.dvrStoreNew, r, m);
return;
for (var i = 0; i < tvheadend.dvrStores.length; i++) {
var store = tvheadend.dvrStores[i];
r = tvheadend.dvrStoreUpcoming.getById(m.id);
if (typeof r !== 'undefined') {
updateDvrStore(store, r, m);
return;
}
}
r = tvheadend.dvrStoreOld.getById(m.id);
if (typeof r === 'undefined') {
updateDvrStore(tvheadend.dvrStoreOld, r, m);
return;
}
tvheadend.dvrStoreNew.reload();
tvheadend.dvrStoreOld.reload();
reloadStores();
}
});
@ -680,8 +684,10 @@ tvheadend.dvr = function() {
autoScroll : true,
title : 'Digital Video Recorder',
iconCls : 'drive',
items : [ new tvheadend.dvrschedule('Finished recordings', tvheadend.dvrStoreOld),
new tvheadend.dvrschedule('Recorder schedule', tvheadend.dvrStoreNew),
items : [
new tvheadend.dvrschedule('Upcoming recordings', 'clock', tvheadend.dvrStoreUpcoming),
new tvheadend.dvrschedule('Finished recordings', 'television', tvheadend.dvrStoreFinished),
new tvheadend.dvrschedule('Failed recordings', 'exclamation', tvheadend.dvrStoreFailed),
new tvheadend.autoreceditor
]
});

View file

@ -224,6 +224,10 @@
background-image: url(../icons/clock.png) !important;
}
.exclamation {
background-image: url(../icons/exclamation.png) !important;
}
.wrench {
background-image: url(../icons/wrench.png) !important;
}