src/gui/eventlist.cpp-add program category filter to epg-search

Origin commit data
------------------
Commit: 39796eda68
Author: Jacek Jendrzej <overx300@gmail.com>
Date: 2015-06-30 (Tue, 30 Jun 2015)
This commit is contained in:
Jacek Jendrzej
2015-06-30 14:23:39 +02:00
parent 6432f51eb8
commit cf384796b6
8 changed files with 92 additions and 9 deletions

View File

@@ -20,6 +20,8 @@ EPGPlus.scroll_mode Scroll-Modus
EPGPlus.stretch_mode Stretch-Modus
EPGPlus.swap_mode Blättern
EPGPlus.view_mode Modus
GENRE.ALL aus
GENRE.ARTS Kultur
GENRE.ARTS.0 Kunst/Kultur
GENRE.ARTS.1 Darstellende Künste
GENRE.ARTS.10 Kunst-/Kultur-Magazin
@@ -32,12 +34,14 @@ GENRE.ARTS.6 Film/ Kino
GENRE.ARTS.7 Experimental Film/Video
GENRE.ARTS.8 Rundfunk/Presse
GENRE.ARTS.9 Neue Medien
GENRE.CHILDRENs_PROGRAMMES Kinder
GENRE.CHILDRENs_PROGRAMMES.0 Kinder/Jugendprogramm
GENRE.CHILDRENs_PROGRAMMES.1 Programm für Vorschulkinder
GENRE.CHILDRENs_PROGRAMMES.2 Unterhaltungsprogramm für 6 bis 14-Jährige
GENRE.CHILDRENs_PROGRAMMES.3 Unterhaltungsprogramm für 10 bis 16-Jährige
GENRE.CHILDRENs_PROGRAMMES.4 Informations- und Bildungsprogramm
GENRE.CHILDRENs_PROGRAMMES.5 Trickfilm
GENRE.DOCUS_MAGAZINES Magazin
GENRE.DOCUS_MAGAZINES.0 Doku/Magazin
GENRE.DOCUS_MAGAZINES.1 Natur/Tiere/Umwelt
GENRE.DOCUS_MAGAZINES.2 Naturwissenschaft und Technik
@@ -46,6 +50,7 @@ GENRE.DOCUS_MAGAZINES.4 Ausland/Expeditions
GENRE.DOCUS_MAGAZINES.5 Sozial- und Geisteswissenschaften
GENRE.DOCUS_MAGAZINES.6 Weiterbildung
GENRE.DOCUS_MAGAZINES.7 Sprachen
GENRE.MOVIE Spielfilm
GENRE.MOVIE.0 Spielfilm/Drama
GENRE.MOVIE.1 Kriminalfilm/Thriller
GENRE.MOVIE.2 Abenteuerfilm/Western/Kriegsfilm
@@ -55,6 +60,7 @@ GENRE.MOVIE.5 Soap/Melodram/Folklore
GENRE.MOVIE.6 Romantik
GENRE.MOVIE.7 klassischer/religiöser/historischer Film/Drama
GENRE.MOVIE.8 Erwachsenen Film/Drama
GENRE.MUSIC_DANCE Musik
GENRE.MUSIC_DANCE.0 Musik/Ballet/Tanz
GENRE.MUSIC_DANCE.1 Rock/Pop
GENRE.MUSIC_DANCE.2 Klassik
@@ -62,19 +68,23 @@ GENRE.MUSIC_DANCE.3 Volksmusik
GENRE.MUSIC_DANCE.4 Jazz
GENRE.MUSIC_DANCE.5 Musical/Oper
GENRE.MUSIC_DANCE.6 Ballet
GENRE.NEWS Nachrichten
GENRE.NEWS.0 Nachrichten
GENRE.NEWS.1 Nachrichten/Wetter
GENRE.NEWS.2 Nachrichtenmagazin
GENRE.NEWS.3 Dokumentation
GENRE.NEWS.4 Diskussion/Interview/Debatte
GENRE.SHOW Show
GENRE.SHOW.0 Show/ Gameshow
GENRE.SHOW.1 Gameshow/Quiz
GENRE.SHOW.2 Varietee
GENRE.SHOW.3 Talkshow
GENRE.SOCIAL_POLITICAL Sozial
GENRE.SOCIAL_POLITICAL.0 Sozial & Politikereignisse/Wirtschaft
GENRE.SOCIAL_POLITICAL.1 Magazin/Report/Dokumentation
GENRE.SOCIAL_POLITICAL.2 Wirtschaft und Soziales
GENRE.SOCIAL_POLITICAL.3 Besondere Menschen
GENRE.SPORTS Sport
GENRE.SPORTS.0 Sport
GENRE.SPORTS.1 Großereignisse (Olympische Spiele, Weltmeisterschaften usw.)
GENRE.SPORTS.10 Reiten
@@ -87,6 +97,7 @@ GENRE.SPORTS.6 Leichtathletik
GENRE.SPORTS.7 Motorsport
GENRE.SPORTS.8 Wassersport
GENRE.SPORTS.9 Wintersport
GENRE.TRAVEL_HOBBIES Freizeit
GENRE.TRAVEL_HOBBIES.0 Reise & Freizeit
GENRE.TRAVEL_HOBBIES.1 Reisen und Tourismus
GENRE.TRAVEL_HOBBIES.2 Handwerk
@@ -351,6 +362,7 @@ epgviewer.genre Genre
epgviewer.length Spieldauer (Min.)
epgviewer.nodetailed Keine ausführlichen Informationen verfügbar
epgviewer.notfound Keine Programminformationen (EPG) gefunden
eventfinder.genre Filter
eventfinder.head EPG-Suche
eventfinder.history Frühere Suchen
eventfinder.keyword Suche nach Textpassage

