diff options
author | louis <louis.braun@gmx.de> | 2015-05-16 11:02:09 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-05-16 11:02:09 +0200 |
commit | 5aa23d261eab1a1eec1405e7bce058bf2c70f0fb (patch) | |
tree | 7f6b41aafd954613dc9fa61ece3217f47cab9df3 | |
parent | 53547389a4108b4120f04d3623ac16e913aa93f5 (diff) | |
download | vdr-plugin-skindesigner-5aa23d261eab1a1eec1405e7bce058bf2c70f0fb.tar.gz vdr-plugin-skindesigner-5aa23d261eab1a1eec1405e7bce058bf2c70f0fb.tar.bz2 |
timeshift support
-rw-r--r-- | displayreplay.c | 8 | ||||
-rw-r--r-- | skins/metrixhd/xmlfiles/displayreplay.xml | 22 | ||||
-rw-r--r-- | skinskeleton/xmlfiles/displayreplay.xml | 6 | ||||
-rw-r--r-- | views/displayreplayview.c | 13 |
4 files changed, 41 insertions, 8 deletions
diff --git a/displayreplay.c b/displayreplay.c index 8cf3f1f..7ae5e69 100644 --- a/displayreplay.c +++ b/displayreplay.c @@ -115,10 +115,14 @@ void cSDDisplayReplay::Flush(void) { } void cSDDisplayReplay::SetTimeShiftValues(const cRecording *recording) { + bool isTimeShift = false; +#if APIVERSNUM >= 20101 int usage = recording->IsInUse(); - if (!(usage & ruTimer)) + if (usage & ruTimer) + isTimeShift = true; +#endif + if (!isTimeShift) return; - const cRecordingInfo *recInfo = recording->Info(); if (!recInfo) return; diff --git a/skins/metrixhd/xmlfiles/displayreplay.xml b/skins/metrixhd/xmlfiles/displayreplay.xml index 907ea79..6993f9a 100644 --- a/skins/metrixhd/xmlfiles/displayreplay.xml +++ b/skins/metrixhd/xmlfiles/displayreplay.xml @@ -149,15 +149,17 @@ </progressbar> <!-- Available Variables cutmarks: + {timeshift} true if a timeshifted recording is displayed {marks[]} array of available marks {marks[position]} frame of current mark {marks[endposition]} frame where startmark ends {marks[total]} total number of frames + {marks[timeshifttotal]} total number of frames of timeshift event {marks[active]} true if current replay position hits exactly the mark {marks[startmark]} true if mark is start mark --> <cutmarks> - <area x="5%" y="89%" width="90%" height="3%" layer="3"> + <area condition="not{timeshift}" x="5%" y="89%" width="90%" height="3%" layer="3"> <loop name="marks" x="0" y="0" orientation="absolute"> <!-- draw mark --> <drawrectangle condition="not{marks[active]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="1" height="100%" color="{clrWhite}" /> @@ -175,6 +177,24 @@ <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="30%" width="{marks[endposition]}/{marks[total]}*{areawidth} - {marks[position]}/{marks[total]}*{areawidth}" height="40%" color="{clrWhite}" /> </loop> </area> + <area condition="{timeshift}" x="5%" y="89%" width="90%" height="3%" layer="3"> + <loop name="marks" x="0" y="0" orientation="absolute"> + <!-- draw mark --> + <drawrectangle condition="not{marks[active]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="0" width="1" height="100%" color="{clrWhite}" /> + <drawrectangle condition="not{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="0" width="5" height="1" color="{clrWhite}" /> + <drawrectangle condition="not{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="{areaheight}-1" width="5" height="1" color="{clrWhite}" /> + <drawrectangle condition="not{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth} - 5" y="0" width="5" height="1" color="{clrWhite}" /> + <drawrectangle condition="not{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth} - 5" y="{areaheight}-1" width="5" height="1" color="{clrWhite}" /> + <!-- draw active mark --> + <drawrectangle condition="{marks[active]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="0" width="1" height="100%" color="{clrRed}" /> + <drawrectangle condition="{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="0" width="5" height="1" color="{clrRed}" /> + <drawrectangle condition="{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="{areaheight}-1" width="5" height="1" color="{clrRed}" /> + <drawrectangle condition="{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth} - 5" y="0" width="5" height="1" color="{clrRed}" /> + <drawrectangle condition="{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth} - 5" y="{areaheight}-1" width="5" height="1" color="{clrRed}" /> + <!-- draw bar to next mark if mark is startmark--> + <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[timeshifttotal]}*{areawidth}" y="30%" width="{marks[endposition]}/{marks[timeshifttotal]}*{areawidth} - {marks[position]}/{marks[timeshifttotal]}*{areawidth}" height="40%" color="{clrWhite}" /> + </loop> + </area> </cutmarks> <!-- Available Variables controlicons and controliconsmodeonly: diff --git a/skinskeleton/xmlfiles/displayreplay.xml b/skinskeleton/xmlfiles/displayreplay.xml index 19ad6a2..98bc451 100644 --- a/skinskeleton/xmlfiles/displayreplay.xml +++ b/skinskeleton/xmlfiles/displayreplay.xml @@ -70,6 +70,8 @@ <!-- Available Variables totaltime: {rectotal} Total Time in hh:mm:ss + {timeshift} true if a timeshifted recording is displayed + {timeshifttotal} Total Time of timeshift event in hh:mm --> <totaltime> </totaltime> @@ -83,15 +85,19 @@ <!-- Available Variables progressbar: {current} current frame of recording {total} total frames of recording + {timeshift} true if a timeshifted recording is displayed + {timeshifttotal} total number of frames of timeshift event --> <progressbar> </progressbar> <!-- Available Variables cutmarks: + {timeshift} true if a timeshifted recording is displayed {marks[]} array of available marks {marks[position]} frame of current mark {marks[endposition]} frame where startmark ends {marks[total]} total number of frames + {marks[timeshifttotal]} total number of frames of timeshift event {marks[active]} true if current replay position hits exactly the mark {marks[startmark]} true if mark is start mark --> diff --git a/views/displayreplayview.c b/views/displayreplayview.c index 3e2fd28..400807f 100644 --- a/views/displayreplayview.c +++ b/views/displayreplayview.c @@ -271,7 +271,6 @@ void cDisplayReplayView::DrawProgressBar(int current, int total) { intTokens.insert(pair<string,int>("current", current)); intTokens.insert(pair<string,int>("total", total)); intTokens.insert(pair<string,int>("timeshift", timeShiftActive)); - if (timeShiftActive) { intTokens.insert(pair<string,int>("timeshifttotal", timeShiftFramesTotal)); } @@ -288,13 +287,14 @@ void cDisplayReplayView::DrawMarks(const cMarks *marks, int current, int total) map < string, string > stringTokens; map < string, int > intTokens; + intTokens.insert(pair<string,int>("timeshift", timeShiftActive)); + map < string, vector< map< string, string > > > loopTokens; vector< map< string, string > > markTokens; stringstream tot; - if (!timeShiftActive) - tot << total; - else - tot << timeShiftFramesTotal; + tot << total; + stringstream timeshifttot; + timeshifttot << timeShiftFramesTotal; bool isStartMark = true; for (const cMark *m = marks->First(); m; m = marks->Next(m)) { @@ -303,6 +303,9 @@ void cDisplayReplayView::DrawMarks(const cMarks *marks, int current, int total) pos << m->Position(); markVals.insert(pair< string, string >("marks[position]", pos.str())); markVals.insert(pair< string, string >("marks[total]", tot.str())); + if (timeShiftActive) { + markVals.insert(pair< string, string >("marks[timeshifttotal]", timeshifttot.str())); + } markVals.insert(pair< string, string >("marks[startmark]", isStartMark ? "1" : "0")); markVals.insert(pair< string, string >("marks[active]", (m->Position() == current) ? "1" : "0")); const cMark *m2 = marks->Next(m); |