summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-07-12 06:07:50 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-07-12 06:07:50 +0000
commit64af2b3a16c1fc9968b50223b79321ca04cc53e4 (patch)
treea34a9330f320846e07479791c7a664e3f8d979e9
parentbae183633705b087f80afe11a36772f553a5cb26 (diff)
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
-rw-r--r--utils/themeeditor/graphics/rbprogressbar.cpp18
-rw-r--r--utils/themeeditor/graphics/rbprogressbar.h2
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp31
-rw-r--r--utils/themeeditor/resources/deviceoptions1
4 files changed, 48 insertions, 4 deletions
diff --git a/utils/themeeditor/graphics/rbprogressbar.cpp b/utils/themeeditor/graphics/rbprogressbar.cpp
index 1c14acfc5a..027520f4da 100644
--- a/utils/themeeditor/graphics/rbprogressbar.cpp
+++ b/utils/themeeditor/graphics/rbprogressbar.cpp
@@ -25,7 +25,8 @@
#include "projectmodel.h"
RBProgressBar::RBProgressBar(RBViewport *parent, const RBRenderInfo &info,
- int paramCount, skin_tag_parameter *params)
+ int paramCount, skin_tag_parameter *params,
+ bool pv)
:QGraphicsItem(parent)
{
/* First we set everything to defaults */
@@ -72,7 +73,20 @@ RBProgressBar::RBProgressBar(RBViewport *parent, const RBRenderInfo &info,
/* Finally, we scale the width according to the amount played */
- int percent = info.device()->data("px").toInt();
+ int percent;
+ if(pv)
+ {
+ percent = (info.device()->data("pv").toInt() + 50) * 100 / 56;
+ }
+ else
+ {
+ percent = info.device()->data("px").toInt();
+ }
+ if(percent > 100)
+ percent = 100;
+ if(percent < 0)
+ percent = 0;
+
w = w * percent / 100;
size = QRectF(0, 0, w, h);
diff --git a/utils/themeeditor/graphics/rbprogressbar.h b/utils/themeeditor/graphics/rbprogressbar.h
index edcdd01d6e..e72479853e 100644
--- a/utils/themeeditor/graphics/rbprogressbar.h
+++ b/utils/themeeditor/graphics/rbprogressbar.h
@@ -34,7 +34,7 @@ class RBProgressBar : public QGraphicsItem
{
public:
RBProgressBar(RBViewport* parent, const RBRenderInfo& info,
- int paramCount, skin_tag_parameter* params);
+ int paramCount, skin_tag_parameter* params, bool pv = 0);
virtual ~RBProgressBar();
QRectF boundingRect() const;
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();
diff --git a/utils/themeeditor/resources/deviceoptions b/utils/themeeditor/resources/deviceoptions
index 771229a453..cc349c5418 100644
--- a/utils/themeeditor/resources/deviceoptions
+++ b/utils/themeeditor/resources/deviceoptions
@@ -105,7 +105,6 @@ artheight; Album Art Height ; spin(0,500) ; 100
[Hardware Status]
pv ; Current Volume (dB) ; spin(-100,100) ; 0
-?pv ; Current Volume (Conditional) ; combo(Mute, Below 0 dB, 0 dB, Above 0 dB) ; 0 dB
bl ; Battery Level (-1 for unknown) ; spin(-1,100) ; 50
bv ; Battery Volts ; spin(0,20) ; 5
bt ; Time Left (-1 for unknown) ; spin(-1,500); 100