mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 15:58:31 +00:00
initial commit version 0.0.1
This commit is contained in:
126
views/displaymenutabview.c
Normal file
126
views/displaymenutabview.c
Normal file
@@ -0,0 +1,126 @@
|
||||
#include "displaymenutabview.h"
|
||||
|
||||
|
||||
cDisplayMenuTabView::cDisplayMenuTabView(cTemplateViewTab *tmplTab) : cView(tmplTab) {
|
||||
}
|
||||
|
||||
cDisplayMenuTabView::~cDisplayMenuTabView() {
|
||||
CancelSave();
|
||||
}
|
||||
|
||||
void cDisplayMenuTabView::SetTokens(map < string, int > *intTokens, map < string, string > *stringTokens, map < string, vector< map< string, string > > > *loopTokens) {
|
||||
this->intTokens = intTokens;
|
||||
this->stringTokens = stringTokens;
|
||||
this->loopTokens = loopTokens;
|
||||
}
|
||||
|
||||
void cDisplayMenuTabView::Clear(void) {
|
||||
Fill(0, clrTransparent);
|
||||
}
|
||||
|
||||
void cDisplayMenuTabView::CreateTab(void) {
|
||||
//Create Pixmap
|
||||
if (!PixmapExists(0)) {
|
||||
cSize drawportSize;
|
||||
scrolling = tmplTab->CalculateDrawPortSize(drawportSize, loopTokens);
|
||||
if (scrolling) {
|
||||
CreateScrollingPixmap(0, tmplTab, drawportSize);
|
||||
scrollingPix = 0;
|
||||
scrollOrientation = orVertical;
|
||||
scrollMode = smNone;
|
||||
} else {
|
||||
CreateViewPixmap(0, tmplTab);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void cDisplayMenuTabView::Render(void) {
|
||||
if (tmplTab->DoDebug()) {
|
||||
tmplTab->Debug();
|
||||
}
|
||||
//Draw Tab, flushing every loop
|
||||
DrawPixmap(0, tmplTab, loopTokens, true);
|
||||
}
|
||||
|
||||
bool cDisplayMenuTabView::KeyUp(void) {
|
||||
if (!scrolling)
|
||||
return false;
|
||||
int scrollStep = tmplTab->GetScrollStep();
|
||||
int aktHeight = DrawportY(0);
|
||||
if (aktHeight >= 0) {
|
||||
return false;
|
||||
}
|
||||
int newY = aktHeight + scrollStep;
|
||||
if (newY > 0)
|
||||
newY = 0;
|
||||
SetDrawPortPoint(0, cPoint(0, newY));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cDisplayMenuTabView::KeyDown(void) {
|
||||
if (!scrolling)
|
||||
return false;
|
||||
|
||||
int scrollStep = tmplTab->GetScrollStep();
|
||||
int aktHeight = DrawportY(0);
|
||||
int totalHeight = DrawportHeight(0);
|
||||
int screenHeight = Height(0);
|
||||
|
||||
if (totalHeight - ((-1)*aktHeight) == screenHeight) {
|
||||
return false;
|
||||
}
|
||||
int newY = aktHeight - scrollStep;
|
||||
if ((-1)*newY > totalHeight - screenHeight)
|
||||
newY = (-1)*(totalHeight - screenHeight);
|
||||
SetDrawPortPoint(0, cPoint(0, newY));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cDisplayMenuTabView::KeyLeft(void) {
|
||||
if (!scrolling)
|
||||
return false;
|
||||
if (!PixmapExists(0))
|
||||
return false;
|
||||
int aktHeight = DrawportY(0);
|
||||
int screenHeight = Height(0);
|
||||
int newY = aktHeight + screenHeight;
|
||||
if (newY > 0)
|
||||
newY = 0;
|
||||
SetDrawPortPoint(0, cPoint(0, newY));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cDisplayMenuTabView::KeyRight(void) {
|
||||
if (!scrolling)
|
||||
return false;
|
||||
if (!PixmapExists(0))
|
||||
return false;
|
||||
int aktHeight = DrawportY(0);
|
||||
int screenHeight = Height(0);
|
||||
int totalHeight = DrawportHeight(0);
|
||||
int newY = aktHeight - screenHeight;
|
||||
if ((-1)*newY > totalHeight - screenHeight)
|
||||
newY = (-1)*(totalHeight - screenHeight);
|
||||
SetDrawPortPoint(0, cPoint(0, newY));
|
||||
return true;
|
||||
}
|
||||
|
||||
void cDisplayMenuTabView::GetScrollbarPosition(int &barTop, int &barHeight) {
|
||||
int y = (-1)*DrawportY(0);
|
||||
int totalHeight = DrawportHeight(0);
|
||||
int screenHeight = Height(0);
|
||||
if (totalHeight == 0)
|
||||
return;
|
||||
if (totalHeight <= screenHeight)
|
||||
barHeight = 1000;
|
||||
else {
|
||||
barHeight = (double)screenHeight / (double) totalHeight * 1000;
|
||||
}
|
||||
barTop = (double)y / (double) totalHeight * 1000;
|
||||
}
|
||||
|
||||
void cDisplayMenuTabView::Action(void) {
|
||||
Render();
|
||||
DoFlush();
|
||||
}
|
||||
Reference in New Issue
Block a user