View File

@@ -20,6 +20,8 @@ EPGPlus.scroll_mode Scroll Mode
EPGPlus.stretch_mode Stretch Mode
EPGPlus.swap_mode swap mode
EPGPlus.view_mode view mode
GENRE.ALL off
GENRE.ARTS Arts
GENRE.ARTS.0 arts / culture
GENRE.ARTS.1 performing arts
GENRE.ARTS.10 arts/culture magazines
@@ -32,12 +34,14 @@ GENRE.ARTS.6 film/cinema
GENRE.ARTS.7 experimental film/video
GENRE.ARTS.8 broadcasting/press
GENRE.ARTS.9 new media
GENRE.CHILDRENs_PROGRAMMES children
GENRE.CHILDRENs_PROGRAMMES.0 children / juvenile program
GENRE.CHILDRENs_PROGRAMMES.1 pre-school children's programmes
GENRE.CHILDRENs_PROGRAMMES.2 entertainment programmes for 6 to 14
GENRE.CHILDRENs_PROGRAMMES.3 entertainment programmes for 10 to 16
GENRE.CHILDRENs_PROGRAMMES.4 informational/educational/school programmes
GENRE.CHILDRENs_PROGRAMMES.5 cartoons/puppets
GENRE.DOCUS_MAGAZINES documentation
GENRE.DOCUS_MAGAZINES.0 documentation / magazine
GENRE.DOCUS_MAGAZINES.1 nature/animals/environment
GENRE.DOCUS_MAGAZINES.2 technology/natural sciences
@@ -46,6 +50,7 @@ GENRE.DOCUS_MAGAZINES.4 foreign countries/expeditions
GENRE.DOCUS_MAGAZINES.5 social/spiritual sciences
GENRE.DOCUS_MAGAZINES.6 further education
GENRE.DOCUS_MAGAZINES.7 languages
GENRE.MOVIE movie
GENRE.MOVIE.0 movie/drama
GENRE.MOVIE.1 detective/thriller
GENRE.MOVIE.2 adventure/western/war
@@ -55,6 +60,7 @@ GENRE.MOVIE.5 soap/melodrama/folkloric
GENRE.MOVIE.6 romance
GENRE.MOVIE.7 serious/classical/religious/historical movie/drama
GENRE.MOVIE.8 adult movie/drama
GENRE.MUSIC_DANCE music
GENRE.MUSIC_DANCE.0 music / ballet / dance
GENRE.MUSIC_DANCE.1 rock/pop
GENRE.MUSIC_DANCE.2 serious music/classical music
@@ -62,19 +68,23 @@ GENRE.MUSIC_DANCE.3 folk/traditional music
GENRE.MUSIC_DANCE.4 jazz
GENRE.MUSIC_DANCE.5 musical/opera
GENRE.MUSIC_DANCE.6 ballet
GENRE.NEWS news
GENRE.NEWS.0 news
GENRE.NEWS.1 news/weather report
GENRE.NEWS.2 news magazine
GENRE.NEWS.3 documentary
GENRE.NEWS.4 discussion/interview/debate
GENRE.SHOW Show
GENRE.SHOW.0 Show / Gameshow
GENRE.SHOW.1 game show/quiz/contest
GENRE.SHOW.2 variety show
GENRE.SHOW.3 talk show
GENRE.SOCIAL_POLITICAL social
GENRE.SOCIAL_POLITICAL.0 social & politic events / business
GENRE.SOCIAL_POLITICAL.1 magazines/reports/documentary
GENRE.SOCIAL_POLITICAL.2 economics/social advisory
GENRE.SOCIAL_POLITICAL.3 remarkable people
GENRE.SPORTS sports
GENRE.SPORTS.0 sports
GENRE.SPORTS.1 special events (Olympic Games,World Cup etc.)
GENRE.SPORTS.10 equestrian
@@ -87,6 +97,7 @@ GENRE.SPORTS.6 athletics
GENRE.SPORTS.7 motor sports
GENRE.SPORTS.8 water sports
GENRE.SPORTS.9 winter sports
GENRE.TRAVEL_HOBBIES Leisure
GENRE.TRAVEL_HOBBIES.0 travel & recreation
GENRE.TRAVEL_HOBBIES.1 tourism/travel
GENRE.TRAVEL_HOBBIES.2 handicraft
@@ -352,6 +363,7 @@ epgviewer.genre Genre
epgviewer.length Length (min.)
epgviewer.nodetailed No detailed informations available
epgviewer.notfound No EPG found
eventfinder.genre Filter
eventfinder.head Search in EPG
eventfinder.history Search history
eventfinder.keyword Keyword

