diff options
author | Peter Bieringer <pb@bieringer.de> | 2021-02-04 08:19:42 +0100 |
---|---|---|
committer | Peter Bieringer <pb@bieringer.de> | 2021-02-04 08:19:42 +0100 |
commit | 4470a14f7088c57e7e37e997fa3436ba4369b24b (patch) | |
tree | 0f12cb20dc7e75274d1aa62ee85f2f4e5eecdcbb | |
parent | 0d5decc077e8263db8f9cd4336fe53f6d52d3234 (diff) | |
download | vdr-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.c | 56 | ||||
-rw-r--r-- | state.c | 33 | ||||
-rw-r--r-- | state.h | 4 |
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; @@ -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++; } @@ -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(); |