diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index e8ffc3247..d7d973257 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -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 diff --git a/data/locale/english.locale b/data/locale/english.locale index deb8b6a03..cd6588f08 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -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 diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index a1bde5e70..5293a4312 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -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) diff --git a/src/eitd/sectionsd.h b/src/eitd/sectionsd.h index 491a3963a..b278ba1d8 100644 --- a/src/eitd/sectionsd.h +++ b/src/eitd/sectionsd.h @@ -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); diff --git a/src/gui/eventlist.cpp b/src/gui/eventlist.cpp index c83a4f4ad..5087370db 100644 --- a/src/gui/eventlist.cpp +++ b/src/gui/eventlist.cpp @@ -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::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); diff --git a/src/gui/eventlist.h b/src/gui/eventlist.h index f55dafc4b..4a4aff473 100644 --- a/src/gui/eventlist.h +++ b/src/gui/eventlist.h @@ -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 *); diff --git a/src/system/locals.h b/src/system/locals.h index d6b8ecce2..c6615a96d 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -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, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index dd11a1553..8f2ad2d47 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -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",