diff options
author | Robert Bieber <robby@bieberphoto.com> | 2010-07-12 06:07:50 +0000 |
---|---|---|
committer | Robert Bieber <robby@bieberphoto.com> | 2010-07-12 06:07:50 +0000 |
commit | 64af2b3a16c1fc9968b50223b79321ca04cc53e4 (patch) | |
tree | a34a9330f320846e07479791c7a664e3f8d979e9 | |
parent | bae183633705b087f80afe11a36772f553a5cb26 (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.cpp | 18 | ||||
-rw-r--r-- | utils/themeeditor/graphics/rbprogressbar.h | 2 | ||||
-rw-r--r-- | utils/themeeditor/models/parsetreenode.cpp | 31 | ||||
-rw-r--r-- | utils/themeeditor/resources/deviceoptions | 1 |
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 |