summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2005-01-05 19:27:45 +0000
committerlordjaxom <lordjaxom>2005-01-05 19:27:45 +0000
commit9af1355019ec5a65848299cd319c53364f42bcf8 (patch)
tree41c7457060c86383c1209f1dd71069f8f947ac2d
parent678d8ae5a752ffb024654d61ae419703228e6da0 (diff)
downloadvdr-plugin-text2skin-9af1355019ec5a65848299cd319c53364f42bcf8.tar.gz
vdr-plugin-text2skin-9af1355019ec5a65848299cd319c53364f42bcf8.tar.bz2
- implemented audio tracks menu
-rw-r--r--display.c52
1 files changed, 49 insertions, 3 deletions
diff --git a/display.c b/display.c
index 9ec84fd..b9e60be 100644
--- a/display.c
+++ b/display.c
@@ -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