diff options
Diffstat (limited to 'equivhandler.c')
-rw-r--r-- | equivhandler.c | 96 |
1 files changed, 32 insertions, 64 deletions
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(); +} + |