diff options
author | mrwastl <mrwastl@users.sourceforge.net> | 2011-09-17 21:28:10 +0200 |
---|---|---|
committer | mrwastl <mrwastl@users.sourceforge.net> | 2011-09-17 21:28:10 +0200 |
commit | 0703b948dd63eb281df5dc531abdf66818becdf7 (patch) | |
tree | b76b3ba4634a95ed71c0dd2ab1e1a4354109870d /skinconfig.c | |
parent | 9e0f177243221e2123758d196315cb63d0f8902b (diff) | |
download | vdr-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.c | 34 |
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: |