vdr-plugin-skindesigner/coreengine/viewdisplaytracks.c

123 lines
3.3 KiB
C

#include "viewdisplaytracks.h"
#include "../config.h"
/************************************************************************************
* cViewTracks
************************************************************************************/
cViewTracks::cViewTracks(void) {
ClearVariables();
viewId = eViewType::DisplayTracks;
viewName = strdup("displayaudiotracks");
numViewElements = (int)eVeDisplayTracks::count;
viewElements = new cViewElement*[numViewElements];
for (int i=0; i < numViewElements; i++) {
viewElements[i] = NULL;
}
viewList = NULL;
veBackground = NULL;
veHeader = NULL;
SetViewElements();
}
cViewTracks::~cViewTracks() {
}
void cViewTracks::SetViewElements(void) {
viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayTracks::background));
viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayTracks::header));
}
void cViewTracks::SetViewElementObjects(void) {
if (viewElements[(int)eVeDisplayTracks::background])
veBackground = dynamic_cast<cVeDtBackground*>(viewElements[(int)eVeDisplayTracks::background]);
if (viewElements[(int)eVeDisplayTracks::header])
veHeader = dynamic_cast<cVeDtHeader*>(viewElements[(int)eVeDisplayTracks::header]);
}
void cViewTracks::ClearVariables(void) {
init = true;
change = true;
}
void cViewTracks::Close(void) {
delete fader;
fader = NULL;
if (FadeTime() > 0) {
fader = new cAnimation((cFadable*)this, false);
fader->Fade();
delete fader;
fader = NULL;
}
for (int i=0; i < numViewElements; i++) {
if (viewElements[i]) {
viewElements[i]->Close();
}
}
if (viewList) {
viewList->Close();
}
ClearVariables();
sdOsd.DeleteOsd();
}
void cViewTracks::AddViewList(cViewList *viewList) {
this->viewList = dynamic_cast<cViewListAudioTracks*>(viewList);
}
void cViewTracks::PreCache(void) {
cView::PreCache();
if (viewList) {
viewList->SetContainer(0, 0, attribs->Width(), attribs->Height());
viewList->SetGlobals(globals);
viewList->PreCache();
}
}
void cViewTracks::SetTitle(const char *title) {
if (veHeader)
veHeader->SetTitle(title);
change = true;
}
void cViewTracks::SetNumtracks(int numTracks) {
if (veBackground)
veBackground->Set(numTracks);
if (veHeader)
veHeader->SetNumtracks(numTracks);
if (viewList)
viewList->SetNumtracks(numTracks);
}
void cViewTracks::SetAudiochannel(int audioChannel) {
if (veHeader)
veHeader->SetAudiochannel(audioChannel);
change = true;
}
void cViewTracks::SetTracks(const char * const *tracks) {
if (viewList)
viewList->SetTracks(tracks);
change = true;
}
void cViewTracks::SetCurrentTrack(int index) {
if (viewList)
viewList->SetCurrentTrack(index);
change = true;
}
void cViewTracks::Flush(void) {
if (init) {
sdOsd.LockFlush();
Render((int)eVeDisplayTracks::background);
}
if (change) {
Render((int)eVeDisplayTracks::header);
if (viewList)
viewList->Draw();
change = false;
}
cView::Flush();
}