memset(&eq, 0, sizeof(eq));
lang = htsmsg_get_str(args, "lang");
- eq.lang = lang ? strdup(lang) : NULL;
-
+ if (lang)
+ eq.lang = strdup(lang);
str = htsmsg_get_str(args, "title");
if (str)
eq.stitle = strdup(str);
+ eq.fulltext = htsmsg_get_bool_or_default(args, "fulltext", 0);
str = htsmsg_get_str(args, "channel");
if (str)
eq.channel = strdup(str);
{
const char *s, *lang = eq->lang;
epg_episode_t *ep;
+ int fulltext = eq->stitle && eq->fulltext;
/* Filtering */
if (e == NULL) return;
}
if (!r) return;
}
- if (eq->title.comp != EC_NO || eq->stitle) {
+ if (fulltext) {
+ if ((s = epg_episode_get_title(ep, lang)) == NULL ||
+ regexec(&eq->stitle_re, s, 0, NULL, 0)) {
+ if ((s = epg_episode_get_subtitle(ep, lang)) == NULL ||
+ regexec(&eq->stitle_re, s, 0, NULL, 0)) {
+ if ((s = epg_broadcast_get_summary(e, lang)) == NULL ||
+ regexec(&eq->stitle_re, s, 0, NULL, 0)) {
+ if ((s = epg_broadcast_get_description(e, lang)) == NULL ||
+ regexec(&eq->stitle_re, s, 0, NULL, 0)) {
+ return;
+ }
+ }
+ }
+ }
+ }
+ if (eq->title.comp != EC_NO || (eq->stitle && !fulltext)) {
if ((s = epg_episode_get_title(ep, lang)) == NULL) return;
- if (eq->stitle)
- if (regexec(&eq->stitle_re, s, 0, NULL, 0)) return;
- if (_eq_comp_str(&eq->title, s)) return;
+ if (eq->stitle && !fulltext && regexec(&eq->stitle_re, s, 0, NULL, 0)) return;
+ if (eq->title.comp != EC_NO && _eq_comp_str(&eq->title, s)) return;
}
if (eq->subtitle.comp != EC_NO) {
if ((s = epg_episode_get_subtitle(ep, lang)) == NULL) return;
if (_eq_comp_str(&eq->subtitle, s)) return;
}
if (eq->summary.comp != EC_NO) {
- if ((s = epg_episode_get_summary(ep, lang)) == NULL) return;
+ if ((s = epg_broadcast_get_summary(e, lang)) == NULL) return;
if (_eq_comp_str(&eq->summary, s)) return;
}
if (eq->description.comp != EC_NO) {
- if ((s = epg_episode_get_description(ep, lang)) == NULL) return;
+ if ((s = epg_broadcast_get_description(e, lang)) == NULL) return;
if (_eq_comp_str(&eq->description, s)) return;
}
width: 200
});
+ var epgFilterFulltext = new Ext.form.Checkbox({
+ width: 20
+ });
+
// Channels, uses global store
var epgFilterChannels = new Ext.form.ComboBox({
epgFilterTitle.setValue("");
};
+ clearFulltextFilter = function() {
+ delete epgStore.baseParams.fulltext;
+ epgFilterFulltext.setValue(0);
+ };
+
clearChannelFilter = function() {
delete epgStore.baseParams.channel;
epgFilterChannels.setValue("");
function epgQueryClear() {
clearTitleFilter();
+ clearFulltextFilter();
clearChannelFilter();
clearChannelTagsFilter();
clearDurationFilter();
}
});
+ epgFilterFulltext.on('check', function(c, value) {
+ if (epgStore.baseParams.fulltext !== value) {
+ epgStore.baseParams.fulltext = value;
+ epgView.reset();
+ }
+ });
+
var epgView = new Ext.ux.grid.livegrid.GridView({
nearLimit: 100,
loadMask: {
});
var tbar = [
- epgFilterTitle, '-',
+ epgFilterTitle, { text: 'Fulltext' }, epgFilterFulltext, '-',
epgFilterChannels, '-',
epgFilterChannelTags, '-',
epgFilterContentGroup, '-',