summaryrefslogtreecommitdiff
path: root/skinconfig.c
diff options
context:
space:
mode:
authormrwastl <mrwastl@users.sourceforge.net>2011-09-17 21:28:10 +0200
committermrwastl <mrwastl@users.sourceforge.net>2011-09-17 21:28:10 +0200
commit0703b948dd63eb281df5dc531abdf66818becdf7 (patch)
treeb76b3ba4634a95ed71c0dd2ab1e1a4354109870d /skinconfig.c
parent9e0f177243221e2123758d196315cb63d0f8902b (diff)
downloadvdr-plugin-graphlcd-0703b948dd63eb281df5dc531abdf66818becdf7.tar.gz
vdr-plugin-graphlcd-0703b948dd63eb281df5dc531abdf66818becdf7.tar.bz2
cExtData is now a singleton class, thus its content survives a DISCONN/CONNECT of a display; trans() now works as expected; three new tokens: 'IsMenuList', 'MenuText', 'MenuTextScroll'; support added for ':clean' and ':rest' for tokens 'MenuTitle', 'MenuCurrent', and 'MenuText'
Diffstat (limited to 'skinconfig.c')
-rw-r--r--skinconfig.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/skinconfig.c b/skinconfig.c
index ec39da0..eb405d1 100644
--- a/skinconfig.c
+++ b/skinconfig.c
@@ -19,6 +19,7 @@
#include "state.h"
#include "skinconfig.h"
#include "service.h"
+#include "extdata.h"
typedef enum _eTokenId
{
@@ -113,6 +114,9 @@ typedef enum _eTokenId
tokMenuItem,
tokMenuCurrent,
tokIsMenuCurrent,
+ tokIsMenuList,
+ tokMenuText,
+ tokMenuTextScroll,
tokButtonRed,
tokButtonGreen,
tokButtonYellow,
@@ -245,6 +249,9 @@ static const std::string Tokens[tokCountToken] =
"MenuItem",
"MenuCurrent",
"IsMenuCurrent",
+ "IsMenuList",
+ "MenuText",
+ "MenuTextScroll",
"ButtonRed",
"ButtonGreen",
"ButtonYellow",
@@ -329,7 +336,7 @@ std::string cGraphLCDSkinConfig::CharSet(void)
std::string cGraphLCDSkinConfig::Translate(const std::string & Text)
{
- return Text;
+ return I18nTranslate(Text.c_str());
}
GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
@@ -580,7 +587,7 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
case tokMessage:
return osd.message;
case tokMenuTitle:
- return osd.title;
+ return SplitToken(osd.title, Token.Attrib);
case tokMenuItem:
case tokMenuCurrent:
case tokIsMenuCurrent:
@@ -610,7 +617,9 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
else if (Token.Id == tokMenuCurrent)
{
if (Token.Index < maxItems && Token.Index == currentIndex)
- return osd.items[topIndex + Token.Index];
+ return SplitToken(osd.items[topIndex + Token.Index], Token.Attrib);
+ else if (Token.Index < 0) // outside of <list/>: return last MenuCurrent
+ return SplitToken(osd.items[topIndex], Token.Attrib, true);
}
else if (Token.Id == tokIsMenuCurrent)
{
@@ -619,6 +628,15 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
}
return false;
}
+ case tokIsMenuList:
+ return (osd.items.size() == 0) ? false : true;
+ case tokMenuText:
+ return SplitToken(osd.textItem, Token.Attrib);
+ case tokMenuTextScroll: {
+ int curr_scroll = osd.currentTextItemScroll;
+ mState->ResetOsdStateScroll();
+ return curr_scroll;
+ }
case tokButtonRed:
return osd.redButton;
case tokButtonGreen:
@@ -719,14 +737,20 @@ GLCD::cType cGraphLCDSkinConfig::GetToken(const GLCD::tSkinToken & Token)
if (Token.Attrib.Text == "")
return false;
- return mDisplay->GetExtData()->IsSet( Token.Attrib.Text );
+ cExtData * extData = cExtData::GetExtData();
+ if (extData)
+ return extData->IsSet( Token.Attrib.Text );
+ return false;
}
break;
case tokExtDataItem: {
if (Token.Attrib.Text == "")
return false;
- return mDisplay->GetExtData()->Get( Token.Attrib.Text );
+ cExtData * extData = cExtData::GetExtData();
+ if (extData)
+ return extData->Get( Token.Attrib.Text );
+ return false;
}
break;
default: