Theme Editor: Made %pv tag display bar and select from conditional branches correctly

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27398 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-07-12 06:07:50 +00:00
parent bae1836337
commit 64af2b3a16
4 changed files with 48 additions and 4 deletions

View file

@ -660,6 +660,17 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
new RBProgressBar(viewport, info, element->params_count,
element->params);
return true;
case 'v':
/* %pv */
if(element->params_count > 0)
{
new RBProgressBar(viewport, info, element->params_count,
element->params, true);
return true;
}
else
return false;
}
return false;
@ -928,6 +939,26 @@ QVariant ParseTreeNode::evalTag(const RBRenderInfo& info, bool conditional,
child = ((branches - 1) * child / 100) + 1;
}
}
else if(QString(element->tag->name) == "pv")
{
/* ?pv gets scaled to the number of available children, sandwiched
* in between mute and 0/>0dB. I assume a floor of -50dB for the
* time being
*/
int dB = val.toInt();
if(dB < -50)
child = 0;
else if(dB == 0)
child = branches - 2;
else if(dB > 0)
child = branches - 1;
else
{
int options = branches - 3;
child = (options * (dB + 50)) / 50;
}
}
else if(QString(element->tag->name) == "px")
{
child = val.toInt();