mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 17:58:31 +02:00
add detached option for viewelements
This commit is contained in:
parent
9c93fbc072
commit
d1ea7bd4a4
@ -22,11 +22,13 @@ cSDDisplayChannel::cSDDisplayChannel(cTemplate *channelTemplate, bool WithInfo)
|
|||||||
doOutput = false;
|
doOutput = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
esyslog("skindesigner: displaychannel opened");
|
||||||
}
|
}
|
||||||
|
|
||||||
cSDDisplayChannel::~cSDDisplayChannel() {
|
cSDDisplayChannel::~cSDDisplayChannel() {
|
||||||
if (channelView)
|
if (channelView)
|
||||||
delete channelView;
|
delete channelView;
|
||||||
|
esyslog("skindesigner: displaychannel closed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSDDisplayChannel::SetChannel(const cChannel *Channel, int Number) {
|
void cSDDisplayChannel::SetChannel(const cChannel *Channel, int Number) {
|
||||||
|
@ -86,6 +86,9 @@
|
|||||||
|
|
||||||
<!ELEMENT devices (area|areascroll)*>
|
<!ELEMENT devices (area|areascroll)*>
|
||||||
<!ATTLIST devices
|
<!ATTLIST devices
|
||||||
|
detached CDATA #IMPLIED
|
||||||
|
delay CDATA #IMPLIED
|
||||||
|
fadetime CDATA #IMPLIED
|
||||||
debug CDATA #IMPLIED
|
debug CDATA #IMPLIED
|
||||||
condition CDATA #IMPLIED
|
condition CDATA #IMPLIED
|
||||||
>
|
>
|
||||||
|
@ -63,6 +63,8 @@ void cTemplateFunction::SetParameters(vector<pair<string, string> > params) {
|
|||||||
p.first = ptHeight;
|
p.first = ptHeight;
|
||||||
} else if (!name.compare("menuitemwidth")) {
|
} else if (!name.compare("menuitemwidth")) {
|
||||||
p.first = ptMenuItemWidth;
|
p.first = ptMenuItemWidth;
|
||||||
|
} else if (!name.compare("detached")) {
|
||||||
|
p.first = ptDetached;
|
||||||
} else if (!name.compare("fadetime")) {
|
} else if (!name.compare("fadetime")) {
|
||||||
p.first = ptFadeTime;
|
p.first = ptFadeTime;
|
||||||
} else if (!name.compare("imagetype")) {
|
} else if (!name.compare("imagetype")) {
|
||||||
@ -266,6 +268,9 @@ bool cTemplateFunction::CalculateParameters(void) {
|
|||||||
case ptHideRoot:
|
case ptHideRoot:
|
||||||
paramValid = SetHideRoot(value);
|
paramValid = SetHideRoot(value);
|
||||||
break;
|
break;
|
||||||
|
case ptDetached:
|
||||||
|
paramValid = SetDetached(value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
paramValid = true;
|
paramValid = true;
|
||||||
break;
|
break;
|
||||||
@ -406,6 +411,8 @@ int cTemplateFunction::GetNumericParameter(eParamType type) {
|
|||||||
return 0;
|
return 0;
|
||||||
else if (type == ptHideRoot)
|
else if (type == ptHideRoot)
|
||||||
return 0;
|
return 0;
|
||||||
|
else if (type == ptDetached)
|
||||||
|
return 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return hit->second;
|
return hit->second;
|
||||||
@ -1062,6 +1069,14 @@ bool cTemplateFunction::SetHideRoot(string value) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cTemplateFunction::SetDetached(string value) {
|
||||||
|
int detached = 0;
|
||||||
|
if (!value.compare("true"))
|
||||||
|
detached = 1;
|
||||||
|
numericParameters.insert(pair<eParamType, int>(ptDetached, detached));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void cTemplateFunction::ParseStringParameters(void) {
|
void cTemplateFunction::ParseStringParameters(void) {
|
||||||
//first replace stringtokens in Text (drawText)
|
//first replace stringtokens in Text (drawText)
|
||||||
stringstream text;
|
stringstream text;
|
||||||
@ -1447,6 +1462,9 @@ string cTemplateFunction::GetParamName(eParamType pt) {
|
|||||||
case ptMenuItemWidth:
|
case ptMenuItemWidth:
|
||||||
name = "Menu Item Width";
|
name = "Menu Item Width";
|
||||||
break;
|
break;
|
||||||
|
case ptDetached:
|
||||||
|
name = "Detached";
|
||||||
|
break;
|
||||||
case ptFadeTime:
|
case ptFadeTime:
|
||||||
name = "Fade Time";
|
name = "Fade Time";
|
||||||
break;
|
break;
|
||||||
|
@ -45,6 +45,7 @@ enum eParamType {
|
|||||||
ptWidth,
|
ptWidth,
|
||||||
ptHeight,
|
ptHeight,
|
||||||
ptMenuItemWidth,
|
ptMenuItemWidth,
|
||||||
|
ptDetached,
|
||||||
ptFadeTime,
|
ptFadeTime,
|
||||||
ptDelay,
|
ptDelay,
|
||||||
ptImageType,
|
ptImageType,
|
||||||
@ -152,6 +153,7 @@ protected:
|
|||||||
bool SetFloating(string value);
|
bool SetFloating(string value);
|
||||||
bool SetOverflow(string value);
|
bool SetOverflow(string value);
|
||||||
bool SetHideRoot(string value);
|
bool SetHideRoot(string value);
|
||||||
|
bool SetDetached(string value);
|
||||||
void ParseStringParameters(void);
|
void ParseStringParameters(void);
|
||||||
void ParseNumericalParameters(void);
|
void ParseNumericalParameters(void);
|
||||||
void CalculateAlign(int elementWidth, int elementHeight);
|
void CalculateAlign(int elementWidth, int elementHeight);
|
||||||
|
@ -221,6 +221,14 @@ bool cTemplateView::ExecuteView(eViewElement ve) {
|
|||||||
return viewElement->Execute();
|
return viewElement->Execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cTemplateView::DetachViewElement(eViewElement ve) {
|
||||||
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
|
if (hit == viewElements.end())
|
||||||
|
return false;
|
||||||
|
cTemplateViewElement *viewElement = hit->second;
|
||||||
|
return viewElement->Detach();
|
||||||
|
}
|
||||||
|
|
||||||
int cTemplateView::GetNumListViewMenuItems(void) {
|
int cTemplateView::GetNumListViewMenuItems(void) {
|
||||||
int numElements = 0;
|
int numElements = 0;
|
||||||
cTemplateViewList *menuList = GetViewList(vlMenuItem);
|
cTemplateViewList *menuList = GetViewList(vlMenuItem);
|
||||||
@ -613,6 +621,7 @@ void cTemplateView::SetFunctionDefinitions(void) {
|
|||||||
string name = "viewelement";
|
string name = "viewelement";
|
||||||
set<string> attributes;
|
set<string> attributes;
|
||||||
attributes.insert("debug");
|
attributes.insert("debug");
|
||||||
|
attributes.insert("detached");
|
||||||
attributes.insert("delay");
|
attributes.insert("delay");
|
||||||
attributes.insert("fadetime");
|
attributes.insert("fadetime");
|
||||||
attributes.insert("name");
|
attributes.insert("name");
|
||||||
|
@ -114,6 +114,7 @@ public:
|
|||||||
int GetNumPixmapsViewElement(eViewElement ve);
|
int GetNumPixmapsViewElement(eViewElement ve);
|
||||||
bool HideView(void);
|
bool HideView(void);
|
||||||
bool ExecuteView(eViewElement ve);
|
bool ExecuteView(eViewElement ve);
|
||||||
|
bool DetachViewElement(eViewElement ve);
|
||||||
int GetNumListViewMenuItems(void);
|
int GetNumListViewMenuItems(void);
|
||||||
bool GetScalingWindow(cRect &scalingWindow);
|
bool GetScalingWindow(cRect &scalingWindow);
|
||||||
map<string,string> GetCustomStringTokens(void) { return globals->GetCustomStringTokens(); };
|
map<string,string> GetCustomStringTokens(void) { return globals->GetCustomStringTokens(); };
|
||||||
|
@ -124,6 +124,14 @@ bool cTemplateViewElement::Execute(void) {
|
|||||||
return parameters->DoExecute();
|
return parameters->DoExecute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cTemplateViewElement::Detach(void) {
|
||||||
|
if (!parameters)
|
||||||
|
return false;
|
||||||
|
int detached = parameters->GetNumericParameter(ptDetached);
|
||||||
|
if (detached == 1)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool cTemplateViewElement::DebugTokens(void) {
|
bool cTemplateViewElement::DebugTokens(void) {
|
||||||
if (!parameters)
|
if (!parameters)
|
||||||
@ -136,6 +144,7 @@ void cTemplateViewElement::Debug(void) {
|
|||||||
esyslog("skindesigner: viewelement container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
|
esyslog("skindesigner: viewelement container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
|
||||||
if (parameters)
|
if (parameters)
|
||||||
parameters->Debug();
|
parameters->Debug();
|
||||||
|
return;
|
||||||
for (vector<cTemplatePixmap*>::iterator it = viewPixmaps.begin(); it != viewPixmaps.end(); it++) {
|
for (vector<cTemplatePixmap*>::iterator it = viewPixmaps.begin(); it != viewPixmaps.end(); it++) {
|
||||||
(*it)->Debug();
|
(*it)->Debug();
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,7 @@ public:
|
|||||||
cTemplatePixmap *GetNextPixmap(void);
|
cTemplatePixmap *GetNextPixmap(void);
|
||||||
cTemplateFunction *GetFunction(string name);
|
cTemplateFunction *GetFunction(string name);
|
||||||
bool Execute(void);
|
bool Execute(void);
|
||||||
|
bool Detach(void);
|
||||||
bool DebugTokens(void);
|
bool DebugTokens(void);
|
||||||
virtual void Debug(void);
|
virtual void Debug(void);
|
||||||
};
|
};
|
||||||
|
@ -196,7 +196,7 @@
|
|||||||
{devices[channelid]} ID of the currently tuned channel
|
{devices[channelid]} ID of the currently tuned channel
|
||||||
{devices[source]} source of the currently tuned channel
|
{devices[source]} source of the currently tuned channel
|
||||||
-->
|
-->
|
||||||
<devices>
|
<devices detached="true" delay="100" fadetime="300">
|
||||||
<area condition="{showdevices}" x="70%" y="30%" width="30%" height="{areaheight}/12 * {numdevices}" layer="1">
|
<area condition="{showdevices}" x="70%" y="30%" width="30%" height="{areaheight}/12 * {numdevices}" layer="1">
|
||||||
<fill color="{clrTransBlack}"/>
|
<fill color="{clrTransBlack}"/>
|
||||||
</area>
|
</area>
|
||||||
|
@ -393,20 +393,11 @@ void cDisplayChannelView::DrawSignal(void) {
|
|||||||
if (!ExecuteViewElement(veSignalQuality)) {
|
if (!ExecuteViewElement(veSignalQuality)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t Now = time(NULL);
|
time_t Now = time(NULL);
|
||||||
if (Now != lastSignalDisplay) {
|
if (Now != lastSignalDisplay) {
|
||||||
#ifdef DOPROFILE
|
|
||||||
cStopWatch watch("DrawSignal");
|
|
||||||
#endif
|
|
||||||
int SignalStrength = cDevice::ActualDevice()->SignalStrength();
|
int SignalStrength = cDevice::ActualDevice()->SignalStrength();
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Report("SignalStrength");
|
|
||||||
#endif
|
|
||||||
int SignalQuality = cDevice::ActualDevice()->SignalQuality();
|
int SignalQuality = cDevice::ActualDevice()->SignalQuality();
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Report("SignalQuality");
|
|
||||||
watch.Stop("DrawSignal");
|
|
||||||
#endif
|
|
||||||
if (SignalStrength < 0) SignalStrength = 0;
|
if (SignalStrength < 0) SignalStrength = 0;
|
||||||
if (SignalQuality < 0) SignalQuality = 0;
|
if (SignalQuality < 0) SignalQuality = 0;
|
||||||
if ((SignalStrength == 0)&&(SignalQuality==0))
|
if ((SignalStrength == 0)&&(SignalQuality==0))
|
||||||
@ -445,6 +436,11 @@ void cDisplayChannelView::DrawDevices(bool initial) {
|
|||||||
if (!ExecuteViewElement(veDevices)) {
|
if (!ExecuteViewElement(veDevices)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (DetachViewElement(veDevices)) {
|
||||||
|
esyslog("skindesigner: start new thread for devices");
|
||||||
|
}
|
||||||
|
|
||||||
map < string, string > stringTokens;
|
map < string, string > stringTokens;
|
||||||
map < string, int > intTokens;
|
map < string, int > intTokens;
|
||||||
map < string, vector< map< string, string > > > deviceLoopTokens;
|
map < string, vector< map< string, string > > > deviceLoopTokens;
|
||||||
|
@ -206,12 +206,20 @@ void cView::ActivateScrolling(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool cView::ExecuteViewElement(eViewElement ve) {
|
bool cView::ExecuteViewElement(eViewElement ve) {
|
||||||
|
if (!tmplView)
|
||||||
|
return false;
|
||||||
bool doExecute = tmplView->ExecuteView(ve);
|
bool doExecute = tmplView->ExecuteView(ve);
|
||||||
if (!doExecute)
|
if (!doExecute)
|
||||||
return false;
|
return false;
|
||||||
return tmplView->GetNumPixmapsViewElement(ve);
|
return tmplView->GetNumPixmapsViewElement(ve);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cView::DetachViewElement(eViewElement ve) {
|
||||||
|
if (!tmplView)
|
||||||
|
return false;
|
||||||
|
return tmplView->DetachViewElement(ve);
|
||||||
|
}
|
||||||
|
|
||||||
bool cView::ViewElementScrolls(eViewElement ve) {
|
bool cView::ViewElementScrolls(eViewElement ve) {
|
||||||
if (scrollingPix < 0)
|
if (scrollingPix < 0)
|
||||||
return false;
|
return false;
|
||||||
|
@ -43,6 +43,7 @@ protected:
|
|||||||
void ClearViewElement(eViewElement ve);
|
void ClearViewElement(eViewElement ve);
|
||||||
void DestroyViewElement(eViewElement ve);
|
void DestroyViewElement(eViewElement ve);
|
||||||
bool ExecuteViewElement(eViewElement ve);
|
bool ExecuteViewElement(eViewElement ve);
|
||||||
|
bool DetachViewElement(eViewElement ve);
|
||||||
bool ViewElementScrolls(eViewElement ve);
|
bool ViewElementScrolls(eViewElement ve);
|
||||||
void CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size = NULL);
|
void CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size = NULL);
|
||||||
void CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize);
|
void CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "viewhelpers.h"
|
#include "viewhelpers.h"
|
||||||
|
|
||||||
cViewHelpers::cViewHelpers(void) {
|
cViewHelpers::cViewHelpers(void) {
|
||||||
|
numDevices = 0;
|
||||||
devicesInit = false;
|
devicesInit = false;
|
||||||
lastSecond = -1;
|
lastSecond = -1;
|
||||||
lastMinute = -1;
|
lastMinute = -1;
|
||||||
@ -20,7 +21,7 @@ cViewHelpers::~cViewHelpers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void cViewHelpers::InitDevices(void) {
|
void cViewHelpers::InitDevices(void) {
|
||||||
int numDevices = cDevice::NumDevices();
|
numDevices = cDevice::NumDevices();
|
||||||
lastSignalStrength = new int[numDevices];
|
lastSignalStrength = new int[numDevices];
|
||||||
lastSignalQuality = new int[numDevices];
|
lastSignalQuality = new int[numDevices];
|
||||||
recDevices = new bool[numDevices];
|
recDevices = new bool[numDevices];
|
||||||
@ -33,10 +34,6 @@ void cViewHelpers::InitDevices(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices) {
|
bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices) {
|
||||||
#ifdef DOPROFILE
|
|
||||||
cStopWatch watch("SetDevices");
|
|
||||||
#endif
|
|
||||||
int numDevices = cDevice::NumDevices();
|
|
||||||
if (!initial) {
|
if (!initial) {
|
||||||
//check if drawing is necessary
|
//check if drawing is necessary
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
@ -46,23 +43,13 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
int signalStrength = device->SignalStrength();
|
int signalStrength = device->SignalStrength();
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Report(*cString::sprintf("SignalStrength() device %d", i));
|
|
||||||
#endif
|
|
||||||
int signalQuality = device->SignalQuality();
|
int signalQuality = device->SignalQuality();
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Report(*cString::sprintf("SignalQuality() device %d", i));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((signalStrength != lastSignalStrength[i]) || (signalQuality != lastSignalQuality[i])) {
|
if ((signalStrength != lastSignalStrength[i]) || (signalQuality != lastSignalQuality[i])) {
|
||||||
changed = true;
|
changed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!changed) {
|
if (!changed) {
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Stop("SetDevices End");
|
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,13 +96,7 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m
|
|||||||
deviceVals.insert(pair< string, string >("devices[hascam]", "0"));
|
deviceVals.insert(pair< string, string >("devices[hascam]", "0"));
|
||||||
}
|
}
|
||||||
int signalStrength = device->SignalStrength();
|
int signalStrength = device->SignalStrength();
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Report(*cString::sprintf("SignalStrength() device %d", i));
|
|
||||||
#endif
|
|
||||||
int signalQuality = device->SignalQuality();
|
int signalQuality = device->SignalQuality();
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Report(*cString::sprintf("SignalQuality() device %d", i));
|
|
||||||
#endif
|
|
||||||
stringstream strCamNumber;
|
stringstream strCamNumber;
|
||||||
strCamNumber << camNumber;
|
strCamNumber << camNumber;
|
||||||
deviceVals.insert(pair< string, string >("devices[cam]", strCamNumber.str()));
|
deviceVals.insert(pair< string, string >("devices[cam]", strCamNumber.str()));
|
||||||
@ -157,9 +138,6 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m
|
|||||||
}
|
}
|
||||||
|
|
||||||
intTokens->insert(pair<string, int>("numdevices", actualNumDevices));
|
intTokens->insert(pair<string, int>("numdevices", actualNumDevices));
|
||||||
#ifdef DOPROFILE
|
|
||||||
watch.Stop("SetDevices End");
|
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
class cViewHelpers {
|
class cViewHelpers {
|
||||||
private:
|
private:
|
||||||
|
int numDevices;
|
||||||
bool devicesInit;
|
bool devicesInit;
|
||||||
int* lastSignalStrength;
|
int* lastSignalStrength;
|
||||||
int* lastSignalQuality;
|
int* lastSignalQuality;
|
||||||
|
Loading…
Reference in New Issue
Block a user