mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 15:58:31 +00:00
improved estuary4vdr
This commit is contained in:
@@ -698,6 +698,7 @@ enum class eCeMenuMainIT {
|
||||
menuitemy,
|
||||
menuitemwidth,
|
||||
menuitemheight,
|
||||
numitem,
|
||||
count
|
||||
};
|
||||
|
||||
@@ -721,6 +722,7 @@ enum class eLeMenuSchedulesIT {
|
||||
daynumeric,
|
||||
month,
|
||||
year,
|
||||
istoday,
|
||||
running,
|
||||
elapsed,
|
||||
startsin,
|
||||
@@ -766,6 +768,7 @@ enum class eCeMenuSchedulesIT {
|
||||
menuitemy,
|
||||
menuitemwidth,
|
||||
menuitemheight,
|
||||
numitem,
|
||||
daynumeric,
|
||||
month,
|
||||
year,
|
||||
@@ -851,6 +854,7 @@ enum class eCeMenuChannelsIT {
|
||||
menuitemy,
|
||||
menuitemwidth,
|
||||
menuitemheight,
|
||||
numitem,
|
||||
number,
|
||||
transponder,
|
||||
frequency,
|
||||
@@ -937,6 +941,7 @@ enum class eCeMenuTimersIT {
|
||||
menuitemy,
|
||||
menuitemwidth,
|
||||
menuitemheight,
|
||||
numitem,
|
||||
month,
|
||||
year,
|
||||
channellogoexists,
|
||||
@@ -1015,6 +1020,7 @@ enum class eCeMenuRecordingsIT {
|
||||
menuitemy,
|
||||
menuitemwidth,
|
||||
menuitemheight,
|
||||
numitem,
|
||||
isnew,
|
||||
percentseen,
|
||||
watched,
|
||||
|
||||
@@ -78,20 +78,23 @@ cCurrentElement::cCurrentElement(void) {
|
||||
listY = 0;
|
||||
listWidth = 0;
|
||||
listHeight = 0;
|
||||
listNum = 0;
|
||||
}
|
||||
|
||||
void cCurrentElement::SetListPosition(int x, int y, int width, int height) {
|
||||
void cCurrentElement::SetListPosition(int x, int y, int width, int height, int num) {
|
||||
listX = x;
|
||||
listY = y;
|
||||
listWidth = width;
|
||||
listHeight = height;
|
||||
listNum = num;
|
||||
}
|
||||
|
||||
void cCurrentElement::SetListTokens(skindesignerapi::cTokenContainer *tokenContainer) {
|
||||
tokenContainer->AddIntToken(0, listX);
|
||||
tokenContainer->AddIntToken(1, listY);
|
||||
tokenContainer->AddIntToken(0, listX - container.X());
|
||||
tokenContainer->AddIntToken(1, listY - container.Y());
|
||||
tokenContainer->AddIntToken(2, listWidth);
|
||||
tokenContainer->AddIntToken(3, listHeight);
|
||||
tokenContainer->AddIntToken(4, listNum);
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
@@ -455,7 +458,7 @@ void cLeMenuMain::RenderCurrent(void) {
|
||||
if (!currentMain)
|
||||
return;
|
||||
currentMain->SetText(text);
|
||||
currentMain->SetListPosition(container.X(), container.Y(), container.Width(), container.Height());
|
||||
currentMain->SetListPosition(container.X(), container.Y(), container.Width(), container.Height(), num);
|
||||
currentMain->Parse();
|
||||
}
|
||||
|
||||
@@ -500,6 +503,7 @@ void cCeMenuMain::SetTokenContainer(void) {
|
||||
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuMainIT::menuitemy);
|
||||
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuMainIT::menuitemwidth);
|
||||
tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuMainIT::menuitemheight);
|
||||
tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuMainIT::numitem);
|
||||
tokenContainer->DefineStringToken("{label}", (int)eCeMenuMainST::label);
|
||||
tokenContainer->DefineStringToken("{number}", (int)eCeMenuMainST::number);
|
||||
tokenContainer->DefineStringToken("{icon}", (int)eCeMenuMainST::icon);
|
||||
@@ -563,6 +567,7 @@ void cLeMenuSchedules::SetTokenContainer(void) {
|
||||
tokenContainer->DefineIntToken("{daynumeric}", (int)eLeMenuSchedulesIT::daynumeric);
|
||||
tokenContainer->DefineIntToken("{month}", (int)eLeMenuSchedulesIT::month);
|
||||
tokenContainer->DefineIntToken("{year}", (int)eLeMenuSchedulesIT::year);
|
||||
tokenContainer->DefineIntToken("{istoday}", (int)eLeMenuSchedulesIT::istoday);
|
||||
tokenContainer->DefineIntToken("{running}", (int)eLeMenuSchedulesIT::running);
|
||||
tokenContainer->DefineIntToken("{elapsed}", (int)eLeMenuSchedulesIT::elapsed);
|
||||
tokenContainer->DefineIntToken("{startsin}", (int)eLeMenuSchedulesIT::startsin);
|
||||
@@ -626,12 +631,14 @@ bool cLeMenuSchedules::Parse(bool forced) {
|
||||
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::start, *(event->GetTimeString()));
|
||||
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::stop, *(event->GetEndTimeString()));
|
||||
time_t startTime = event->StartTime();
|
||||
struct tm * sStartTime = localtime(&startTime);
|
||||
struct tm *sStartTime = localtime(&startTime);
|
||||
int day = sStartTime->tm_mday;
|
||||
int month = sStartTime->tm_mon;
|
||||
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::day, *WeekDayName(startTime));
|
||||
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::date, *ShortDateString(startTime));
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::year, sStartTime->tm_year + 1900);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::daynumeric, sStartTime->tm_mday);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::month, sStartTime->tm_mon+1);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::daynumeric, day);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::month, month + 1);
|
||||
|
||||
bool isRunning = false;
|
||||
time_t now = time(NULL);
|
||||
@@ -645,6 +652,8 @@ bool cLeMenuSchedules::Parse(bool forced) {
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::elapsed, 0);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::startsin, (event->StartTime() - now)/60);
|
||||
}
|
||||
struct tm *sNow = localtime(&now);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::istoday, (day == sNow->tm_mday && month == sNow->tm_mon) ? true : false);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::duration, event->Duration() / 60);
|
||||
tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::durationhours, event->Duration() / 3600);
|
||||
tokenContainer->AddStringToken((int)eLeMenuSchedulesST::durationminutes, *cString::sprintf("%.2d", (event->Duration() / 60)%60));
|
||||
@@ -676,7 +685,7 @@ void cLeMenuSchedules::RenderCurrent(void) {
|
||||
return;
|
||||
currentSchedules->Set(event, channel, withDate, timerMatch, menuCat);
|
||||
currentSchedules->SetEpgSearchFav(epgSearchFav);
|
||||
currentSchedules->SetListPosition(container.X(), container.Y(), container.Width(), container.Height());
|
||||
currentSchedules->SetListPosition(container.X(), container.Y(), container.Width(), container.Height(), num);
|
||||
currentSchedules->Parse();
|
||||
}
|
||||
|
||||
@@ -707,6 +716,7 @@ void cCeMenuSchedules::SetTokenContainer(void) {
|
||||
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuSchedulesIT::menuitemy);
|
||||
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuSchedulesIT::menuitemwidth);
|
||||
tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuSchedulesIT::menuitemheight);
|
||||
tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuSchedulesIT::numitem);
|
||||
tokenContainer->DefineIntToken("{daynumeric}", (int)eCeMenuSchedulesIT::daynumeric);
|
||||
tokenContainer->DefineIntToken("{month}", (int)eCeMenuSchedulesIT::month);
|
||||
tokenContainer->DefineIntToken("{year}", (int)eCeMenuSchedulesIT::year);
|
||||
@@ -953,7 +963,7 @@ void cLeMenuChannels::RenderCurrent(void) {
|
||||
if (!currentChannel)
|
||||
return;
|
||||
currentChannel->Set(channel, withProvider);
|
||||
currentChannel->SetListPosition(container.X(), container.Y(), container.Width(), container.Height());
|
||||
currentChannel->SetListPosition(container.X(), container.Y(), container.Width(), container.Height(), num);
|
||||
currentChannel->Parse();
|
||||
}
|
||||
|
||||
@@ -998,6 +1008,7 @@ void cCeMenuChannels::SetTokenContainer(void) {
|
||||
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuChannelsIT::menuitemy);
|
||||
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuChannelsIT::menuitemwidth);
|
||||
tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuChannelsIT::menuitemheight);
|
||||
tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuChannelsIT::numitem);
|
||||
tokenContainer->DefineIntToken("{number}", (int)eCeMenuChannelsIT::number);
|
||||
tokenContainer->DefineIntToken("{transponder}", (int)eCeMenuChannelsIT::transponder);
|
||||
tokenContainer->DefineIntToken("{frequency}", (int)eCeMenuChannelsIT::frequency);
|
||||
@@ -1271,7 +1282,7 @@ void cLeMenuTimers::RenderCurrent(void) {
|
||||
if (!currentTimer)
|
||||
return;
|
||||
currentTimer->Set(timer);
|
||||
currentTimer->SetListPosition(container.X(), container.Y(), container.Width(), container.Height());
|
||||
currentTimer->SetListPosition(container.X(), container.Y(), container.Width(), container.Height(), num);
|
||||
currentTimer->Parse();
|
||||
}
|
||||
|
||||
@@ -1307,6 +1318,7 @@ void cCeMenuTimers::SetTokenContainer(void) {
|
||||
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuTimersIT::menuitemy);
|
||||
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuTimersIT::menuitemwidth);
|
||||
tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuTimersIT::menuitemheight);
|
||||
tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuTimersIT::numitem);
|
||||
tokenContainer->DefineIntToken("{month}", (int)eCeMenuTimersIT::month);
|
||||
tokenContainer->DefineIntToken("{year}", (int)eCeMenuTimersIT::year);
|
||||
tokenContainer->DefineIntToken("{channellogoexists}", (int)eCeMenuTimersIT::channellogoexists);
|
||||
@@ -1602,7 +1614,7 @@ void cLeMenuRecordings::RenderCurrent(void) {
|
||||
if (!currentRecording)
|
||||
return;
|
||||
currentRecording->Set(recording, level, total, New);
|
||||
currentRecording->SetListPosition(container.X(), container.Y(), container.Width(), container.Height());
|
||||
currentRecording->SetListPosition(container.X(), container.Y(), container.Width(), container.Height(), num);
|
||||
currentRecording->Parse();
|
||||
}
|
||||
|
||||
@@ -1679,6 +1691,7 @@ void cCeMenuRecordings::SetTokenContainer(void) {
|
||||
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuRecordingsIT::menuitemy);
|
||||
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuRecordingsIT::menuitemwidth);
|
||||
tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuRecordingsIT::menuitemheight);
|
||||
tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuRecordingsIT::numitem);
|
||||
tokenContainer->DefineIntToken("{new}", (int)eCeMenuRecordingsIT::isnew);
|
||||
tokenContainer->DefineIntToken("{percentseen}", (int)eCeMenuRecordingsIT::percentseen);
|
||||
tokenContainer->DefineIntToken("{watched}", (int)eCeMenuRecordingsIT::watched);
|
||||
@@ -1888,7 +1901,7 @@ void cLeMenuPlugin::RenderCurrent(void) {
|
||||
if (!currentPlugin)
|
||||
return;
|
||||
currentPlugin->Set(tokenContainer);
|
||||
currentPlugin->SetListPosition(container.X(), container.Y(), container.Width(), container.Height());
|
||||
currentPlugin->SetListPosition(container.X(), container.Y(), container.Width(), container.Height(), num);
|
||||
currentPlugin->Parse();
|
||||
}
|
||||
|
||||
|
||||
@@ -42,10 +42,11 @@ protected:
|
||||
int listY;
|
||||
int listWidth;
|
||||
int listHeight;
|
||||
int listNum;
|
||||
public:
|
||||
cCurrentElement(void);
|
||||
virtual ~cCurrentElement(void) {};
|
||||
void SetListPosition(int x, int y, int width, int height);
|
||||
void SetListPosition(int x, int y, int width, int height, int num);
|
||||
void SetListTokens(skindesignerapi::cTokenContainer *tokenContainer);
|
||||
};
|
||||
|
||||
|
||||
@@ -639,40 +639,33 @@ cSubView::cSubView(const char *name) {
|
||||
colorbuttons = NULL;
|
||||
scrollbar = NULL;
|
||||
viewList = NULL;
|
||||
viewListVertical = NULL;
|
||||
viewListHorizontal = NULL;
|
||||
SetViewElements();
|
||||
}
|
||||
|
||||
cSubView::~cSubView(void) {
|
||||
delete viewListHorizontal;
|
||||
delete viewListVertical;
|
||||
for(vector<cViewList*>::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
|
||||
delete (*it);
|
||||
}
|
||||
}
|
||||
|
||||
void cSubView::SetGlobals(cGlobals *globals) {
|
||||
cView::SetGlobals(globals);
|
||||
if (viewListVertical)
|
||||
viewListVertical->SetGlobals(globals);
|
||||
if (viewListHorizontal)
|
||||
viewListHorizontal->SetGlobals(globals);
|
||||
for(vector<cViewList*>::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
|
||||
(*it)->SetGlobals(globals);
|
||||
}
|
||||
}
|
||||
|
||||
void cSubView::PreCache(void) {
|
||||
attribs->SetContainer(container.X(), container.Y(), container.Width(), container.Height());
|
||||
attribs->Cache();
|
||||
for(vector<cViewList*>::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
|
||||
cViewList *vl = (*it);
|
||||
vl->SetPlugId(plugId);
|
||||
vl->SetPlugMenuId(plugMenuId);
|
||||
vl->SetContainer(attribs->X(), attribs->Y(), attribs->Width(), attribs->Height());
|
||||
vl->PreCache();
|
||||
}
|
||||
cView::PreCache();
|
||||
if (viewListVertical) {
|
||||
viewListVertical->SetPlugId(plugId);
|
||||
viewListVertical->SetPlugMenuId(plugMenuId);
|
||||
viewListVertical->SetContainer(attribs->X(), attribs->Y(), attribs->Width(), attribs->Height());
|
||||
viewListVertical->PreCache();
|
||||
}
|
||||
if (viewListHorizontal) {
|
||||
viewListHorizontal->SetPlugId(plugId);
|
||||
viewListHorizontal->SetPlugMenuId(plugMenuId);
|
||||
viewListHorizontal->SetContainer(attribs->X(), attribs->Y(), attribs->Width(), attribs->Height());
|
||||
viewListHorizontal->PreCache();
|
||||
}
|
||||
}
|
||||
|
||||
bool cSubView::ViewElementSet(int ve) {
|
||||
@@ -769,14 +762,7 @@ void cSubView::SetViewElementHorizontal(eVeDisplayMenu ve, cViewElement *viewEle
|
||||
}
|
||||
|
||||
void cSubView::AddViewList(cViewList *viewList) {
|
||||
eOrientation orientation = viewList->Orientation();
|
||||
if (orientation == eOrientation::vertical) {
|
||||
viewListVertical = viewList;
|
||||
} else if (orientation == eOrientation::horizontal) {
|
||||
viewListHorizontal = viewList;
|
||||
} else {
|
||||
viewListVertical = viewList;
|
||||
}
|
||||
viewLists.push_back(viewList);
|
||||
}
|
||||
|
||||
int cSubView::NumListItems(void) {
|
||||
@@ -987,11 +973,17 @@ void cSubView::SetViewElementObjects(void) {
|
||||
else if (viewElements[(int)eVeDisplayMenu::scrollbar])
|
||||
scrollbar = dynamic_cast<cVeDmScrollbar*>(viewElements[(int)eVeDisplayMenu::scrollbar]);
|
||||
|
||||
|
||||
if (attribs->Orientation() == eOrientation::horizontal)
|
||||
viewList = viewListHorizontal;
|
||||
else
|
||||
viewList = viewListVertical;
|
||||
//set appropriate viewlist, orientation and condition have to be considered
|
||||
for(vector<cViewList*>::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
|
||||
cViewList *vl = (*it);
|
||||
if (vl->Orientation() == orientation && vl->Execute()) {
|
||||
viewList = vl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!viewList && viewLists.size() > 0) {
|
||||
viewList = viewLists.front();
|
||||
}
|
||||
}
|
||||
|
||||
void cSubView::SetViewElements(void) {
|
||||
|
||||
@@ -72,6 +72,7 @@ public:
|
||||
void AddSubview(const char *sSubView, cSubView *subView);
|
||||
void AddPluginview(cSubView *plugView);
|
||||
void SetSubView(eMenuCategory MenuCat);
|
||||
eMenuCategory MenuCat(void) { return menuCat; };
|
||||
void SetSortMode(eMenuSortMode sortMode);
|
||||
void SetPluginMenu(int plugId, int plugMenuId);
|
||||
int NumListItems(void);
|
||||
@@ -114,8 +115,7 @@ protected:
|
||||
int plugId;
|
||||
int plugMenuId;
|
||||
cViewList *viewList;
|
||||
cViewList *viewListVertical;
|
||||
cViewList *viewListHorizontal;
|
||||
vector<cViewList*> viewLists;
|
||||
cViewElement *background;
|
||||
cVeDmHeader *header;
|
||||
cVeDateTime *datetime;
|
||||
|
||||
@@ -24,6 +24,7 @@ cViewList::~cViewList(void) {
|
||||
}
|
||||
}
|
||||
delete[] listElements;
|
||||
delete tokenContainer;
|
||||
}
|
||||
|
||||
void cViewList::SetGlobals(cGlobals *globals) {
|
||||
@@ -127,6 +128,9 @@ void cViewList::AddCurrentElement(cViewElement *currentElement) {
|
||||
}
|
||||
|
||||
void cViewList::PreCache(void) {
|
||||
tokenContainer = new skindesignerapi::cTokenContainer();
|
||||
tokenContainer->CreateContainers();
|
||||
attribs->SetTokenContainer(tokenContainer);
|
||||
attribs->SetContainer(container.X(), container.Y(), container.Width(), container.Height());
|
||||
attribs->SetGlobals(globals);
|
||||
attribs->Cache();
|
||||
@@ -164,6 +168,10 @@ int cViewList::NumItems(void) {
|
||||
return numElements;
|
||||
}
|
||||
|
||||
bool cViewList::Execute(void) {
|
||||
return attribs->DoExecute();
|
||||
}
|
||||
|
||||
eOrientation cViewList::Orientation(void) {
|
||||
return attribs->Orientation();
|
||||
}
|
||||
@@ -219,6 +227,8 @@ void cViewList::SetTransparency(int transparency) {
|
||||
}
|
||||
|
||||
void cViewList::Debug(void) {
|
||||
esyslog("skindesigner: --- debug viewlist");
|
||||
attribs->Debug();
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
|
||||
@@ -13,6 +13,7 @@ protected:
|
||||
cViewListAttribs *attribs;
|
||||
cRect container;
|
||||
cGlobals *globals;
|
||||
skindesignerapi::cTokenContainer *tokenContainer;
|
||||
int numElements;
|
||||
eOrientation orientation;
|
||||
cViewElement *listElement;
|
||||
@@ -34,6 +35,7 @@ public:
|
||||
void AddCurrentElement(cViewElement *currentElement);
|
||||
virtual void PreCache(void);
|
||||
int NumItems(void);
|
||||
bool Execute(void);
|
||||
eOrientation Orientation(void);
|
||||
void Draw(eMenuCategory menuCat);
|
||||
void Clear(void);
|
||||
|
||||
Reference in New Issue
Block a user