diff options
author | Tuomas Jormola <tj@solitudo.net> | 2017-05-23 20:23:54 +0200 |
---|---|---|
committer | Frank Neumann <fnu@yavdr.org> | 2017-05-23 20:23:54 +0200 |
commit | d4572192c5709b1a09c85a9f07844fde3ffeb65c (patch) | |
tree | 59bd3e60846f6958e7a687b17db80047af364813 | |
parent | b09b9e58bb7b168e37bace2fccddac2111c511c3 (diff) | |
download | vdr-plugin-text2skin-d4572192c5709b1a09c85a9f07844fde3ffeb65c.tar.gz vdr-plugin-text2skin-d4572192c5709b1a09c85a9f07844fde3ffeb65c.tar.bz2 |
New token: ChannelServiceReference
-rw-r--r-- | Docs/Reference.txt | 4 | ||||
-rw-r--r-- | common.c | 37 | ||||
-rw-r--r-- | common.h | 1 | ||||
-rw-r--r-- | display.c | 21 | ||||
-rw-r--r-- | xml/string.c | 2 | ||||
-rw-r--r-- | xml/string.h | 1 |
6 files changed, 65 insertions, 1 deletions
diff --git a/Docs/Reference.txt b/Docs/Reference.txt index bebbf8f..6a107e0 100644 --- a/Docs/Reference.txt +++ b/Docs/Reference.txt @@ -707,6 +707,8 @@ Defines an item for the list. ----------------------------------------------------------------------------- | ChannelShortName | | Short name of channel if available ----------------------------------------------------------------------------- +| ChannelServiceReference| | Service reference of channel if available +----------------------------------------------------------------------------- | ChannelBouquet | | Provider/bouquet name if available ----------------------------------------------------------------------------- | ChannelPortal | | Portal name if available @@ -1008,6 +1010,8 @@ Defines an item for the list. ----------------------------------------------------------------------------- | ChannelShortName | | Short name of channel if available ----------------------------------------------------------------------------- +| ChannelServiceReference| | Service reference of channel if available +----------------------------------------------------------------------------- | ChannelHasVPS | (also in Channel Display) | True, if current channel can broadcast VPS | (alt: HasVPS) | | ----------------------------------------------------------------------------- @@ -53,6 +53,43 @@ const char *ChannelShortName(const cChannel *Channel, int Number) return buffer; } +const char *ChannelServiceReference(const cChannel *Channel, int Number) +{ + static char buffer[256]; + int hash = 0; + buffer[0] = '\0'; + if (Channel) { + if (cSource::IsSat(Channel->Source())) { + hash = Channel->Source() & cSource::st_Pos; + if (hash > 0x00007FFF) + hash |= 0xFFFF0000; + + if (hash < 0) + hash = -hash; + else + hash = 1800 + hash; + + hash = hash << 16; + } + else if (cSource::IsCable(Channel->Source())) + hash = 0xFFFF0000; + else if(cSource::IsTerr(Channel->Source())) + hash = 0xEEEE0000; + else if(cSource::IsAtsc(Channel->Source())) + hash = 0xDDDD0000; + + snprintf(buffer, sizeof(buffer), "1_0_%i_%X_%X_%X_%X_0_0_0", + (!(Channel->Vpid() == 0 && Channel->Apid(0) == 0) && (Channel->Vpid() == 0 || Channel->Vpid() == 1)) ? 2 : (Channel->Vtype() == 27) ? 19 : 1, + Channel->Sid(), + Channel->Tid(), + Channel->Nid(), + hash); + } + else if (!Number) + snprintf(buffer, sizeof(buffer), "%s", trVDR("*** Invalid Channel ***")); + return buffer; +} + const char *EventType(uint Number) { static char buffer[25]; @@ -39,6 +39,7 @@ const std::string SkinPath(void); const char *ChannelNumber(const cChannel *Channel, int Number); const char *ChannelName(const cChannel *Channel, int Number); const char *ChannelShortName(const cChannel *Channel, int Number); +const char *ChannelServiceReference(const cChannel *Channel, int Number); const char *EventType(uint Number); //const char *ChannelBouquet(const cChannel *Channel, int Number); @@ -127,6 +127,11 @@ cxType cText2SkinDisplayChannel::GetTokenData(const txToken &Token) ? (cxType)ChannelShortName(mChannel, mNumber) : (cxType)false; + case tChannelServiceReference: + return mChannel != NULL + ? (cxType)ChannelServiceReference(mChannel, mNumber) + : (cxType)false; + case tChannelBouquet: return mChannel != NULL ? (cxType)mChannel->Provider() @@ -1256,6 +1261,22 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token) } else return (cxType)false; + case tChannelServiceReference: + if (mEvent) { // extended EPG + cChannel *channel = Channels.GetByChannelID(mEvent->ChannelID(), true); + return channel != NULL + ? (cxType)ChannelServiceReference(channel, 0) + : (cxType)false; + } + else if (mRecording) { // recording Info + cRecordingInfo *recInfo = const_cast<cRecordingInfo*>(mRecording->Info()); + cChannel *channel = Channels.GetByChannelID(recInfo->ChannelID(), true); + return channel != NULL + ? (cxType)ChannelServiceReference(channel, 0) + : (cxType)false; + } else + return (cxType)false; + case tPresentHasVPS: return mEvent != NULL && mEvent->Vps() != 0 && mEvent->Vps() != mEvent->StartTime(); diff --git a/xml/string.c b/xml/string.c index 4d3e986..893a651 100644 --- a/xml/string.c +++ b/xml/string.c @@ -7,7 +7,7 @@ static const char *Tokens[__COUNT_TOKEN__] = { "DateTime", "FreeDiskSpace", "UsedDiskSpace", "TotalDiskSpace", "DiskUsage", "VideoSizeWidth", "VideoSizeHeight", "AudioTrack", "AudioChannel", // Channel Display - "ChannelNumber", "ChannelName", "ChannelShortName", "ChannelBouquet", "ChannelPortal", + "ChannelNumber", "ChannelName", "ChannelShortName", "ChannelServiceReference", "ChannelBouquet", "ChannelPortal", "ChannelSource", "ChannelID", "PresentStartDateTime", "PresentVPSDateTime", "CurrentEventsTitle1", "CurrentEventsStartDateTime1", "CurrentEventsStopDateTime1", "CurrentEventsChannelNumber1", "CurrentEventsChannelName1", "CurrentEventsIsRecording1", "CurrentEventsTitle2", "CurrentEventsStartDateTime2", "CurrentEventsStopDateTime2", "CurrentEventsChannelNumber2", "CurrentEventsChannelName2", "CurrentEventsIsRecording2", diff --git a/xml/string.h b/xml/string.h index da8470a..2c96690 100644 --- a/xml/string.h +++ b/xml/string.h @@ -22,6 +22,7 @@ enum exToken { tChannelNumber, tChannelName, tChannelShortName, + tChannelServiceReference, tChannelBouquet, tChannelPortal, tChannelSource, |