improved estuary4vdr

This commit is contained in:
louis
2016-04-30 06:49:30 +02:00
parent 4076377e21
commit f4f64e96e5
35 changed files with 1455 additions and 380 deletions

View File

@@ -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,

View File

@@ -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();
}

View File

@@ -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);
};

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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();
}
/******************************************************************

View File

@@ -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);