View File

@@ -2310,7 +2310,7 @@ printf("SIevent size: %d\n", (int)sizeof(SIevent));
}
/* was: commandAllEventsChannelID sendAllEvents */
void CEitManager::getEventsServiceKey(t_channel_id serviceUniqueKey, CChannelEventList &eList, char search, std::string search_text,bool all_chann)
void CEitManager::getEventsServiceKey(t_channel_id serviceUniqueKey, CChannelEventList &eList, char search, std::string search_text,bool all_chann, int genre)
{
dprintf("sendAllEvents for " PRINTF_CHANNEL_ID_TYPE "\n", serviceUniqueKey);
if(!eList.empty() && search == 0)//skip on search mode
@@ -2351,6 +2351,13 @@ void CEitManager::getEventsServiceKey(t_channel_id serviceUniqueKey, CChannelEve
std::transform(eExtendedText.begin(), eExtendedText.end(), eExtendedText.begin(), tolower);
copy = (eExtendedText.find(search_text) != std::string::npos);
}
if(copy && genre != 0xFF)
{
if((*e)->classifications.content==0)
copy=false;
if(copy && ((*e)->classifications.content < (genre & 0xf0 ) || (*e)->classifications.content > genre))
copy=false;
}
}
if(copy) {
for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); ++t)

View File

@@ -56,7 +56,7 @@ class CEitManager : public OpenThreads::Thread, public OpenThreads::Mutex
bool Stop();
void SetConfig(CSectionsdClient::epg_config &cfg) { config = cfg; };
void getEventsServiceKey(t_channel_id serviceUniqueKey, CChannelEventList &eList, char search = 0, std::string search_text = "", bool all_chann=false);
void getEventsServiceKey(t_channel_id serviceUniqueKey, CChannelEventList &eList, char search = 0, std::string search_text = "", bool all_chann=false, int genre=0xFF);
void getCurrentNextServiceKey(t_channel_id uniqueServiceKey, CSectionsdClient::responseGetCurrentNextInfoChannelID& current_next );
bool getEPGidShort(event_id_t epgID, CShortEPGData * epgdata);
bool getEPGid(const event_id_t epgID, const time_t startzeit, CEPGData * epgdata);

