From 5bb69c2a347901c7d9a4c1756c1bcf9ca652e43d Mon Sep 17 00:00:00 2001 From: louis Date: Wed, 29 Jul 2015 22:44:55 +0200 Subject: [PATCH] added {watched} and {percentseen} to displaymenurecordings current view --- HISTORY | 4 +-- skinskeleton/xmlfiles/displaymenumain.xml | 2 +- .../xmlfiles/displaymenurecordings.xml | 2 ++ views/displaymenuitemcurrentview.c | 27 +++++++++++++++++-- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index f2c21ff..a50fb7b 100644 --- a/HISTORY +++ b/HISTORY @@ -400,5 +400,5 @@ Version 0.6.2 - added progressmodeonly viewelement in displayreplay - fixed bug in checking skin version - - +- added {watched} and {percentseen} to displaymenurecordings + current view diff --git a/skinskeleton/xmlfiles/displaymenumain.xml b/skinskeleton/xmlfiles/displaymenumain.xml index ac4af30..7ba9aee 100644 --- a/skinskeleton/xmlfiles/displaymenumain.xml +++ b/skinskeleton/xmlfiles/displaymenumain.xml @@ -112,7 +112,7 @@ {minutes} Duration, rest of minutes {elapsed} Elapsed time of current Schedule in min (0 for recordings) {remaining} Remaining time of current Schedule in min (0 for recordings) - {hasPoster} true if poster is available + {hasposter} true if poster is available {posterpath} Full Path of Poster to use in image path attribute {posterwidth} width of poster in pixel {posterheight} height of poster in pixel diff --git a/skinskeleton/xmlfiles/displaymenurecordings.xml b/skinskeleton/xmlfiles/displaymenurecordings.xml index 8d961b6..959e959 100644 --- a/skinskeleton/xmlfiles/displaymenurecordings.xml +++ b/skinskeleton/xmlfiles/displaymenurecordings.xml @@ -58,6 +58,8 @@ {durationeventhours} event duration, full hours {durationeventminutes} event duration, rest of minutes {new} true if recording is new + {percentseen} percent already watched, -1 for VDR < 2.1.8 + {watched} true if percentseen > 85% including MarginStop of not cutted recording {cutted} true if recording is cutted {folder} true if item is a folder {numrecordingsfolder} if item is a folder, number of recordings in this folder diff --git a/views/displaymenuitemcurrentview.c b/views/displaymenuitemcurrentview.c index 357543e..1b8d09e 100644 --- a/views/displaymenuitemcurrentview.c +++ b/views/displaymenuitemcurrentview.c @@ -512,10 +512,34 @@ bool cDisplayMenuItemCurrentRecordingView::Render(void) { stringTokens.insert(pair("name", buffer.c_str())); intTokens.insert(pair("new", usedRecording->IsNew())); + int percSeen = 0; +#if APIVERSNUM < 20108 + percSeen = -1; +#else + percSeen = 0; + int framesSeen = usedRecording->GetResume(); + int framesTotal = usedRecording->NumFrames(); + if (framesTotal > 0) { + percSeen = (double)framesSeen / (double)framesTotal * 100; + } +#endif + intTokens.insert(pair("percentseen", percSeen)); intTokens.insert(pair("newrecordingsfolder", newRecs)); intTokens.insert(pair("numrecordingsfolder", total)); intTokens.insert(pair("cutted", usedRecording->IsEdited())); - + int recDuration = usedRecording->LengthInSeconds(); + bool watched = false; + if (usedRecording->IsEdited()) { + if (percSeen >= 85) + watched = true; + } else { + int watchedLimit = recDuration * 85 / 100 - (Setup.MarginStop + 5)*60; + int watchedTime = percSeen * recDuration / 100; + if (watchedLimit > 0 && watchedTime > 0 && (watchedTime > watchedLimit)) + watched = true; + } + intTokens.insert(pair("watched", watched)); + SetScraperPoster(NULL, usedRecording); @@ -578,7 +602,6 @@ bool cDisplayMenuItemCurrentRecordingView::Render(void) { intTokens.insert(pair("month", sStartTime->tm_mon+1)); int duration = event->Duration() / 60; - int recDuration = usedRecording->LengthInSeconds(); recDuration = (recDuration>0)?(recDuration / 60):0; stringTokens.insert(pair("date", recDate.c_str())); stringTokens.insert(pair("time", recTime.c_str()));