summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorDimitar Petrovski <dimeptr@gmail.com>2013-02-22 09:52:10 +0100
committerDimitar Petrovski <dimeptr@gmail.com>2013-02-22 09:52:10 +0100
commit60376c4c1f0a4b65cb07b89d5c095015ec3b1215 (patch)
tree17ffec6570452b26bb21436eabafdb24de5bf88b /util.c
parentc9a302eff85ad0d6c337743b7373b4ee0c7bded3 (diff)
downloadvdr-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.c38
1 files changed, 27 insertions, 11 deletions
diff --git a/util.c b/util.c
index e565b2e..f70c520 100644
--- a/util.c
+++ b/util.c
@@ -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;
+}
+
}