From 64af2b3a16c1fc9968b50223b79321ca04cc53e4 Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Mon, 12 Jul 2010 06:07:50 +0000 Subject: 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 --- utils/themeeditor/models/parsetreenode.cpp | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'utils/themeeditor/models') diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index 973ceb598b..1b894b7c33 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp @@ -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(); -- cgit v1.2.3