summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-07-25 14:19:32 +0200
committerlouis <louis.braun@gmx.de>2015-07-25 14:19:32 +0200
commit6e0f56e56c8eae6052d59f840f7108befa389693 (patch)
tree56379a0ad187362a5a1fbc96151834a5f3436319
parentd9c5219f430e6963e239fa21f965aa1bf1b90ab0 (diff)
downloadvdr-plugin-skindesigner-6e0f56e56c8eae6052d59f840f7108befa389693.tar.gz
vdr-plugin-skindesigner-6e0f56e56c8eae6052d59f840f7108befa389693.tar.bz2
added progressmodeonly viewelement in displayreplay
-rw-r--r--HISTORY3
-rw-r--r--displayreplay.c12
-rw-r--r--dtd/displayreplay.dtd8
-rw-r--r--libcore/helpers.c13
-rw-r--r--libcore/helpers.h2
-rw-r--r--libtemplate/templateview.c6
-rw-r--r--libtemplate/templateviewelement.h1
-rw-r--r--skinskeleton/xmlfiles/displayreplay.xml10
-rw-r--r--views/displayreplayview.c14
-rw-r--r--views/displayreplayview.h1
10 files changed, 68 insertions, 2 deletions
diff --git a/HISTORY b/HISTORY
index bf82928..154076a 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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);