diff options
author | louis <louis.braun@gmx.de> | 2015-07-25 14:19:32 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-07-25 14:19:32 +0200 |
commit | 6e0f56e56c8eae6052d59f840f7108befa389693 (patch) | |
tree | 56379a0ad187362a5a1fbc96151834a5f3436319 | |
parent | d9c5219f430e6963e239fa21f965aa1bf1b90ab0 (diff) | |
download | vdr-plugin-skindesigner-6e0f56e56c8eae6052d59f840f7108befa389693.tar.gz vdr-plugin-skindesigner-6e0f56e56c8eae6052d59f840f7108befa389693.tar.bz2 |
added progressmodeonly viewelement in displayreplay
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | displayreplay.c | 12 | ||||
-rw-r--r-- | dtd/displayreplay.dtd | 8 | ||||
-rw-r--r-- | libcore/helpers.c | 13 | ||||
-rw-r--r-- | libcore/helpers.h | 2 | ||||
-rw-r--r-- | libtemplate/templateview.c | 6 | ||||
-rw-r--r-- | libtemplate/templateviewelement.h | 1 | ||||
-rw-r--r-- | skinskeleton/xmlfiles/displayreplay.xml | 10 | ||||
-rw-r--r-- | views/displayreplayview.c | 14 | ||||
-rw-r--r-- | views/displayreplayview.h | 1 |
10 files changed, 68 insertions, 2 deletions
@@ -397,3 +397,6 @@ Version 0.6.1 - added version check for skinrepositiries Version 0.6.2 + +- added progressmodeonly viewelement in displayreplay + diff --git a/displayreplay.c b/displayreplay.c index 3d5e346..b57a696 100644 --- a/displayreplay.c +++ b/displayreplay.c @@ -59,6 +59,7 @@ void cSDDisplayReplay::SetMode(bool Play, bool Forward, int Speed) { } else { replayView->ClearOnPause(); } + replayView->DrawControlIcons(Play, Forward, Speed, modeOnly); initialModeSet = true; } @@ -103,7 +104,16 @@ void cSDDisplayReplay::Flush(void) { replayView->DrawDate(); replayView->DrawTime(); } - + if (modeOnly) { + cControl *control = cControl::Control(); + if (control) { + double fps = control->FramesPerSecond(); + int current = 0; + int total = 0; + if (control->GetIndex(current, total)) + replayView->DrawProgressModeOnly(fps, current, total); + } + } if (initial && initialModeSet) { replayView->DrawBackground(modeOnly); replayView->DrawCustomTokens(); diff --git a/dtd/displayreplay.dtd b/dtd/displayreplay.dtd index e0bfa3b..f15fb74 100644 --- a/dtd/displayreplay.dtd +++ b/dtd/displayreplay.dtd @@ -5,7 +5,7 @@ <!ELEMENT displayreplay (background | backgroundmodeonly |datetime | time |
scrapercontent | rectitle | recinfo | currenttime |
totaltime | endtime | progressbar | cutmarks | controlicons |
- controliconsmodeonly | jump | message | onpause |
+ controliconsmodeonly | progressmodeonly | jump | message | onpause |
onpausemodeonly | customtokens)*>
<!ATTLIST displayreplay
x CDATA #REQUIRED
@@ -115,6 +115,12 @@ condition CDATA #IMPLIED
>
+<!ELEMENT progressmodeonly (areacontainer|area|areascroll)*>
+<!ATTLIST progressmodeonly
+ debug CDATA #IMPLIED
+ condition CDATA #IMPLIED
+>
+
<!ELEMENT jump (areacontainer|area|areascroll)*>
<!ATTLIST jump
debug CDATA #IMPLIED
diff --git a/libcore/helpers.c b/libcore/helpers.c index 9fb0bdf..e195c37 100644 --- a/libcore/helpers.c +++ b/libcore/helpers.c @@ -213,6 +213,19 @@ void cStopWatch::Stop(const char* message) { dsyslog("skindesigner: %s - needed %d ms", message, (int)(cTimeMs::Now() - start)); } +string GetTimeString(int seconds) { + time_t sec(seconds); + tm *p = gmtime(&sec); + int hours = p->tm_hour; + int mins = p->tm_min; + int secs = p->tm_sec; + if (hours > 0) { + return *cString::sprintf("%d:%02d:%02d", hours, mins, secs); + } + return *cString::sprintf("%02d:%02d", mins, secs);; +} + + //View Helpers string GetScreenResolutionString(int width, int height, bool *isHD) { string name = ""; diff --git a/libcore/helpers.h b/libcore/helpers.h index b370eb0..74ed7d3 100644 --- a/libcore/helpers.h +++ b/libcore/helpers.h @@ -41,6 +41,8 @@ public: void Stop(const char* message); }; +string GetTimeString(int seconds); + string GetScreenResolutionString(int width, int height, bool *isHD); string GetScreenAspectString(double aspect, bool *isWideScreen); diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c index 363c37a..fcedee8 100644 --- a/libtemplate/templateview.c +++ b/libtemplate/templateview.c @@ -1739,6 +1739,7 @@ void cTemplateViewReplay::SetViewElements(void) { viewElementsAllowed.insert("cutmarks"); viewElementsAllowed.insert("controlicons"); viewElementsAllowed.insert("controliconsmodeonly"); + viewElementsAllowed.insert("progressmodeonly"); viewElementsAllowed.insert("jump"); viewElementsAllowed.insert("message"); viewElementsAllowed.insert("onpause"); @@ -1785,6 +1786,9 @@ string cTemplateViewReplay::GetViewElementName(eViewElement ve) { case veControlIconsModeOnly: name = "Control Icons Mode only"; break; + case veProgressModeOnly: + name = "Progress Mode only"; + break; case veBackgroundModeOnly: name = "Background Mode only"; break; @@ -1839,6 +1843,8 @@ void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmapNode *pi ve = veControlIcons; } else if (!sViewElement.compare("controliconsmodeonly")) { ve = veControlIconsModeOnly; + } else if (!sViewElement.compare("progressmodeonly")) { + ve = veProgressModeOnly; } else if (!sViewElement.compare("backgroundmodeonly")) { ve = veBackgroundModeOnly; } else if (!sViewElement.compare("jump")) { diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h index cbc2911..32f2ecc 100644 --- a/libtemplate/templateviewelement.h +++ b/libtemplate/templateviewelement.h @@ -68,6 +68,7 @@ enum eViewElement { veCuttingMarks,
veControlIcons,
veControlIconsModeOnly,
+ veProgressModeOnly,
veBackgroundModeOnly,
veRecJump,
veOnPause,
diff --git a/skinskeleton/xmlfiles/displayreplay.xml b/skinskeleton/xmlfiles/displayreplay.xml index 98bc451..911b6be 100644 --- a/skinskeleton/xmlfiles/displayreplay.xml +++ b/skinskeleton/xmlfiles/displayreplay.xml @@ -122,11 +122,21 @@ <controliconsmodeonly> </controliconsmodeonly> + <!-- Available Variables progressmodeonly: + {current} current frame of recording + {total} total frames of recording + {timecurrent} current time in hh:mm:ss or mm:ss if shorter that one hour + {timetotal} total time in hh:mm:ss or mm:ss if shorter that one hour + --> + <progressmodeonly> + </progressmodeonly> + <!-- Available Variables jump: {jump} time to jump to in hh:mm --> <jump> </jump> + <!-- Available Variables message: {text} message text {status} true if message is a status message diff --git a/views/displayreplayview.c b/views/displayreplayview.c index 364b801..22f1ee9 100644 --- a/views/displayreplayview.c +++ b/views/displayreplayview.c @@ -349,6 +349,20 @@ void cDisplayReplayView::DrawControlIcons(bool play, bool forward, int speed, bo } } +void cDisplayReplayView::DrawProgressModeOnly(double fps, int current, int total) { + string cur = GetTimeString((double)current / fps); + string tot = GetTimeString((double)total / fps); + map < string, string > stringTokens; + map < string, int > intTokens; + intTokens.insert(pair<string,int>("current", current)); + intTokens.insert(pair<string,int>("total", total)); + stringTokens.insert(pair<string,string>("timecurrent", cur)); + stringTokens.insert(pair<string,string>("timetotal", tot)); + ClearViewElement(veProgressModeOnly); + DrawViewElement(veProgressModeOnly, &stringTokens, &intTokens); +} + + void cDisplayReplayView::DrawJump(const char *jump) { if (!jump) { ClearViewElement(veRecJump); diff --git a/views/displayreplayview.h b/views/displayreplayview.h index f776d3d..96255e9 100644 --- a/views/displayreplayview.h +++ b/views/displayreplayview.h @@ -38,6 +38,7 @@ public: void DrawProgressBar(int current, int total); void DrawMarks(const cMarks *marks, int current, int total); void DrawControlIcons(bool play, bool forward, int speed, bool modeOnly); + void DrawProgressModeOnly(double fps, int current, int total); void DrawJump(const char *jump); void DrawMessage(eMessageType type, const char *text); void DrawOnPause(string recFileName, bool modeOnly); |