diff options
author | Dimitar Petrovski <dimeptr@gmail.com> | 2013-02-22 09:52:10 +0100 |
---|---|---|
committer | Dimitar Petrovski <dimeptr@gmail.com> | 2013-02-22 09:52:10 +0100 |
commit | 60376c4c1f0a4b65cb07b89d5c095015ec3b1215 (patch) | |
tree | 17ffec6570452b26bb21436eabafdb24de5bf88b /util.c | |
parent | c9a302eff85ad0d6c337743b7373b4ee0c7bded3 (diff) | |
download | vdr-plugin-eepg-60376c4c1f0a4b65cb07b89d5c095015ec3b1215.tar.gz vdr-plugin-eepg-60376c4c1f0a4b65cb07b89d5c095015ec3b1215.tar.bz2 |
Added ability to translate themes. Examples added
Fixed handling of duplicate epg entries
Added new SKY themes
Added checking/updating of themes files on load
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 38 |
1 files changed, 27 insertions, 11 deletions
@@ -26,6 +26,7 @@ int YesterdayEpochUTC; struct hufftab *tables[2][128]; int table_size[2][128]; +map<string,string> tableDict; EFormat Format; cEquivHandler* EquivHandler; @@ -207,11 +208,17 @@ void cAddEventThread::Action(void) (*it).second->Del(event, false); - cEvent *ev = (cEvent *) schedule->GetEventAround(event->StartTime()); - if (ev && (ev->EventID() == event->EventID() || (event->Title() && strcasecmp(ev->Title(), event->Title()) == 0)) - && event->StartTime() <= ev->StartTime() && event->EndTime() > ev->StartTime()){ - MergeEquivalents(event, ev); - schedule->DelEvent(ev); + for (cEvent *ev = schedule->Events()->First(); ev; ev = schedule->Events()->Next(ev)) { + if (ev->StartTime() > event->EndTime()) { + break; + } + if (ev && (ev->EventID() == event->EventID() || (event->Title() && strcasecmp(ev->Title(), event->Title()) == 0)) + && ((event->StartTime() >= ev->StartTime() && event->StartTime() < ev->EndTime()) + || (ev->StartTime() >= event->StartTime() && ev->StartTime() < event->EndTime()))){ + MergeEquivalents(event, ev); + schedule->DelEvent(ev); + break; + } } event = schedule->AddEvent(event); @@ -262,18 +269,18 @@ string ExtractAttributes(string text) { } - inline void cAddEventThread::MergeEquivalents(cEvent* dest, cEvent* src) { if (!dest->ShortText() || !strcmp(dest->ShortText(),"")) dest->SetShortText(src->ShortText()); //Handle the Category and Genre, and optionally future tags - if ((dest->Description() || strcmp(src->Description(),"")) && - (!dest->Description() || - (dest->Description() && strstr(src->Description(),dest->Description())) != 0 )) { + if (!src->Description() || !strcmp(src->Description(),"")) + return; + + if ((!dest->Description() || strstr(src->Description(),dest->Description()))) { dest->SetDescription(src->Description()); - } else if (src->Description() && !strcmp(src->Description(),"") && dest->Description()) { + } else if (dest->Description()) { string desc = dest->Description() ? dest->Description() : ""; desc += ExtractAttributes(desc); @@ -283,7 +290,6 @@ inline void cAddEventThread::MergeEquivalents(cEvent* dest, cEvent* src) } - static cAddEventThread AddEventThread; // --- @@ -509,4 +515,14 @@ void cCharsetFixer::InitCharsets(const cChannel* Channel) } +string findThemeTr(const char* text) +{ + map<string,string>::iterator it; + string trans = text; + if ((it = tableDict.find(trans)) != tableDict.end()) + trans = it->second; + LogD(4, prep("original:%s translated:%s map size:%d"), text, trans.c_str(), tableDict.size()); + return trans; +} + } |