From 4d0e2e731a7ee42a76c07af2cdb2e5b99131ac41 Mon Sep 17 00:00:00 2001 From: louis Date: Sun, 19 Oct 2014 07:47:42 +0200 Subject: display always newest recording of folders in recordings list --- views/displaymenuitemcurrentview.c | 47 ++++++++++++++++++++----------------- views/displaymenuitemview.c | 48 ++++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 45 deletions(-) (limited to 'views') diff --git a/views/displaymenuitemcurrentview.c b/views/displaymenuitemcurrentview.c index 7304aee..b62ae47 100644 --- a/views/displaymenuitemcurrentview.c +++ b/views/displaymenuitemcurrentview.c @@ -531,15 +531,29 @@ void cDisplayMenuItemCurrentRecordingView::Render(void) { } catch (...) { buffer = name.c_str(); } + + const cRecording *usedRecording = recording; + + if (isFolder) { + cRecordingsFolderInfo::cFolderInfo *folderInfo = recFolderInfo.Get(folderName.str().c_str()); + if (folderInfo) { + cRecording *newestRec = Recordings.GetByName(*folderInfo->LatestFileName); + if (newestRec) { + usedRecording = newestRec; + } + delete folderInfo; + } + } + stringTokens.insert(pair("name", buffer.c_str())); - intTokens.insert(pair("new", recording->IsNew())); + intTokens.insert(pair("new", usedRecording->IsNew())); intTokens.insert(pair("newrecordingsfolder", newRecs)); intTokens.insert(pair("numrecordingsfolder", total)); - intTokens.insert(pair("cutted", recording->IsEdited())); + intTokens.insert(pair("cutted", usedRecording->IsEdited())); - SetScraperPoster(NULL, recording); + SetScraperPoster(NULL, usedRecording); - const cRecordingInfo *info = recording->Info(); + const cRecordingInfo *info = usedRecording->Info(); if (!info) return; stringTokens.insert(pair("shorttext", info->ShortText() ? info->ShortText() : "")); @@ -548,23 +562,12 @@ void cDisplayMenuItemCurrentRecordingView::Render(void) { const cEvent *event = info->GetEvent(); if (!event) return; - string recDate = ""; - string recTime = ""; - - if (isFolder) { - cRecordingsFolderInfo::cFolderInfo *folderInfo = recFolderInfo.Get(folderName.str().c_str()); - if (folderInfo) { - recDate = *DateString(folderInfo->Latest); - recTime = *TimeString(folderInfo->Latest); - } - } else { - recDate = *(event->GetDateString()); - recTime = *(event->GetTimeString()); - if (recDate.find("1970") != string::npos) { - time_t start = recording->Start(); - recDate = *DateString(start); - recTime = *TimeString(start); - } + string recDate = *(event->GetDateString()); + string recTime = *(event->GetTimeString()); + if (recDate.find("1970") != string::npos) { + time_t start = usedRecording->Start(); + recDate = *DateString(start); + recTime = *TimeString(start); } time_t startTime = event->StartTime(); @@ -574,7 +577,7 @@ void cDisplayMenuItemCurrentRecordingView::Render(void) { intTokens.insert(pair("month", sStartTime->tm_mon+1)); int duration = event->Duration() / 60; - int recDuration = recording->LengthInSeconds(); + int recDuration = usedRecording->LengthInSeconds(); recDuration = (recDuration>0)?(recDuration / 60):0; stringTokens.insert(pair("date", recDate.c_str())); stringTokens.insert(pair("time", recTime.c_str())); diff --git a/views/displaymenuitemview.c b/views/displaymenuitemview.c index 2309d0a..7a546e9 100644 --- a/views/displaymenuitemview.c +++ b/views/displaymenuitemview.c @@ -635,36 +635,38 @@ void cDisplayMenuItemRecordingView::SetTokens(void) { buffer = name.c_str(); } + const cRecording *usedRecording = recording; + + if (isFolder) { + cRecordingsFolderInfo::cFolderInfo *folderInfo = recFolderInfo.Get(folderName.str().c_str()); + if (folderInfo) { + cRecording *newestRec = Recordings.GetByName(*folderInfo->LatestFileName); + if (newestRec) { + usedRecording = newestRec; + } + delete folderInfo; + } + } + stringTokens.insert(pair("name", buffer.c_str())); - intTokens.insert(pair("new", recording->IsNew())); + intTokens.insert(pair("new", usedRecording->IsNew())); intTokens.insert(pair("newrecordingsfolder", newRecs)); intTokens.insert(pair("numrecordingsfolder", total)); - intTokens.insert(pair("cutted", recording->IsEdited())); + intTokens.insert(pair("cutted", usedRecording->IsEdited())); const cEvent *event = NULL; - const cRecordingInfo *info = recording->Info(); + const cRecordingInfo *info = usedRecording->Info(); if (!info) return; event = info->GetEvent(); if (!event) return; - string recDate = ""; - string recTime = ""; - - if (isFolder) { - cRecordingsFolderInfo::cFolderInfo *folderInfo = recFolderInfo.Get(folderName.str().c_str()); - if (folderInfo) { - recDate = *DateString(folderInfo->Latest); - recTime = *TimeString(folderInfo->Latest); - } - } else { - recDate = *(event->GetDateString()); - recTime = *(event->GetTimeString()); - if (recDate.find("1970") != string::npos) { - time_t start = recording->Start(); - recDate = *DateString(start); - recTime = *TimeString(start); - } + string recDate = *(event->GetDateString()); + string recTime = *(event->GetTimeString()); + if (recDate.find("1970") != string::npos) { + time_t start = usedRecording->Start(); + recDate = *DateString(start); + recTime = *TimeString(start); } time_t startTime = event->StartTime(); @@ -674,7 +676,7 @@ void cDisplayMenuItemRecordingView::SetTokens(void) { intTokens.insert(pair("month", sStartTime->tm_mon+1)); int duration = event->Duration() / 60; - int recDuration = recording->LengthInSeconds(); + int recDuration = usedRecording->LengthInSeconds(); recDuration = (recDuration>0)?(recDuration / 60):0; stringTokens.insert(pair("date", recDate.c_str())); stringTokens.insert(pair("time", recTime.c_str())); @@ -686,7 +688,7 @@ void cDisplayMenuItemRecordingView::SetTokens(void) { stringTokens.insert(pair("durationeventminutes", *cString::sprintf("%.2d", duration%60))); static cPlugin *pScraper = GetScraperPlugin(); - if (!pScraper || !recording) { + if (!pScraper || !usedRecording) { intTokens.insert(pair("hasposterthumbnail", false)); intTokens.insert(pair("thumbnailbwidth", -1)); intTokens.insert(pair("thumbnailheight", -1)); @@ -696,7 +698,7 @@ void cDisplayMenuItemRecordingView::SetTokens(void) { ScraperGetPosterThumb call; call.event = NULL; - call.recording = recording; + call.recording = usedRecording; if (pScraper->Service("GetPosterThumb", &call)) { intTokens.insert(pair("hasposterthumbnail", true)); intTokens.insert(pair("thumbnailbwidth", call.poster.width)); -- cgit v1.2.3