diff options
Diffstat (limited to 'display.c')
-rw-r--r-- | display.c | 436 |
1 files changed, 290 insertions, 146 deletions
@@ -1,5 +1,5 @@ /* - * $Id: display.c,v 1.9 2004/12/14 20:02:31 lordjaxom Exp $ + * $Id: display.c,v 1.10 2004/12/17 19:56:16 lordjaxom Exp $ */ #include "render.h" @@ -19,153 +19,191 @@ cText2SkinDisplayChannel::cText2SkinDisplayChannel(cText2SkinLoader *Loader, boo mPresent(NULL), mFollowing(NULL), mType(mtStatus), - mText("") + mText("") , + mButtonRed(""), + mButtonGreen(""), + mButtonYellow(""), + mButtonBlue("") { } -cText2SkinDisplayChannel::~cText2SkinDisplayChannel() +cText2SkinDisplayChannel::~cText2SkinDisplayChannel() { } -void cText2SkinDisplayChannel::SetChannel(const cChannel *Channel, int Number) +void cText2SkinDisplayChannel::SetChannel(const cChannel *Channel, int Number) { + UpdateLock(); if (mChannel != Channel || mNumber != Number) { mChannel = Channel; mNumber = Number; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following) +void cText2SkinDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following) { + UpdateLock(); if (mPresent != Present || mFollowing != Following) { mPresent = Present; mFollowing = Following; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayChannel::SetMessage(eMessageType Type, const char *Text) +void cText2SkinDisplayChannel::SetMessage(eMessageType Type, const char *Text) { + UpdateLock(); if (Text == NULL) Text = ""; if (mType != Type || mText != Text) { mType = Type; mText = Text; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayChannel::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) +void cText2SkinDisplayChannel::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) { + UpdateLock(); Dprintf("SetButtons(%s, %s, %s, %s)\n", Red, Green, Yellow, Blue); + if (Red == NULL) Red = ""; + if (Green == NULL) Green = ""; + if (Yellow == NULL) Yellow = ""; + if (Blue == NULL) Blue = ""; + if (mButtonRed != Red || mButtonGreen != Green || mButtonYellow != Yellow + || mButtonBlue != Blue) { + mButtonRed = Red; + mButtonGreen = Green; + mButtonYellow = Yellow; + mButtonBlue = Blue; + SetDirty(); + } + UpdateUnlock(); } -cxType cText2SkinDisplayChannel::GetTokenData(const txToken &Token) +cxType cText2SkinDisplayChannel::GetTokenData(const txToken &Token) { switch (Token.Type) { - case tChannelNumber: - return mChannel != NULL - ? (cxType)ChannelNumber(mChannel, mNumber) + case tChannelNumber: + return mChannel != NULL + ? (cxType)ChannelNumber(mChannel, mNumber) : (cxType)false; - case tChannelName: - return mChannel != NULL - ? (cxType)ChannelName(mChannel, mNumber) + case tChannelName: + return mChannel != NULL + ? (cxType)ChannelName(mChannel, mNumber) : (cxType)false; case tChannelShortName: - return mChannel != NULL - ? (cxType)ChannelShortName(mChannel, mNumber) + return mChannel != NULL + ? (cxType)ChannelShortName(mChannel, mNumber) : (cxType)false; case tChannelBouquet: - return mChannel != NULL +#if VDRVERSNUM < 10315 + return cxType::False; +#else + return mChannel != NULL ? (cxType)mChannel->Provider() : (cxType)false; +#endif case tChannelPortal: +#if VDRVERSNUM < 10315 + return false; +#else return mChannel != NULL ? (cxType)mChannel->PortalName() - : (cxType)false; + : (cxType)false; +#endif case tChannelSource: return mChannel != NULL ? (cxType)Sources.Get(mChannel->Source())->Description() - : (cxType)false; + : (cxType)false; case tPresentStartDateTime: - return mPresent != NULL - ? (cxType)TimeType(mPresent->StartTime(), Token.Attrib) + return mPresent != NULL + ? (cxType)TimeType(mPresent->StartTime(), Token.Attrib) : (cxType)false; case tPresentVPSDateTime: - return mPresent != NULL - ? (cxType)TimeType(mPresent->Vps(), Token.Attrib) + return mPresent != NULL + ? (cxType)TimeType(mPresent->Vps(), Token.Attrib) : (cxType)false; case tPresentEndDateTime: - return mPresent != NULL - ? (cxType)TimeType(mPresent->EndTime(), Token.Attrib) + return mPresent != NULL + ? (cxType)TimeType(mPresent->EndTime(), Token.Attrib) : (cxType)false; case tPresentProgress: - return mPresent != NULL - ? (cxType)TimeType(time(NULL) - mPresent->StartTime(), Token.Attrib) + return mPresent != NULL + ? (cxType)TimeType(time(NULL) - mPresent->StartTime(), Token.Attrib) : (cxType)false; case tPresentDuration: - return mPresent != NULL - ? (cxType)TimeType(mPresent->Duration(), Token.Attrib) + return mPresent != NULL + ? (cxType)TimeType(mPresent->Duration(), Token.Attrib) + : (cxType)false; + + case tPresentRemaining: + return mPresent != NULL + ? (cxType)TimeType(mPresent->Duration() - (time(NULL) - mPresent->StartTime()), + Token.Attrib) : (cxType)false; case tPresentTitle: - return mPresent != NULL - ? (cxType)mPresent->Title() + return mPresent != NULL + ? (cxType)mPresent->Title() : (cxType)false; case tPresentShortText: - return mPresent != NULL - ? (cxType)mPresent->ShortText() + return mPresent != NULL + ? (cxType)mPresent->ShortText() : (cxType)false; case tPresentDescription: - return mPresent != NULL + return mPresent != NULL ? (cxType)mPresent->Description() : (cxType)false; case tFollowingStartDateTime: - return mFollowing != NULL - ? (cxType)TimeType(mFollowing->StartTime(), Token.Attrib) + return mFollowing != NULL + ? (cxType)TimeType(mFollowing->StartTime(), Token.Attrib) : (cxType)false; case tFollowingVPSDateTime: - return mFollowing != NULL - ? (cxType)TimeType(mFollowing->Vps(), Token.Attrib) + return mFollowing != NULL + ? (cxType)TimeType(mFollowing->Vps(), Token.Attrib) : (cxType)false; case tFollowingEndDateTime: - return mFollowing != NULL - ? (cxType)TimeType(mFollowing->EndTime(), Token.Attrib) + return mFollowing != NULL + ? (cxType)TimeType(mFollowing->EndTime(), Token.Attrib) : (cxType)false; case tFollowingDuration: - return mFollowing != NULL - ? (cxType)TimeType(mFollowing->Duration(), Token.Attrib) + return mFollowing != NULL + ? (cxType)TimeType(mFollowing->Duration(), Token.Attrib) : (cxType)false; case tFollowingTitle: - return mFollowing != NULL - ? (cxType)mFollowing->Title() + return mFollowing != NULL + ? (cxType)mFollowing->Title() : (cxType)false; case tFollowingShortText: - return mFollowing != NULL - ? (cxType)mFollowing->ShortText() + return mFollowing != NULL + ? (cxType)mFollowing->ShortText() : (cxType)false; case tFollowingDescription: - return mFollowing != NULL - ? (cxType)mFollowing->Description() + return mFollowing != NULL + ? (cxType)mFollowing->Description() : (cxType)false; case tLanguage: { @@ -212,25 +250,37 @@ cxType cText2SkinDisplayChannel::GetTokenData(const txToken &Token) return mText; case tMessageInfo: - return mType == mtInfo - ? (cxType)mText + return mType == mtInfo + ? (cxType)mText : (cxType)false; case tMessageWarning: - return mType == mtWarning - ? (cxType)mText + return mType == mtWarning + ? (cxType)mText : (cxType)false; case tMessageStatus: - return mType == mtStatus - ? (cxType)mText + return mType == mtStatus + ? (cxType)mText : (cxType)false; case tMessageError: - return mType == mtError - ? (cxType)mText + return mType == mtError + ? (cxType)mText : (cxType)false; + case tButtonRed: + return mButtonRed; + + case tButtonGreen: + return mButtonGreen; + + case tButtonYellow: + return mButtonYellow; + + case tButtonBlue: + return mButtonBlue; + default: break; } @@ -243,19 +293,24 @@ cText2SkinDisplayVolume::cText2SkinDisplayVolume(cText2SkinLoader *Loader): cText2SkinRender(Loader, cxDisplay::volume), mCurrent(0), mTotal(0), - mMute(false) { + mMute(false) +{ } -cText2SkinDisplayVolume::~cText2SkinDisplayVolume() { +cText2SkinDisplayVolume::~cText2SkinDisplayVolume() +{ } -void cText2SkinDisplayVolume::SetVolume(int Current, int Total, bool Mute) { +void cText2SkinDisplayVolume::SetVolume(int Current, int Total, bool Mute) +{ + UpdateLock(); if (mCurrent != Current || mTotal != Total || mMute != Mute) { mCurrent = Current; mTotal = Total; mMute = Mute; SetDirty(); } + UpdateUnlock(); } cxType cText2SkinDisplayVolume::GetTokenData(const txToken &Token) { @@ -289,21 +344,32 @@ cText2SkinDisplayReplay::cText2SkinDisplayReplay(cText2SkinLoader *Loader, bool mMarks(NULL), mPrompt(""), mType(mtStatus), - mText("") { + mText(""), + mButtonRed(""), + mButtonGreen(""), + mButtonYellow(""), + mButtonBlue("") +{ } -cText2SkinDisplayReplay::~cText2SkinDisplayReplay() { +cText2SkinDisplayReplay::~cText2SkinDisplayReplay() +{ } -void cText2SkinDisplayReplay::SetTitle(const char *Title) { +void cText2SkinDisplayReplay::SetTitle(const char *Title) +{ + UpdateLock(); if (Title == NULL) Title = ""; if (mTitle != Title) { mTitle = Title; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetMode(bool Play, bool Forward, int Speed) { +void cText2SkinDisplayReplay::SetMode(bool Play, bool Forward, int Speed) +{ + UpdateLock(); if (!mStateInfo || mPlay != Play || mForward != Forward || mSpeed != Speed) { mStateInfo = true; mPlay = Play; @@ -311,57 +377,96 @@ void cText2SkinDisplayReplay::SetMode(bool Play, bool Forward, int Speed) { mSpeed = Speed; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetProgress(int Current, int Total) { +void cText2SkinDisplayReplay::SetProgress(int Current, int Total) +{ + UpdateLock(); if (mCurrent != Current || mTotal != Total) { mCurrent = Current; mTotal = Total; // SetDirty(); TODO: let this cause a display update every frame? } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetMarks(const cMarks *Marks) { +void cText2SkinDisplayReplay::SetMarks(const cMarks *Marks) +{ + UpdateLock(); if (mMarks != Marks) { mMarks = Marks; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetCurrent(const char *Current) { +void cText2SkinDisplayReplay::SetCurrent(const char *Current) +{ + UpdateLock(); if (Current == NULL) Current = ""; if (mPosition != Current) { mPosition = Current; SetDirty(); - } + } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetTotal(const char *Total) { +void cText2SkinDisplayReplay::SetTotal(const char *Total) +{ + UpdateLock(); if (Total == NULL) Total = ""; if (mDuration != Total) { mDuration = Total; SetDirty(); - } + } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetJump(const char *Jump) { +void cText2SkinDisplayReplay::SetJump(const char *Jump) +{ + UpdateLock(); if (Jump == NULL) Jump = ""; if (mPrompt != Jump) { mPrompt = Jump; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayReplay::SetMessage(eMessageType Type, const char *Text) { +void cText2SkinDisplayReplay::SetMessage(eMessageType Type, const char *Text) +{ + UpdateLock(); if (Text == NULL) Text = ""; if (mType != Type || mText != Text) { mType = Type; mText = Text; SetDirty(); } + UpdateUnlock(); +} + +void cText2SkinDisplayReplay::SetButtons(const char *Red, const char *Green, const char *Yellow, + const char *Blue) +{ + UpdateLock(); + Dprintf("SetButtons(%s, %s, %s, %s)\n", Red, Green, Yellow, Blue); + if (Red == NULL) Red = ""; + if (Green == NULL) Green = ""; + if (Yellow == NULL) Yellow = ""; + if (Blue == NULL) Blue = ""; + if (mButtonRed != Red || mButtonGreen != Green || mButtonYellow != Yellow || mButtonBlue != Blue) { + mButtonRed = Red; + mButtonGreen = Green; + mButtonYellow = Yellow; + mButtonBlue = Blue; + SetDirty(); + } + UpdateUnlock(); } -cxType cText2SkinDisplayReplay::GetTokenData(const txToken &Token) { +cxType cText2SkinDisplayReplay::GetTokenData(const txToken &Token) +{ switch (Token.Type) { case tReplayTitle: return mTitle; @@ -378,6 +483,9 @@ cxType cText2SkinDisplayReplay::GetTokenData(const txToken &Token) { case tReplayDuration: return mDuration; + case tReplayRemaining: + return TimeType(mTotal - mCurrent, Token.Attrib); + case tReplayPrompt: return mPrompt; @@ -423,28 +531,40 @@ cxType cText2SkinDisplayReplay::GetTokenData(const txToken &Token) { return mText; case tMessageInfo: - return mType == mtInfo - ? (cxType)mText + return mType == mtInfo + ? (cxType)mText : (cxType)false; case tMessageWarning: - return mType == mtWarning - ? (cxType)mText + return mType == mtWarning + ? (cxType)mText : (cxType)false; case tMessageStatus: - return mType == mtStatus - ? (cxType)mText + return mType == mtStatus + ? (cxType)mText : (cxType)false; case tMessageError: - return mType == mtError - ? (cxType)mText + return mType == mtError + ? (cxType)mText : (cxType)false; case tReplayMode: return cText2SkinStatus::ReplayMode(); + case tButtonRed: + return mButtonRed; + + case tButtonGreen: + return mButtonGreen; + + case tButtonYellow: + return mButtonYellow; + + case tButtonBlue: + return mButtonBlue; + default: break; } @@ -462,12 +582,14 @@ cText2SkinDisplayMessage::~cText2SkinDisplayMessage() { } void cText2SkinDisplayMessage::SetMessage(eMessageType Type, const char *Text) { + UpdateLock(); if (Text == NULL) Text = ""; if (mType != Type || mText != Text) { mType = Type; mText = Text; SetDirty(); } + UpdateUnlock(); } cxType cText2SkinDisplayMessage::GetTokenData(const txToken &Token) { @@ -476,24 +598,24 @@ cxType cText2SkinDisplayMessage::GetTokenData(const txToken &Token) { return mText; case tMessageInfo: - return mType == mtInfo - ? (cxType)mText - : (cxType)false; + return mType == mtInfo + ? (cxType)mText + : (cxType)false; case tMessageWarning: - return mType == mtWarning - ? (cxType)mText - : (cxType)false; + return mType == mtWarning + ? (cxType)mText + : (cxType)false; case tMessageStatus: - return mType == mtStatus - ? (cxType)mText - : (cxType)false; + return mType == mtStatus + ? (cxType)mText + : (cxType)false; case tMessageError: - return mType == mtError - ? (cxType)mText - : (cxType)false; + return mType == mtError + ? (cxType)mText + : (cxType)false; default: break; } @@ -534,10 +656,13 @@ cText2SkinDisplayMenu::cText2SkinDisplayMenu(cText2SkinLoader *Loader): } } -cText2SkinDisplayMenu::~cText2SkinDisplayMenu() { +cText2SkinDisplayMenu::~cText2SkinDisplayMenu() +{ } -void cText2SkinDisplayMenu::Clear(void) { +void cText2SkinDisplayMenu::Clear(void) +{ + UpdateLock(); mItems.clear(); mCurrentItem = (uint)-1; mEvent = NULL; @@ -545,43 +670,54 @@ void cText2SkinDisplayMenu::Clear(void) { mText = ""; cText2SkinRender::Clear(); SetDirty(); + UpdateUnlock(); } -void cText2SkinDisplayMenu::SetTitle(const char *Title) { +void cText2SkinDisplayMenu::SetTitle(const char *Title) +{ + UpdateLock(); if (Title == NULL) Title = ""; if (mTitle != Title) { mTitle = Title; SetDirty(); } + UpdateUnlock(); } -void cText2SkinDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) { +void cText2SkinDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, + const char *Blue) +{ + UpdateLock(); if (Red == NULL) Red = ""; if (Green == NULL) Green = ""; if (Yellow == NULL) Yellow = ""; if (Blue == NULL) Blue = ""; - if (mButtonRed != Red || mButtonGreen != Green || mButtonYellow != Yellow || mButtonBlue != Blue) { + if (mButtonRed != Red || mButtonGreen != Green || mButtonYellow != Yellow + || mButtonBlue != Blue) { mButtonRed = Red; mButtonGreen = Green; mButtonYellow = Yellow; mButtonBlue = Blue; SetDirty(); } + UpdateUnlock(); } void cText2SkinDisplayMenu::SetMessage(eMessageType Type, const char *Text) { + UpdateLock(); if (Text == NULL) Text = ""; if (mMessageType != Type || mMessageText != Text) { mMessageType = Type; mMessageText = Text; SetDirty(); } + UpdateUnlock(); } void cText2SkinDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) { + UpdateLock(); if (Text == NULL) return; - Dprintf("SetItem(%s)\n", Text); tListItem *item = new tListItem(Text, Selectable); //item.text = Text; @@ -609,43 +745,51 @@ void cText2SkinDisplayMenu::SetItem(const char *Text, int Index, bool Current, b mCurrentItem = Index; SetDirty(); } - Dprintf("end SetItem()\n"); + UpdateUnlock(); } void cText2SkinDisplayMenu::SetEvent(const cEvent *Event) { - Dprintf("setEvent %p\n", Event); + UpdateLock(); if (mEvent != Event) { - Dprintf("dirty\n"); mEvent = Event; if (mEvent != NULL) SetDirty(); } + UpdateUnlock(); } void cText2SkinDisplayMenu::SetRecording(const cRecording *Recording) { + UpdateLock(); // yet unused if (mRecording != Recording) { mRecording = Recording; if (mRecording != NULL) SetDirty(); } + UpdateUnlock(); } void cText2SkinDisplayMenu::SetText(const char *Text, bool /*FixedFont*/) { + UpdateLock(); if (Text == NULL) Text = ""; if (mText != Text) { mText = Text; SetDirty(); } + UpdateUnlock(); } void cText2SkinDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5) { + UpdateLock(); cSkinDisplayMenu::SetTabs(Tab1, Tab2, Tab3, Tab4, Tab5); + UpdateUnlock(); } void cText2SkinDisplayMenu::Scroll(bool Up, bool Page) { + UpdateLock(); cText2SkinRender::Scroll(Up, Page); SetDirty(); + UpdateUnlock(); } cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token) { @@ -667,13 +811,13 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token) { return mTitle; case tMenuItem: - return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel - && mCurrentItem != (uint)Token.Index + return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel + && mCurrentItem != (uint)Token.Index ? (cxType)mItems[Token.Index].tabs[Token.Tab] - : (cxType)false; + : (cxType)false; case tIsMenuItem: - return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel + return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel && mCurrentItem != (uint)Token.Index; case tMenuCurrent: @@ -682,19 +826,19 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token) { ? (cxType)mItems[mCurrentItem].text : (cxType)false; - return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel - && mCurrentItem == (uint)Token.Index + return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel + && mCurrentItem == (uint)Token.Index ? (cxType)mItems[Token.Index].tabs[Token.Tab] - : (cxType)false; + : (cxType)false; case tIsMenuCurrent: - return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel + return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel && mCurrentItem == (uint)Token.Index; case tMenuGroup: - return mItems.size() > (uint)Token.Index && !mItems[Token.Index].sel + return mItems.size() > (uint)Token.Index && !mItems[Token.Index].sel ? (cxType)mItems[Token.Index].tabs[Token.Tab] - : (cxType)false; + : (cxType)false; case tIsMenuGroup: return mItems.size() > (uint)Token.Index && !mItems[Token.Index].sel; @@ -715,64 +859,64 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token) { return mMessageText; case tMessageInfo: - return mMessageType == mtInfo - ? (cxType)mMessageText - : (cxType)false; + return mMessageType == mtInfo + ? (cxType)mMessageText + : (cxType)false; case tMessageWarning: - return mMessageType == mtWarning - ? (cxType)mMessageText - : (cxType)false; + return mMessageType == mtWarning + ? (cxType)mMessageText + : (cxType)false; case tMessageStatus: - return mMessageType == mtStatus - ? (cxType)mMessageText - : (cxType)false; + return mMessageType == mtStatus + ? (cxType)mMessageText + : (cxType)false; case tMessageError: - return mMessageType == mtError - ? (cxType)mMessageText - : (cxType)false; + return mMessageType == mtError + ? (cxType)mMessageText + : (cxType)false; case tPresentStartDateTime: - return mEvent != NULL - ? (cxType)TimeType(mEvent->StartTime(), Token.Attrib) - : (cxType)false; + return mEvent != NULL + ? (cxType)TimeType(mEvent->StartTime(), Token.Attrib) + : (cxType)false; case tPresentVPSDateTime: - return mEvent != NULL - ? (cxType)TimeType(mEvent->Vps(), Token.Attrib) - : (cxType)false; + return mEvent != NULL + ? (cxType)TimeType(mEvent->Vps(), Token.Attrib) + : (cxType)false; case tPresentEndDateTime: return mEvent != NULL - ? (cxType)TimeType(mEvent->EndTime(), Token.Attrib) - : (cxType)false; + ? (cxType)TimeType(mEvent->EndTime(), Token.Attrib) + : (cxType)false; case tPresentProgress: - return mEvent != NULL - ? (cxType)TimeType(time(NULL) - mEvent->StartTime(), Token.Attrib) - : (cxType)false; + return mEvent != NULL + ? (cxType)TimeType(time(NULL) - mEvent->StartTime(), Token.Attrib) + : (cxType)false; case tPresentDuration: - return mEvent != NULL - ? (cxType)TimeType(mEvent->Duration(), Token.Attrib) - : (cxType)false; + return mEvent != NULL + ? (cxType)TimeType(mEvent->Duration(), Token.Attrib) + : (cxType)false; case tPresentTitle: - return mEvent != NULL - ? (cxType)mEvent->Title() - : (cxType)false; + return mEvent != NULL + ? (cxType)mEvent->Title() + : (cxType)false; case tPresentShortText: - return mEvent != NULL - ? (cxType)mEvent->ShortText() - : (cxType)false; + return mEvent != NULL + ? (cxType)mEvent->ShortText() + : (cxType)false; case tPresentDescription: - return mEvent != NULL - ? (cxType)mEvent->Description() - : (cxType)false; + return mEvent != NULL + ? (cxType)mEvent->Description() + : (cxType)false; case tHasVPS: return mEvent != NULL && mEvent->Vps() != 0; |