#define __STL_CONFIG_H #include #include "displayreplayonpauseview.h" cDisplayReplayOnPauseView::cDisplayReplayOnPauseView(cTemplateViewElement *tmplViewElement) : cView(tmplViewElement) { tmplViewElement->SetPixOffset(0); delay = tmplViewElement->GetNumericParameter(ptDelay) * 1000; SetFadeTime(tmplViewElement->GetNumericParameter(ptFadeTime)); resetSleep = false; } cDisplayReplayOnPauseView::~cDisplayReplayOnPauseView() { CancelSave(); FadeOut(); } void cDisplayReplayOnPauseView::Render(void) { map < string, string > stringTokens; map < string, int > intTokens; map < string, vector< map< string, string > > > loopTokens; const cRecording *recording = NULL; cControl *control = cControl::Control(); if (control) { recording = control->GetRecording(); } if (recording) { string name = recording->Name() ? recording->Name() : ""; stringTokens.insert(pair("name", name)); const cRecordingInfo *info = recording->Info(); if (info) { stringTokens.insert(pair("shorttext", info->ShortText() ? info->ShortText() : "")); stringTokens.insert(pair("description", info->Description() ? info->Description() : "")); const cEvent *event = info->GetEvent(); if (event) { string recDate = *(event->GetDateString()); string recTime = *(event->GetTimeString()); if (recDate.find("1970") != string::npos) { time_t start = recording->Start(); recDate = *DateString(start); recTime = *TimeString(start); } stringTokens.insert(pair("date", recDate.c_str())); stringTokens.insert(pair("time", recTime.c_str())); time_t startTime = event->StartTime(); struct tm * sStartTime = localtime(&startTime); intTokens.insert(pair("year", sStartTime->tm_year + 1900)); intTokens.insert(pair("daynumeric", sStartTime->tm_mday)); intTokens.insert(pair("month", sStartTime->tm_mon+1)); int duration = event->Duration() / 60; int recDuration = recording->LengthInSeconds(); recDuration = (recDuration>0)?(recDuration / 60):0; intTokens.insert(pair("duration", recDuration)); intTokens.insert(pair("durationhours", recDuration / 60)); stringTokens.insert(pair("durationminutes", *cString::sprintf("%.2d", recDuration%60))); intTokens.insert(pair("durationevent", duration)); intTokens.insert(pair("durationeventhours", duration / 60)); stringTokens.insert(pair("durationeventminutes", *cString::sprintf("%.2d", duration%60))); } } else { stringTokens.insert(pair("shorttext", "")); stringTokens.insert(pair("description", "")); int recDuration = recording->LengthInSeconds(); recDuration = (recDuration>0)?(recDuration / 60):0; stringTokens.insert(pair("date", "")); stringTokens.insert(pair("time", "")); intTokens.insert(pair("duration", recDuration)); intTokens.insert(pair("durationhours", recDuration / 60)); stringTokens.insert(pair("durationminutes", *cString::sprintf("%.2d", recDuration%60))); intTokens.insert(pair("durationevent", 0)); intTokens.insert(pair("durationeventhours", 0)); stringTokens.insert(pair("durationeventminutes", "")); } } else { stringTokens.insert(pair("name", "")); stringTokens.insert(pair("shorttext", "")); stringTokens.insert(pair("description", "")); stringTokens.insert(pair("date", "")); stringTokens.insert(pair("time", "")); stringTokens.insert(pair("durationminutes", "")); stringTokens.insert(pair("durationeventminutes", "")); } SetScraperTokens(NULL, recording, stringTokens, intTokens, loopTokens); DrawViewElement(veOnPause, &stringTokens, &intTokens, &loopTokens); } void cDisplayReplayOnPauseView::Action(void) { bool doContinue; int sleepSlice = 10; do { doContinue = false; for (int i = 0; Running() && (i*sleepSlice < delay); i++) { cCondWait::SleepMs(sleepSlice); if (resetSleep) { doContinue = true; resetSleep = false; break; } } } while (doContinue); if (!Running()) return; Render(); SetInitFinished(); FadeIn(); DoFlush(); }