summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Bieringer <pb@bieringer.de>2021-02-04 08:19:42 +0100
committerPeter Bieringer <pb@bieringer.de>2021-02-04 08:19:42 +0100
commit4470a14f7088c57e7e37e997fa3436ba4369b24b (patch)
tree0f12cb20dc7e75274d1aa62ee85f2f4e5eecdcbb
parent0d5decc077e8263db8f9cd4336fe53f6d52d3234 (diff)
downloadvdr-plugin-graphlcd-4470a14f7088c57e7e37e997fa3436ba4369b24b.tar.gz
vdr-plugin-graphlcd-4470a14f7088c57e7e37e997fa3436ba4369b24b.tar.bz2
add support for 3 dedicated recording lines and symbols: IsRecording1/2/3 and Recording1/2/3
-rw-r--r--skinconfig.c56
-rw-r--r--state.c33
-rw-r--r--state.h4
3 files changed, 85 insertions, 8 deletions
diff --git a/skinconfig.c b/skinconfig.c
index 39b6c75..f5ada81 100644
--- a/skinconfig.c
+++ b/skinconfig.c
@@ -55,7 +55,13 @@ typedef enum _eTokenId
tokPrivateRecordingStart,
tokIsRecording,
+ tokIsRecording1,
+ tokIsRecording2,
+ tokIsRecording3,
tokRecordings,
+ tokRecording1,
+ tokRecording2,
+ tokRecording3,
tokPrivateRecordingEnd,
// present event
@@ -208,7 +214,13 @@ static const std::string Tokens[tokCountToken] =
"privateRecordingStart",
"IsRecording",
+ "IsRecording1",
+ "IsRecording2",
+ "IsRecording3",
"Recordings",
+ "Recording1",
+ "Recording2",
+ "Recording3",
"privateRecordingEnd",
"privatePresentStart",
@@ -466,14 +478,50 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
case tokIsRecording:
{
if (Token.Attrib.Type == GLCD::aNumber)
- return mState->IsRecording(Token.Attrib.Number);
- return mState->IsRecording(-1);
+ return mState->IsRecording(Token.Attrib.Number, 0);
+ return mState->IsRecording(-1, 0);
+ }
+ case tokIsRecording1:
+ {
+ if (Token.Attrib.Type == GLCD::aNumber)
+ return mState->IsRecording(Token.Attrib.Number, 1);
+ return mState->IsRecording(-1, 1);
+ }
+ case tokIsRecording2:
+ {
+ if (Token.Attrib.Type == GLCD::aNumber)
+ return mState->IsRecording(Token.Attrib.Number, 2);
+ return mState->IsRecording(-1, 2);
+ }
+ case tokIsRecording3:
+ {
+ if (Token.Attrib.Type == GLCD::aNumber)
+ return mState->IsRecording(Token.Attrib.Number, 3);
+ return mState->IsRecording(-1, 3);
}
case tokRecordings:
{
if (Token.Attrib.Type == GLCD::aNumber)
- return mState->Recordings(Token.Attrib.Number);
- return mState->Recordings(-1);
+ return mState->Recordings(Token.Attrib.Number, 0);
+ return mState->Recordings(-1, 0);
+ }
+ case tokRecording1:
+ {
+ if (Token.Attrib.Type == GLCD::aNumber)
+ return mState->Recordings(Token.Attrib.Number, 1);
+ return mState->Recordings(-1, 1);
+ }
+ case tokRecording2:
+ {
+ if (Token.Attrib.Type == GLCD::aNumber)
+ return mState->Recordings(Token.Attrib.Number, 2);
+ return mState->Recordings(-1, 2);
+ }
+ case tokRecording3:
+ {
+ if (Token.Attrib.Type == GLCD::aNumber)
+ return mState->Recordings(Token.Attrib.Number, 3);
+ return mState->Recordings(-1, 3);
}
default:
break;
diff --git a/state.c b/state.c
index 2f9780c..d3233ce 100644
--- a/state.c
+++ b/state.c
@@ -872,15 +872,24 @@ tReplayState cGraphLCDState::GetReplayState()
return ret;
}
-bool cGraphLCDState::IsRecording(int CardNumber)
+bool cGraphLCDState::IsRecording(int CardNumber, int selector)
{
bool ret = false;
std::vector <tRecording>::iterator it;
+ int count = 0;
mutex.Lock();
+ // dsyslog("%s/%s: called CardNumber=%d selector=%d mRecordings.size=%lu", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, mRecordings.size());
if (CardNumber == -1 && mRecordings.size() > 0)
{
+ if (selector > 0) {
+ if (mRecordings.size() >= (long unsigned int) selector) {
+ // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d mRecordings.size=%lu", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, mRecordings.size());
+ ret = true;
+ }
+ } else {
ret = true;
+ }
}
else
{
@@ -889,8 +898,17 @@ bool cGraphLCDState::IsRecording(int CardNumber)
{
if (it->deviceNumber == CardNumber)
{
+ count++;
+ if (selector > 0) {
+ if (count == selector) {
+ // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d count=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, count);
+ ret = true;
+ break;
+ }
+ } else {
ret = true;
break;
+ }
}
it++;
}
@@ -900,20 +918,31 @@ bool cGraphLCDState::IsRecording(int CardNumber)
return ret;
}
-std::string cGraphLCDState::Recordings(int CardNumber)
+std::string cGraphLCDState::Recordings(int CardNumber, int selector)
{
std::string ret = "";
std::vector <tRecording>::iterator it;
+ int count = 0;
mutex.Lock();
+ // dsyslog("%s/%s: called CardNumber=%d selector=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector);
it = mRecordings.begin();
while (it != mRecordings.end())
{
if (CardNumber == -1 || it->deviceNumber == CardNumber)
{
+ count++;
+ if (selector > 0) {
+ if (count == selector) {
+ // dsyslog("%s/%s: selector hit CardNumber=%d selector=%d count=%d", PLUGIN_NAME_I18N, __FUNCTION__, CardNumber, selector, count);
+ ret += it->name;
+ break;
+ }
+ } else {
if (ret.length() > 0)
ret += "\n";
ret += it->name;
+ }
}
it++;
}
diff --git a/state.h b/state.h
index 67cdb66..553ba6d 100644
--- a/state.h
+++ b/state.h
@@ -158,8 +158,8 @@ public:
tEvent GetPresentEvent();
tEvent GetFollowingEvent();
tReplayState GetReplayState();
- bool IsRecording(int CardNumber);
- std::string Recordings(int CardNumber);
+ bool IsRecording(int CardNumber, int selector);
+ std::string Recordings(int CardNumber, int selector);
tOsdState GetOsdState();
void ResetOsdStateScroll();
tVolumeState GetVolumeState();