View File

@@ -102,7 +102,7 @@ CEventList::CEventList()
m_search_epg_item = SEARCH_EPG_TITLE;
m_search_channel_id = 1;
m_search_bouquet_id= 1;
m_search_genre = 1;
full_width = width = 0;
height = 0;
@@ -1043,7 +1043,8 @@ bool CEventList::findEvents(void)
&m_search_keyword,
&m_search_list,
&m_search_channel_id,
&m_search_bouquet_id
&m_search_bouquet_id,
&m_search_genre
);
hide();
menu.exec(NULL,"");
@@ -1056,7 +1057,7 @@ bool CEventList::findEvents(void)
evtlist.clear();
if(m_search_list == SEARCH_LIST_CHANNEL)
{
CEitManager::getInstance()->getEventsServiceKey(m_search_channel_id, evtlist, m_search_epg_item,m_search_keyword);
CEitManager::getInstance()->getEventsServiceKey(m_search_channel_id, evtlist, m_search_epg_item,m_search_keyword,false, m_search_genre);
}
else if(m_search_list == SEARCH_LIST_BOUQUET)
{
@@ -1064,7 +1065,7 @@ bool CEventList::findEvents(void)
for(int channel = 0; channel < channel_nr; channel++)
{
channel_id = bouquetList->Bouquets[m_search_bouquet_id]->channelList->getChannelFromIndex(channel)->getChannelID();
CEitManager::getInstance()->getEventsServiceKey(channel_id, evtlist, m_search_epg_item,m_search_keyword);
CEitManager::getInstance()->getEventsServiceKey(channel_id, evtlist, m_search_epg_item,m_search_keyword,false, m_search_genre);
}
}
else if(m_search_list == SEARCH_LIST_ALL)
@@ -1084,7 +1085,7 @@ bool CEventList::findEvents(void)
for (it = v.begin(); it != v.end(); ++it){
ch_id_map[*it & 0xFFFFFFFFFFFFULL] = *it;
}
CEitManager::getInstance()->getEventsServiceKey(0,evtlist, m_search_epg_item,m_search_keyword, true);//all_chann
CEitManager::getInstance()->getEventsServiceKey(0,evtlist, m_search_epg_item,m_search_keyword, true,m_search_genre);//all_chann
if(!evtlist.empty()){
std::map<t_channel_id, t_channel_id>::iterator map_it;
@@ -1184,6 +1185,21 @@ bool CEventFinderMenuHandler::changeNotify(const neutrino_locale_t OptionName, v
return true;
}
*/
const short GENRE_GROUP_COUNT = 11;
const CMenuOptionChooser::keyval GENRE_GROUP[GENRE_GROUP_COUNT] =
{
{ 0xFF, LOCALE_GENRE_ALL },
{ 0x18, LOCALE_GENRE_MOVIE },
{ 0x24, LOCALE_GENRE_NEWS },
{ 0x33, LOCALE_GENRE_SHOW },
{ 0x4B, LOCALE_GENRE_SPORTS },
{ 0x55, LOCALE_GENRE_CHILDRENS_PROGRAMMES },
{ 0x66, LOCALE_GENRE_MUSIC_DANCE },
{ 0x7B, LOCALE_GENRE_ARTS },
{ 0x83, LOCALE_GENRE_SOCIAL_POLITICAL },
{ 0x97, LOCALE_GENRE_DOCUS_MAGAZINES },
{ 0xA7, LOCALE_GENRE_TRAVEL_HOBBIES }
};
#define SEARCH_LIST_OPTION_COUNT 3
const CMenuOptionChooser::keyval SEARCH_LIST_OPTIONS[SEARCH_LIST_OPTION_COUNT] =
@@ -1214,7 +1230,9 @@ CEventFinderMenu::CEventFinderMenu( int* event,
std::string* search_keyword,
int* search_list,
t_channel_id* search_channel_id,
t_bouquet_id* search_bouquet_id)
t_bouquet_id* search_bouquet_id,
int* search_genre
)
/************************************************************************************************/
{
m_event = event;
@@ -1223,6 +1241,7 @@ CEventFinderMenu::CEventFinderMenu( int* event,
m_search_list = search_list;
m_search_channel_id = search_channel_id;
m_search_bouquet_id = search_bouquet_id;
m_search_genre = search_genre;
width = 40;
selected = -1;
}
@@ -1351,10 +1370,13 @@ int CEventFinderMenu::showMenu(void)
CMenuForwarder* mf0 = new CMenuForwarder(LOCALE_EVENTFINDER_KEYWORD, true, *m_search_keyword, &stringInput, NULL, CRCInput::RC_red);
CMenuOptionChooser* mo0 = new CMenuOptionChooser(LOCALE_EVENTFINDER_SEARCH_WITHIN_LIST, m_search_list, SEARCH_LIST_OPTIONS, SEARCH_LIST_OPTION_COUNT, true, this, CRCInput::convertDigitToKey(shortcut++));
m_search_channelname_mf = new CMenuForwarder("", *m_search_list != CEventList::SEARCH_LIST_ALL, m_search_channelname, this, "#2", CRCInput::convertDigitToKey(shortcut++));
CMenuOptionChooser* mo1 = new CMenuOptionChooser(LOCALE_EVENTFINDER_SEARCH_WITHIN_EPG, m_search_epg_item, SEARCH_EPG_OPTIONS, SEARCH_EPG_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++));
CMenuForwarder* mf1 = new CMenuForwarder(LOCALE_EVENTFINDER_START_SEARCH, true, NULL, this, "#1", CRCInput::RC_green);
CMenuOptionChooser* mgenre = new CMenuOptionChooser(LOCALE_EVENTFINDER_GENRE, m_search_genre, GENRE_GROUP, GENRE_GROUP_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++));
CMenuWidget searchMenu(LOCALE_EVENTFINDER_HEAD, NEUTRINO_ICON_FEATURES, 40);
CMenuForwarder* mf2 = new CMenuForwarder(LOCALE_EVENTFINDER_HISTORY, true, NULL, this, "#history", CRCInput::RC_yellow);
@@ -1370,6 +1392,8 @@ int CEventFinderMenu::showMenu(void)
searchMenu.addItem(m_search_channelname_mf);
searchMenu.addItem(mo1);
searchMenu.addItem(GenericMenuSeparatorLine);
searchMenu.addItem(mgenre);
searchMenu.addItem(GenericMenuSeparatorLine);
searchMenu.addItem(mf2);
searchMenu.addItem(moc1);

