From c9c2d953a56215d0db76b8cba4aa627f164a2fc9 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Sun, 24 Jan 2021 13:02:35 +0100 Subject: [PATCH 1/6] - retrieve ChannelName from 'info' and fallback via ChannelID from active channel list (reverse mechanism) - remove exposing ChannelID (senseless as default 'info' is not containing it) --- coreengine/definitions.h | 2 - coreengine/listelements.c | 52 +++++++++---------- coreengine/viewdetail.c | 29 ++++++----- coreengine/viewelementsdisplaymenu.c | 28 +++++----- .../xmlfiles/displaymenurecordings.xml | 2 - 5 files changed, 55 insertions(+), 58 deletions(-) diff --git a/coreengine/definitions.h b/coreengine/definitions.h index 57ce803..534f154 100644 --- a/coreengine/definitions.h +++ b/coreengine/definitions.h @@ -1168,7 +1168,6 @@ enum class eLeMenuRecordingsIT { hasposter, posterwidth, posterheight, - recchannelnumber, framesPerSecond, isHD, isUHD, @@ -1218,7 +1217,6 @@ enum class eCeMenuRecordingsIT { hasposter, posterwidth, posterheight, - recchannelnumber, framesPerSecond, isHD, isUHD, diff --git a/coreengine/listelements.c b/coreengine/listelements.c index 6f66097..6c500bf 100644 --- a/coreengine/listelements.c +++ b/coreengine/listelements.c @@ -1756,7 +1756,6 @@ void cLeMenuRecordings::SetTokenContainer(void) { tokenContainer->DefineIntToken("{isRadio}", (int)eLeMenuRecordingsIT::isRadio); tokenContainer->DefineStringToken("{recchannelname}", (int)eLeMenuRecordingsST::recchannelname); tokenContainer->DefineStringToken("{recchannelid}", (int)eLeMenuRecordingsST::recchannelid); - tokenContainer->DefineIntToken("{recchannelnumber}", (int)eLeMenuRecordingsIT::recchannelnumber); InheritTokenContainer(); } @@ -1856,21 +1855,21 @@ bool cLeMenuRecordings::Parse(bool forced) { delete[] recName; if (info) { + if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { + tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelname, info->ChannelName()); + tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelid, info->ChannelID().ToString()); + } else { #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) - LOCK_CHANNELS_READ; - const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); + LOCK_CHANNELS_READ; + const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); #else - const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); + const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); #endif - if (channel) { - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelname, channel->Name()); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelid, *channel->GetChannelID().ToString()); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::recchannelnumber, channel->Number()); - } else { - // fallback to information provided in 'info' if channel is no longer found in active channels - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelname, info->ChannelName()); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelid, info->ChannelID().ToString()); - } + if (channel) { + tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelname, channel->Name()); + tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelid, *channel->GetChannelID().ToString()); + } + } } cString recDate = event->GetDateString(); @@ -2031,7 +2030,6 @@ void cCeMenuRecordings::SetTokenContainer(void) { tokenContainer->DefineIntToken("{isRadio}", (int)eCeMenuRecordingsIT::isRadio); tokenContainer->DefineStringToken("{recchannelname}", (int)eCeMenuRecordingsST::recchannelname); tokenContainer->DefineStringToken("{recchannelid}", (int)eCeMenuRecordingsST::recchannelid); - tokenContainer->DefineIntToken("{recchannelnumber}", (int)eCeMenuRecordingsIT::recchannelnumber); InheritTokenContainer(); } @@ -2137,21 +2135,21 @@ bool cCeMenuRecordings::Parse(bool forced) { if (!event) return true; if (info) { -#if defined (APIVERSNUM) && (APIVERSNUM >= 20301) - LOCK_CHANNELS_READ; - const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); -#else - const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); -#endif - if (channel) { - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelname, channel->Name()); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelid, *channel->GetChannelID().ToString()); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::recchannelnumber, channel->Number()); - } else { - // fallback to information provided in 'info' if channel is no longer found in active channels + if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelname, info->ChannelName()); tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelid, info->ChannelID().ToString()); - } + } else { +#if defined (APIVERSNUM) && (APIVERSNUM >= 20301) + LOCK_CHANNELS_READ; + const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); +#else + const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); +#endif + if (channel) { + tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelname, channel->Name()); + tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelid, *channel->GetChannelID().ToString()); + } + } } tokenContainer->AddStringToken((int)eCeMenuRecordingsST::epgname, info->Title() ? info->Title() : buffer.c_str()); diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c index e4791c6..b63e9df 100644 --- a/coreengine/viewdetail.c +++ b/coreengine/viewdetail.c @@ -812,24 +812,25 @@ void cViewDetailRec::SetRecInfos(void) { const cRecordingInfo *info = recording->Info(); if (info) { -#if defined (APIVERSNUM) && (APIVERSNUM >= 20301) - LOCK_CHANNELS_READ; - const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); -#else - const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); -#endif - if (channel) { - tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelname, channel->Name()); - tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelid, *channel->GetChannelID().ToString()); - tokenContainer->AddIntToken((int)eDmDetailedRecIT::recchannelnumber, channel->Number()); - } else { - // fallback to information provided in 'info' if channel is no longer found in active channels + if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelname, info->ChannelName()); tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelid, info->ChannelID().ToString()); - } + tokenContainer->AddIntToken((int)eDmDetailedRecIT::recchannelnumber, 0); // cannot be provided, for backward compatibility only + } else { +#if defined (APIVERSNUM) && (APIVERSNUM >= 20301) + LOCK_CHANNELS_READ; + const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); +#else + const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); +#endif + if (channel) { + tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelname, channel->Name()); + tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelid, *channel->GetChannelID().ToString()); + tokenContainer->AddIntToken((int)eDmDetailedRecIT::recchannelnumber, channel->Number()); + } + } } - if (index) { int nLastIndex = index->Last(); if (nLastIndex) { diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c index dad279a..5887f26 100644 --- a/coreengine/viewelementsdisplaymenu.c +++ b/coreengine/viewelementsdisplaymenu.c @@ -1219,22 +1219,24 @@ bool cVeDmDetailheaderRec::Parse(bool forced) { tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS } + + if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { + tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelname, info->ChannelName()); + tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelid, info->ChannelID().ToString()); + tokenContainer->AddIntToken((int)eDmDetailedRecIT::recchannelnumber, 0); // cannot be provided, for backward compatibility only + } else { #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) - LOCK_CHANNELS_READ; - const cChannels* channels = Channels; + LOCK_CHANNELS_READ; + const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); #else - cChannels* channels = &Channels; + const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); #endif - const cChannel *channel = channels->GetByChannelID(info->ChannelID()); - if (channel) { - tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, channel->Name()); - tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, *channel->GetChannelID().ToString()); - tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, channel->Number()); - } else { - // fallback to information provided in 'info' if channel is no longer found in active channels - tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, info->ChannelName()); - tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, info->ChannelID().ToString()); - } + if (channel) { + tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelname, channel->Name()); + tokenContainer->AddStringToken((int)eDmDetailedRecST::recchannelid, *channel->GetChannelID().ToString()); + tokenContainer->AddIntToken((int)eDmDetailedRecIT::recchannelnumber, channel->Number()); + } + } } string recImage = ""; string path = recording->FileName() ? recording->FileName() : ""; diff --git a/skinskeleton/xmlfiles/displaymenurecordings.xml b/skinskeleton/xmlfiles/displaymenurecordings.xml index 9bde817..e46fd12 100644 --- a/skinskeleton/xmlfiles/displaymenurecordings.xml +++ b/skinskeleton/xmlfiles/displaymenurecordings.xml @@ -35,7 +35,6 @@ {posterpath} absolute path of scraped poster {recchannelname} name of channel from which was recorded {recchannelid} id of channel from which was recorded - {recchannelnumber} number of channel from which was recorded {framesPerSecond} frames per second (from EPG info) {isHD} true if recording is HD/UHD (from EPG info) {isUHD} true if recording is UHD (from EPG info) @@ -81,7 +80,6 @@ {bannerpath} absolute path of scraped banner {recchannelname} name of channel from which was recorded {recchannelid} id of channel from which was recorded - {recchannelnumber} number of channel from which was recorded {framesPerSecond} frames per second (from EPG info) {isHD} true if recording is HD/UHD (from EPG info) {isUHD} true if recording is UHD (from EPG info) From 1aead6d4008077380faebde1ad59d76cf41a8552 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Sun, 24 Jan 2021 09:46:47 +0100 Subject: [PATCH 2/6] update version, extend history --- HISTORY | 2 ++ skindesigner.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index e6b5e0f..07eb0e3 100644 --- a/HISTORY +++ b/HISTORY @@ -465,3 +465,5 @@ Version 1.2.9 Version 1.2.10 - [pbiering] added tokens for recordings: isUHD, isRadio - [pbiering] added token for channels: isUHD +- [pbiering] expose to displaymenurecordings: recchannelname, recchannelid, recchannelnumber +- [pbiering] add fallback to get name/id from 'info' in case channel is no longer in active channel list diff --git a/skindesigner.c b/skindesigner.c index 33f249b..c3f3e66 100644 --- a/skindesigner.c +++ b/skindesigner.c @@ -21,7 +21,7 @@ #endif -static const char *VERSION = "1.2.9"; +static const char *VERSION = "1.2.10"; static const char *DESCRIPTION = trNOOP("Skin Designer"); class cPluginSkinDesigner : public cPlugin, public skindesignerapi::SkindesignerAPI { From 858143ce2b08d9dc1d8acdd621697b51c6b39062 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Sun, 24 Jan 2021 15:12:35 +0100 Subject: [PATCH 3/6] Update skins/estuary4vdr/xmlfiles/plug-tvguideng-root.xml --- .../xmlfiles/plug-tvguideng-root.xml | 326 ++++++------------ 1 file changed, 108 insertions(+), 218 deletions(-) diff --git a/skins/estuary4vdr/xmlfiles/plug-tvguideng-root.xml b/skins/estuary4vdr/xmlfiles/plug-tvguideng-root.xml index ed217e3..e2b74a4 100644 --- a/skins/estuary4vdr/xmlfiles/plug-tvguideng-root.xml +++ b/skins/estuary4vdr/xmlfiles/plug-tvguideng-root.xml @@ -67,238 +67,126 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -426,7 +314,8 @@ - + + @@ -435,7 +324,8 @@ - + + From 1315e732174b66a38fe82232faf90c6ba8aa13d8 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Mon, 25 Jan 2021 11:17:31 +0100 Subject: [PATCH 4/6] Update skins/estuary4vdr/xmlfiles/plug-tvguideng-recmenu.xml --- skins/estuary4vdr/xmlfiles/plug-tvguideng-recmenu.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skins/estuary4vdr/xmlfiles/plug-tvguideng-recmenu.xml b/skins/estuary4vdr/xmlfiles/plug-tvguideng-recmenu.xml index b3c9c0c..a09a666 100644 --- a/skins/estuary4vdr/xmlfiles/plug-tvguideng-recmenu.xml +++ b/skins/estuary4vdr/xmlfiles/plug-tvguideng-recmenu.xml @@ -20,8 +20,10 @@ - + + + From f711a71722d25ce6c8b660e62a4fb9b3cbc4e059 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Mon, 25 Jan 2021 15:58:07 +0100 Subject: [PATCH 5/6] Update skins/estuary4vdr/xmlfiles/displaymenudetailrecording.xml --- .../xmlfiles/displaymenudetailrecording.xml | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/skins/estuary4vdr/xmlfiles/displaymenudetailrecording.xml b/skins/estuary4vdr/xmlfiles/displaymenudetailrecording.xml index 56fb858..4f88562 100644 --- a/skins/estuary4vdr/xmlfiles/displaymenudetailrecording.xml +++ b/skins/estuary4vdr/xmlfiles/displaymenudetailrecording.xml @@ -1,4 +1,5 @@ + @@ -10,12 +11,6 @@ - - - - - - @@ -23,6 +18,12 @@ + + + + + + @@ -36,6 +37,7 @@ + @@ -47,6 +49,7 @@ + @@ -56,6 +59,7 @@ + @@ -63,11 +67,13 @@ + + @@ -81,13 +87,14 @@ + - + From 4500b62b5c545035d50c64af4e1535c5567cce80 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Mon, 25 Jan 2021 16:05:35 +0100 Subject: [PATCH 6/6] Version 1.2.10 --- HISTORY | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index 07eb0e3..d19b6a2 100644 --- a/HISTORY +++ b/HISTORY @@ -465,5 +465,6 @@ Version 1.2.9 Version 1.2.10 - [pbiering] added tokens for recordings: isUHD, isRadio - [pbiering] added token for channels: isUHD -- [pbiering] expose to displaymenurecordings: recchannelname, recchannelid, recchannelnumber -- [pbiering] add fallback to get name/id from 'info' in case channel is no longer in active channel list +- [pbiering] expose to displaymenurecordings: recchannelname, recchannelid +- [pbiering] retrieve ChannelName from 'info' and fallback via ChannelID from active channel list +- [kamel5] Update skin estuary4vdr