diff options
Diffstat (limited to 'xml/string.h')
-rw-r--r-- | xml/string.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/xml/string.h b/xml/string.h new file mode 100644 index 0000000..5c89d13 --- /dev/null +++ b/xml/string.h @@ -0,0 +1,128 @@ +/* + * $Id: string.h,v 1.5 2004/12/08 18:47:37 lordjaxom Exp $ + */ + +#ifndef VDR_TEXT2SKIN_XML_STRING_H +#define VDR_TEXT2SKIN_XML_STRING_H + +#include "xml/type.h" +#include <string> +#include <vector> + +enum exToken { + tDateTime, + + // Channel Display + tChannelNumber, + tChannelName, + tChannelShortName, + tChannelBouquet, + // next 8 also in Menu + tPresentStartDateTime, + tPresentVPSDateTime, + tPresentEndDateTime, + tPresentDuration, + tPresentProgress, + tPresentTitle, + tPresentShortText, + tPresentDescription, + tFollowingStartDateTime, + tFollowingVPSDateTime, + tFollowingEndDateTime, + tFollowingDuration, + tFollowingTitle, + tFollowingShortText, + tFollowingDescription, + tLanguage, + tHasTeletext, + tHasMultilang, + tHasDolby, + tIsEncrypted, + tIsRadio, + tIsRecording, + // next 3 also in Menu + tHasVPS, + tHasTimer, + tIsRunning, + + // VolumeDisplay + tVolumeCurrent, + tVolumeTotal, + tIsMute, + + // Message Display + tMessage, + tMessageStatus, + tMessageInfo, + tMessageWarning, + tMessageError, + + // Replay Display + tReplayTitle, + tReplayPositionIndex, + tReplayDurationIndex, + tReplayPrompt, + tIsPlaying, + tIsFastForward, + tIsFastRewind, + tIsSlowForward, + tIsSlowRewind, + tIsPausing, + tReplayPosition, + tReplayDuration, + tReplayMode, + + // Menu Page + tMenuTitle, + tMenuGroup, + tIsMenuGroup, + tMenuItem, + tIsMenuItem, + tMenuCurrent, + tIsMenuCurrent, + tMenuText, + tButtonRed, + tButtonGreen, + tButtonYellow, + tButtonBlue, + tCanScrollUp, + tCanScrollDown, + +#define __COUNT_TOKEN__ (tCanScrollDown + 1) +}; + +struct txToken { + exToken Type; + uint Offset; + std::string Attrib; + int Index; + int Tab; + + txToken(void): Index(-1), Tab(-1) {} + txToken(exToken t, uint o, const std::string &a): Type(t), Offset(o), Attrib(a), Index(-1), Tab(-1) {} + static std::string Token(const txToken &Token); +}; + +class cxString { +private: + std::string mText; + std::vector<txToken> mTokens; + +public: + cxString(void); + + bool Parse(const std::string &Text); + cxType Evaluate(void) const; + + void SetIndex(uint Index, int Tab); +}; + +inline void cxString::SetIndex(uint Index, int Tab) +{ + for (uint i = 0; i < mTokens.size(); ++i) { + mTokens[i].Index = Index; + mTokens[i].Tab = Tab; + } +} + +#endif // VDR_TEXT2SKIN_XML_STRING_H |