View File

@@ -69,6 +69,7 @@ class CEventList
std::string m_search_keyword;
std::string m_search_autokeyword;
int m_search_list;
int m_search_genre;
t_channel_id m_search_channel_id;
t_bouquet_id m_search_bouquet_id;
bool m_showChannel;
@@ -142,6 +143,7 @@ class CEventFinderMenu : public CMenuTarget, CChangeObserver
CMenuForwarder* m_search_channelname_mf;
int* m_event;
int* m_search_epg_item;
int* m_search_genre;
std::string* m_search_keyword;
int* m_search_list;
std::string m_search_channelname;
@@ -156,7 +158,9 @@ class CEventFinderMenu : public CMenuTarget, CChangeObserver
std::string* search_keyword,
int* search_list,
t_channel_id* search_channel_id,
t_bouquet_id* search_bouquet_id);
t_bouquet_id* search_bouquet_id,
int* search_genre
);
int exec( CMenuTarget* parent, const std::string &actionkey);
bool changeNotify(const neutrino_locale_t OptionName, void *);

View File

@@ -47,6 +47,8 @@ typedef enum
LOCALE_EPGPLUS_STRETCH_MODE,
LOCALE_EPGPLUS_SWAP_MODE,
LOCALE_EPGPLUS_VIEW_MODE,
LOCALE_GENRE_ALL,
LOCALE_GENRE_ARTS,
LOCALE_GENRE_ARTS_0,
LOCALE_GENRE_ARTS_1,
LOCALE_GENRE_ARTS_10,
@@ -59,12 +61,14 @@ typedef enum
LOCALE_GENRE_ARTS_7,
LOCALE_GENRE_ARTS_8,
LOCALE_GENRE_ARTS_9,
LOCALE_GENRE_CHILDRENS_PROGRAMMES,
LOCALE_GENRE_CHILDRENS_PROGRAMMES_0,
LOCALE_GENRE_CHILDRENS_PROGRAMMES_1,
LOCALE_GENRE_CHILDRENS_PROGRAMMES_2,
LOCALE_GENRE_CHILDRENS_PROGRAMMES_3,
LOCALE_GENRE_CHILDRENS_PROGRAMMES_4,
LOCALE_GENRE_CHILDRENS_PROGRAMMES_5,
LOCALE_GENRE_DOCUS_MAGAZINES,
LOCALE_GENRE_DOCUS_MAGAZINES_0,
LOCALE_GENRE_DOCUS_MAGAZINES_1,
LOCALE_GENRE_DOCUS_MAGAZINES_2,
@@ -73,6 +77,7 @@ typedef enum
LOCALE_GENRE_DOCUS_MAGAZINES_5,
LOCALE_GENRE_DOCUS_MAGAZINES_6,
LOCALE_GENRE_DOCUS_MAGAZINES_7,
LOCALE_GENRE_MOVIE,
LOCALE_GENRE_MOVIE_0,
LOCALE_GENRE_MOVIE_1,
LOCALE_GENRE_MOVIE_2,
@@ -82,6 +87,7 @@ typedef enum
LOCALE_GENRE_MOVIE_6,
LOCALE_GENRE_MOVIE_7,
LOCALE_GENRE_MOVIE_8,
LOCALE_GENRE_MUSIC_DANCE,
LOCALE_GENRE_MUSIC_DANCE_0,
LOCALE_GENRE_MUSIC_DANCE_1,
LOCALE_GENRE_MUSIC_DANCE_2,
@@ -89,19 +95,23 @@ typedef enum
LOCALE_GENRE_MUSIC_DANCE_4,
LOCALE_GENRE_MUSIC_DANCE_5,
LOCALE_GENRE_MUSIC_DANCE_6,
LOCALE_GENRE_NEWS,
LOCALE_GENRE_NEWS_0,
LOCALE_GENRE_NEWS_1,
LOCALE_GENRE_NEWS_2,
LOCALE_GENRE_NEWS_3,
LOCALE_GENRE_NEWS_4,
LOCALE_GENRE_SHOW,
LOCALE_GENRE_SHOW_0,
LOCALE_GENRE_SHOW_1,
LOCALE_GENRE_SHOW_2,
LOCALE_GENRE_SHOW_3,
LOCALE_GENRE_SOCIAL_POLITICAL,
LOCALE_GENRE_SOCIAL_POLITICAL_0,
LOCALE_GENRE_SOCIAL_POLITICAL_1,
LOCALE_GENRE_SOCIAL_POLITICAL_2,
LOCALE_GENRE_SOCIAL_POLITICAL_3,
LOCALE_GENRE_SPORTS,
LOCALE_GENRE_SPORTS_0,
LOCALE_GENRE_SPORTS_1,
LOCALE_GENRE_SPORTS_10,
@@ -114,6 +124,7 @@ typedef enum
LOCALE_GENRE_SPORTS_7,
LOCALE_GENRE_SPORTS_8,
LOCALE_GENRE_SPORTS_9,
LOCALE_GENRE_TRAVEL_HOBBIES,
LOCALE_GENRE_TRAVEL_HOBBIES_0,
LOCALE_GENRE_TRAVEL_HOBBIES_1,
LOCALE_GENRE_TRAVEL_HOBBIES_2,
@@ -379,6 +390,7 @@ typedef enum
LOCALE_EPGVIEWER_LENGTH,
LOCALE_EPGVIEWER_NODETAILED,
LOCALE_EPGVIEWER_NOTFOUND,
LOCALE_EVENTFINDER_GENRE,
LOCALE_EVENTFINDER_HEAD,
LOCALE_EVENTFINDER_HISTORY,
LOCALE_EVENTFINDER_KEYWORD,

