#include "autorec.h"
#include "xmltv.h"
#include "dtable.h"
+#include "notify.h"
struct channel_list channels_not_xmltv_mapped;
static channel_tag_t *channel_tag_find(const char *id, int create);
static void channel_tag_mapping_destroy(channel_tag_mapping_t *ctm);
+/**
+ *
+ */
+static void
+channel_list_changed(void)
+{
+ htsmsg_t *m = htsmsg_create();
+ htsmsg_add_u32(m, "reload", 1);
+ notify_by_msg("channels", m);
+}
+
+
static int
dictcmp(const char *a, const char *b)
{
x = RB_INSERT_SORTED(&channel_name_tree, ch, ch_name_link, channelcmp);
assert(x == NULL);
+
+ /* Notify clients */
+ channel_list_changed();
+
}
free(ch->ch_name);
free(ch->ch_sname);
free(ch->ch_icon);
+
+ channel_list_changed();
free(ch);
}
/**
* Channel tags
*/
-
tvheadend.channelTags = new Ext.data.JsonStore({
autoLoad:true,
root:'entries',
baseParams: {op: 'listTags'}
});
+/**
+ * Channels
+ */
+tvheadend.channels = new Ext.data.JsonStore({
+ autoLoad: true,
+ root:'entries',
+ fields: [{name: 'name'}, {name: 'chid'}],
+ url: "chlist",
+});
/**
* Channel details
confpanel.getForm().submit({url:'/channel',
params:{'chid': chid, 'op':'save'},
waitMsg:'Saving Data...',
-
- success: function(form, action) {
-
- if(action.result.reloadchlist) {
- tvheadend.chconfliststore.reload();
- }
- },
-
failure: function(form, action) {
Ext.Msg.alert('Save failed', action.result.errormsg);
}
Ext.Ajax.request({url: '/channel',
params:{'chid': chid, 'op':'delete'},
success: function() {
- tvheadend.chconfliststore.reload();
panel.destroy();
}
});
srcch: selectedRecord.data.chid},
success: function() {
transportsstore.reload();
- tvheadend.chconfliststore.reload();
}});
}
);
*
*/
tvheadend.chconf = function() {
-
- var ChannelRecord = Ext.data.Record.create([
- {name: 'name'},
- {name: 'chid'}]);
-
- var store = new Ext.data.JsonStore({root: 'entries',
- fields: ChannelRecord,
- url: "chlist",
- autoLoad: true,
- id: 'id',
- storeid: 'id'
- });
-
-
var chlist = new Ext.grid.GridPanel({
ddGroup: 'chconfddgroup',
enableDragDrop: true,
dataIndex: 'name'}
],
selModel: new Ext.grid.RowSelectionModel({singleSelect:true}),
- store: store,
+ store: tvheadend.channels,
});
var details = new Ext.Panel({
var panel = new Ext.Panel({
- listeners: {activate: handleActivate},
border: false,
title:'Channels',
layout:'border',
});
- function handleActivate(tab){
- store.reload();
- }
chlist.on('rowclick', function(grid, n) {
- var rec = store.getAt(n);
+ var rec = tvheadend.channels.getAt(n);
details.remove(details.getComponent(0));
details.doLayout();
console.log(parent);
});
*/
-
- tvheadend.chconfliststore = store;
-
return panel;
}
\ No newline at end of file
});
- // Channels, XXX: Perhaps we should make channes a global store as well
-
- var epgFilterChannelsStore = new Ext.data.JsonStore({
- root:'entries',
- fields: [{name: 'name'}],
- url:'chlist'
- });
+ // Channels, uses global store
var epgFilterChannels = new Ext.form.ComboBox({
loadingText: 'Loading...',
width: 200,
displayField:'name',
- store: epgFilterChannelsStore,
- mode: 'remote',
+ store: tvheadend.channels,
+ mode: 'local',
editable: false,
triggerAction: 'all',
emptyText: 'Only include channel...'