summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epghandler.c17
-rw-r--r--epghandler.h1
-rw-r--r--equivhandler.c96
-rw-r--r--equivhandler.h1
4 files changed, 42 insertions, 73 deletions
diff --git a/epghandler.c b/epghandler.c
index ecf5de9..e323ed1 100644
--- a/epghandler.c
+++ b/epghandler.c
@@ -30,17 +30,16 @@ bool cEEpgHandler::HandleEitEvent(cSchedule* Schedule,
if ((nid >= 0x1001 && nid <= 0x100B) || nid == 0x101 || nid == 0x100)
return true;
- //TODO!!! not for commit upsteram
- if (EitEvent->getDurationHour() > 10) {
- LogD(3, prep("Event longer than 10h Duration:%d DurationHour:%d StartTimeHour:%d"), EitEvent->getDuration(), EitEvent->getDurationHour(), EitEvent->getStartTimeHour());
- const cEvent* exEvent = Schedule->GetEventAround(EitEvent->getStartTime()+EitEvent->getDuration()/2);
- if (exEvent) {
- LogD(3, prep("10h Existing event %s startTime %d"), exEvent->Title(), exEvent->StartTime());
+ //TODO Should it be added in setup?
+ if (EitEvent->getDurationHour() > _LONG_EVENT_HOURS) {
+ LogD(4, prep("Event longer than 10h Duration:%d DurationHour:%d StartTimeHour:%d"), EitEvent->getDuration(), EitEvent->getDurationHour(), EitEvent->getStartTimeHour());
+ const cEvent* exEvent = Schedule->GetEventAround(EitEvent->getStartTime()+EitEvent->getDuration()/3);
+ const cEvent* exEvent2 = (const cEvent*)exEvent->Next();
+ if (exEvent && exEvent2 && difftime (exEvent2->EndTime(),EitEvent->getStartTime()+EitEvent->getDuration()) <= 0 ) {
+ LogD(3, prep("EitEvent overrides existing events '%s', '%s' ... Skipping"), exEvent->Title(), exEvent2->Title());
return true;
}
}
- //if (EitEvent->getDurationHour() > 3)
-// return true;
return false;
// return true;
@@ -54,7 +53,7 @@ bool cEEpgHandler::SetEventID(cEvent* Event, tEventID EventID) {
bool cEEpgHandler::SetTitle(cEvent* Event, const char* Title) {
LogD(3, prep("Event id:%d title:%s new title:%s"), Event->EventID(), Event->Title(), Title);
- if (!Event->Title() || Title && (!strcmp(Event->Title(),"") || (strcmp(Title,"") && strcmp(Event->Title(),Title))))
+ if (!Event->Title() || (Title && (!strcmp(Event->Title(),"") || (strcmp(Title,"") && strcmp(Event->Title(),Title)))))
Event->SetTitle(Title);
return true;
}
diff --git a/epghandler.h b/epghandler.h
index e1c6915..3219f58 100644
--- a/epghandler.h
+++ b/epghandler.h
@@ -38,6 +38,7 @@ private:
std::string origShortText;
std::string origDescription;
cEquivHandler* equivHandler;
+ static const int _LONG_EVENT_HOURS = 10;
};
#endif /*APIVERSNUM > 10725*/
diff --git a/equivhandler.c b/equivhandler.c
index b10c004..e449b1f 100644
--- a/equivhandler.c
+++ b/equivhandler.c
@@ -144,18 +144,7 @@ void cEquivHandler::updateEquivalent(cSchedules * Schedules, tChannelID channelI
LogD(2, prep("remove equivalent"));
pSchedule->DelEvent(pEqvEvent);
cEvent* newEvent = new cEvent (pEvent->EventID());
- newEvent->SetTableID (pEvent->TableID());
- newEvent->SetStartTime (pEvent->StartTime());
- newEvent->SetDuration (pEvent->Duration());
- newEvent->SetVersion (pEvent->Version());
-// newEvent->SetContents(pEvent->Contents());
- newEvent->SetParentalRating(pEvent->ParentalRating());
- newEvent->SetVps (pEvent->Vps());
- newEvent->SetTitle (pEvent->Title ());
- newEvent->SetShortText (pEvent->ShortText ());
- newEvent->SetDescription (pEvent->Description ());
-// newEvent->SetComponents (pEvent->Components());
- newEvent->FixEpgBugs ();
+ cloneEvent(newEvent, pEvent);
pSchedule->AddEvent(newEvent);
@@ -164,18 +153,7 @@ void cEquivHandler::updateEquivalent(cSchedules * Schedules, tChannelID channelI
} else {
LogD(3, prep("equivalent event does not exist"));
cEvent* newEvent = new cEvent (pEvent->EventID());
- newEvent->SetTableID (pEvent->TableID());
- newEvent->SetStartTime (pEvent->StartTime());
- newEvent->SetDuration (pEvent->Duration());
- newEvent->SetVersion (pEvent->Version());
-// newEvent->SetContents(pEvent->Contents());
- newEvent->SetParentalRating(pEvent->ParentalRating());
- newEvent->SetVps (pEvent->Vps());
- newEvent->SetTitle (pEvent->Title ());
- newEvent->SetShortText (pEvent->ShortText ());
- newEvent->SetDescription (pEvent->Description ());
-// newEvent->SetComponents (pEvent->Components());
- newEvent->FixEpgBugs ();
+ cloneEvent(newEvent, pEvent);
pSchedule->AddEvent(newEvent);
@@ -195,51 +173,13 @@ void cEquivHandler::updateEquivalent(tChannelID channelID, cEvent *pEvent){
LogD(2, prep("equivalent channel exists"));
tChannelID equChannelID (tChannelID::FromString((*it).second.c_str()));
cEvent* newEvent = new cEvent (pEvent->EventID());
- newEvent->SetTableID (pEvent->TableID());
- newEvent->SetStartTime (pEvent->StartTime());
- newEvent->SetDuration (pEvent->Duration());
- newEvent->SetVersion (pEvent->Version());
-// newEvent->SetContents(pEvent->Contents());
- newEvent->SetParentalRating(pEvent->ParentalRating());
- newEvent->SetVps (pEvent->Vps());
- newEvent->SetTitle (pEvent->Title ());
- newEvent->SetShortText (pEvent->ShortText ());
- newEvent->SetDescription (pEvent->Description ());
-// newEvent->SetComponents (pEvent->Components());
+ cloneEvent(newEvent, pEvent);
+
AddEvent(newEvent, equChannelID);
}
}
-//cSchedule * findFisrtSchedule (cSchedule * Schedule) {
-// if (Schedule->Prev())
-// return findFisrtSchedule((cSchedule *)Schedule->Prev());
-// else
-// return Schedule;
-//}
-//
-//cSchedule * findSchedule (cSchedule * Schedule, tChannelID channelID) {
-// if (Schedule->ChannelID() == channelID)
-// return Schedule;
-//
-// if (Schedule->Next())
-// return findSchedule((cSchedule *)Schedule->Next(), channelID);
-// else
-// return NULL;
-//}
-//
-//cSchedule * findEqvSchedule (cSchedule * Schedule, tChannelID channelID) {
-// cSchedule* foundSchedule = findSchedule(findFisrtSchedule(Schedule),channelID);
-//
-// if (foundSchedule)
-// return foundSchedule;
-//
-// cSchedule* sch = new cSchedule(channelID);
-// Schedule->Insert(sch);
-// return sch;
-//}
-
-
void cEquivHandler::sortEquivalents(tChannelID channelID, cSchedules* Schedules)
{
multimap<string, string>::iterator it;
@@ -263,3 +203,31 @@ void cEquivHandler::sortEquivalents(tChannelID channelID, cSchedules* Schedules)
}
}
}
+
+void cEquivHandler::cloneEvent(cEvent *Source, cEvent *Dest) {
+
+ Dest->SetEventID(Source->EventID());
+ Dest->SetTableID(Source->TableID());
+ Dest->SetVersion(Source->Version());
+ Dest->SetRunningStatus(Source->RunningStatus());
+ Dest->SetTitle(Source->Title());
+ Dest->SetShortText(Source->ShortText());
+ Dest->SetDescription(Source->Description());
+ cComponents *components = new cComponents();
+ if (Source->Components()) {
+ for (int i = 0; i < Source->Components()->NumComponents(); ++i)
+ components->SetComponent(i, Source->Components()->Component(i)->ToString());
+ }
+ Dest->SetComponents(components);
+ uchar contents[MaxEventContents];
+ for (int i = 0; i < MaxEventContents; ++i)
+ contents[i] = Source->Contents(i);
+ Dest->SetContents(contents);
+ Dest->SetParentalRating(Source->ParentalRating());
+ Dest->SetStartTime(Source->StartTime());
+ Dest->SetDuration(Source->Duration());
+ Dest->SetVps(Source->Vps());
+ if (Source->Seen())
+ Dest->SetSeen();
+}
+
diff --git a/equivhandler.h b/equivhandler.h
index 7e7cad7..25e6f37 100644
--- a/equivhandler.h
+++ b/equivhandler.h
@@ -27,6 +27,7 @@ public:
void updateEquivalent(cSchedules * Schedules, tChannelID channelID, cEvent *pEvent);
void updateEquivalent(tChannelID channelID, cEvent *pEvent);
void sortEquivalents(tChannelID channelID, cSchedules* Schedules);
+ void cloneEvent(cEvent *Source, cEvent *Dest)
static multimap<string, string> getEquiChanMap() { return cEquivHandler::equiChanMap; };