View File

@@ -47,6 +47,8 @@ const char * locale_real_names[] =
"EPGPlus.stretch_mode",
"EPGPlus.swap_mode",
"EPGPlus.view_mode",
"GENRE.ALL",
"GENRE.ARTS",
"GENRE.ARTS.0",
"GENRE.ARTS.1",
"GENRE.ARTS.10",
@@ -59,12 +61,14 @@ const char * locale_real_names[] =
"GENRE.ARTS.7",
"GENRE.ARTS.8",
"GENRE.ARTS.9",
"GENRE.CHILDRENs_PROGRAMMES",
"GENRE.CHILDRENs_PROGRAMMES.0",
"GENRE.CHILDRENs_PROGRAMMES.1",
"GENRE.CHILDRENs_PROGRAMMES.2",
"GENRE.CHILDRENs_PROGRAMMES.3",
"GENRE.CHILDRENs_PROGRAMMES.4",
"GENRE.CHILDRENs_PROGRAMMES.5",
"GENRE.DOCUS_MAGAZINES",
"GENRE.DOCUS_MAGAZINES.0",
"GENRE.DOCUS_MAGAZINES.1",
"GENRE.DOCUS_MAGAZINES.2",
@@ -73,6 +77,7 @@ const char * locale_real_names[] =
"GENRE.DOCUS_MAGAZINES.5",
"GENRE.DOCUS_MAGAZINES.6",
"GENRE.DOCUS_MAGAZINES.7",
"GENRE.MOVIE",
"GENRE.MOVIE.0",
"GENRE.MOVIE.1",
"GENRE.MOVIE.2",
@@ -82,6 +87,7 @@ const char * locale_real_names[] =
"GENRE.MOVIE.6",
"GENRE.MOVIE.7",
"GENRE.MOVIE.8",
"GENRE.MUSIC_DANCE",
"GENRE.MUSIC_DANCE.0",
"GENRE.MUSIC_DANCE.1",
"GENRE.MUSIC_DANCE.2",
@@ -89,19 +95,23 @@ const char * locale_real_names[] =
"GENRE.MUSIC_DANCE.4",
"GENRE.MUSIC_DANCE.5",
"GENRE.MUSIC_DANCE.6",
"GENRE.NEWS",
"GENRE.NEWS.0",
"GENRE.NEWS.1",
"GENRE.NEWS.2",
"GENRE.NEWS.3",
"GENRE.NEWS.4",
"GENRE.SHOW",
"GENRE.SHOW.0",
"GENRE.SHOW.1",
"GENRE.SHOW.2",
"GENRE.SHOW.3",
"GENRE.SOCIAL_POLITICAL",
"GENRE.SOCIAL_POLITICAL.0",
"GENRE.SOCIAL_POLITICAL.1",
"GENRE.SOCIAL_POLITICAL.2",
"GENRE.SOCIAL_POLITICAL.3",
"GENRE.SPORTS",
"GENRE.SPORTS.0",
"GENRE.SPORTS.1",
"GENRE.SPORTS.10",
@@ -114,6 +124,7 @@ const char * locale_real_names[] =
"GENRE.SPORTS.7",
"GENRE.SPORTS.8",
"GENRE.SPORTS.9",
"GENRE.TRAVEL_HOBBIES",
"GENRE.TRAVEL_HOBBIES.0",
"GENRE.TRAVEL_HOBBIES.1",
"GENRE.TRAVEL_HOBBIES.2",
@@ -379,6 +390,7 @@ const char * locale_real_names[] =
"epgviewer.length",
"epgviewer.nodetailed",
"epgviewer.notfound",
"eventfinder.genre",
"eventfinder.head",
"eventfinder.history",
"eventfinder.keyword",