diff options
author | lordjaxom <lordjaxom> | 2005-01-05 19:27:45 +0000 |
---|---|---|
committer | lordjaxom <lordjaxom> | 2005-01-05 19:27:45 +0000 |
commit | 9af1355019ec5a65848299cd319c53364f42bcf8 (patch) | |
tree | 41c7457060c86383c1209f1dd71069f8f947ac2d | |
parent | 678d8ae5a752ffb024654d61ae419703228e6da0 (diff) | |
download | vdr-plugin-text2skin-9af1355019ec5a65848299cd319c53364f42bcf8.tar.gz vdr-plugin-text2skin-9af1355019ec5a65848299cd319c53364f42bcf8.tar.bz2 |
- implemented audio tracks menu
-rw-r--r-- | display.c | 52 |
1 files changed, 49 insertions, 3 deletions
@@ -1,5 +1,5 @@ /* - * $Id: display.c,v 1.4 2005/01/02 19:55:36 lordjaxom Exp $ + * $Id: display.c,v 1.5 2005/01/05 19:27:45 lordjaxom Exp $ */ #include "render.h" @@ -644,7 +644,7 @@ cText2SkinDisplayMenu::cText2SkinDisplayMenu(cText2SkinLoader *Loader): const cxObject *area = NULL; for (uint i = 0; i < disp->Objects(); ++i) { const cxObject *o = disp->GetObject(i); - if (disp->GetObject(i)->Type() == cxObject::list) { + if (o->Type() == cxObject::list) { area = o; break; } @@ -950,6 +950,8 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token) } #if VDRVERSNUM >= 10318 +// --- cText2SkinDisplayTracks ------------------------------------------------ + cText2SkinDisplayTracks::cText2SkinDisplayTracks(cText2SkinLoader *Loader, const char *Title, int NumTracks, const char * const *Tracks): cText2SkinRender(Loader, cxDisplay::audioTracks), @@ -957,6 +959,10 @@ cText2SkinDisplayTracks::cText2SkinDisplayTracks(cText2SkinLoader *Loader, const mItems(), mCurrentItem((uint)-1) { + for (int i = 0; i < NumTracks; ++i) { + tListItem item(Tracks[i]); + mItems.push_back(item); + } } cText2SkinDisplayTracks::~cText2SkinDisplayTracks() @@ -965,11 +971,51 @@ cText2SkinDisplayTracks::~cText2SkinDisplayTracks() void cText2SkinDisplayTracks::SetTrack(int Index, const char * const *Tracks) { + UpdateLock(); + if (mCurrentItem != (uint)Index) { + mCurrentItem = Index; + SetDirty(); + } + UpdateUnlock(); } cxType cText2SkinDisplayTracks::GetTokenData(const txToken &Token) { - return cText2SkinRender::GetTokenData(Token); + switch (Token.Type) { + case tMenuItem: + if (Token.Index < 0) return false; + case tMenuCurrent: + if (Token.Index >= 0 && Token.Tab == -1) return false; + break; + + default: + if (Token.Tab >= 0) return false; + break; + } + + switch (Token.Type) { + case tMenuTitle: + return mTitle; + + case tMenuItem: + return mItems.size() > (uint)Token.Index && mCurrentItem != (uint)Token.Index + ? (cxType)mItems[Token.Index].text + : (cxType)false; + + case tIsMenuItem: + return mItems.size() > (uint)Token.Index && mCurrentItem != (uint)Token.Index; + + case tMenuCurrent: + return mItems.size() > (uint)Token.Index && mCurrentItem == (uint)Token.Index + ? (cxType)mItems[Token.Index].text + : (cxType)false; + + case tIsMenuCurrent: + return mItems.size() > (uint)Token.Index && mCurrentItem == (uint)Token.Index; + + default: + return cText2SkinRender::GetTokenData(Token); + } } #endif |