From 0d34b48c05d4ee502f5829ec8f2beb0b6f109a36 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Thu, 7 Jun 2012 15:09:08 +0100 Subject: [PATCH] Slight improvement to the config UI and fixed problem with error reporting on socket close. --- src/epggrab.c | 5 +++-- src/webui/static/app/epggrab.js | 40 ++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/epggrab.c b/src/epggrab.c index 273b979c..9b41dd41 100644 --- a/src/epggrab.c +++ b/src/epggrab.c @@ -178,10 +178,11 @@ static void *_epggrab_socket_thread ( void *p ) while ( mod->enabled && mod->sock ) { tvhlog(LOG_DEBUG, mod->id, "waiting for connection"); s = accept(mod->sock, NULL, NULL); - if (!s) break; // assume closed - tvhlog(LOG_DEBUG, mod->id, "got connection"); + if (s <= 0) break; // assume closed + tvhlog(LOG_DEBUG, mod->id, "got connection %d", s); _epggrab_socket_handler(mod, s); } + tvhlog(LOG_DEBUG, mod->id, "terminated"); return NULL; } diff --git a/src/webui/static/app/epggrab.js b/src/webui/static/app/epggrab.js index 0ef37d53..f889b476 100644 --- a/src/webui/static/app/epggrab.js +++ b/src/webui/static/app/epggrab.js @@ -142,7 +142,19 @@ tvheadend.epggrab = function() { /* * External modules */ + var externalSelectionModel = new Ext.grid.CheckboxSelectionModel({ + singleSelect : false, + listeners : { + 'rowselect' : function (s, ri, r) { + r.set('enabled', 1); + }, + 'rowdeselect' : function (s, ri, r) { + r.set('enabled', 0); + } + } + }); var externalColumnModel = new Ext.grid.ColumnModel([ + externalSelectionModel, { header : 'Module', dataIndex : 'name', @@ -156,27 +168,12 @@ tvheadend.epggrab = function() { sortable : false, // TODO: editable? }, - { - dataIndex : 'enabled', - header : 'Enabled', - width : 100, - sortable : false, - editor : new Ext.form.Checkbox(), - // TODO: newer versions of extjs provide proper checkbox in grid - // support, I think! - renderer : function (v) { - if (v) { - return "Y"; - } else { - return "N"; - } - } - } ]); var externalGrid = new Ext.grid.EditorGridPanel({ store : externalModuleStore, cm : externalColumnModel, + sm : externalSelectionModel, width : 600, height : 150, frame : false, @@ -186,6 +183,17 @@ tvheadend.epggrab = function() { iconCls : 'icon-grid', }); var advancedPanel = externalGrid; + externalGrid.on('render', function(){ + // TODO: bit of hack to get selection working + delay = new Ext.util.DelayedTask(function(){ + rows = []; + externalModuleStore.each(function(r){ + if (r.get('enabled')) rows.push(r); + }); + externalSelectionModel.selectRecords(rows); + }); + delay.delay(100); + }); /* **************************************************************** * Form