summaryrefslogtreecommitdiff
path: root/utils/themeeditor/graphics/rbprogressbar.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-07-02 00:20:36 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-07-02 00:20:36 +0000
commit9742704070732aeaa9fa1287045a682db5cf4527 (patch)
treef459140aa86f7e61e574912fdba80241641feded /utils/themeeditor/graphics/rbprogressbar.cpp
parent5633ece5a85a933a45de3896eb52bb3804849c3b (diff)
downloadrockbox-9742704070732aeaa9fa1287045a682db5cf4527.zip
rockbox-9742704070732aeaa9fa1287045a682db5cf4527.tar.gz
rockbox-9742704070732aeaa9fa1287045a682db5cf4527.tar.bz2
rockbox-9742704070732aeaa9fa1287045a682db5cf4527.tar.xz
Theme Editor: Altered tag table entry for %pb to make image optional, implemented progress bar rendering in theme editor
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27229 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/graphics/rbprogressbar.cpp')
-rw-r--r--utils/themeeditor/graphics/rbprogressbar.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/utils/themeeditor/graphics/rbprogressbar.cpp b/utils/themeeditor/graphics/rbprogressbar.cpp
new file mode 100644
index 0000000..1c14acf
--- /dev/null
+++ b/utils/themeeditor/graphics/rbprogressbar.cpp
@@ -0,0 +1,106 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include <QPainter>
+
+#include "rbprogressbar.h"
+#include "projectmodel.h"
+
+RBProgressBar::RBProgressBar(RBViewport *parent, const RBRenderInfo &info,
+ int paramCount, skin_tag_parameter *params)
+ :QGraphicsItem(parent)
+{
+ /* First we set everything to defaults */
+ bitmap = 0;
+ color = parent->getFGColor();
+ int x = 0;
+ int y = parent->getTextOffset();
+ int w = parent->boundingRect().width();
+ int h = 6;
+
+ /* Now we change defaults if the parameters are there */
+
+ if(paramCount > 0 && params[0].type != skin_tag_parameter::DEFAULT)
+ {
+ x = params[0].data.numeric;
+ }
+
+ if(paramCount > 1 && params[1].type != skin_tag_parameter::DEFAULT)
+ {
+ y = params[1].data.numeric;
+ }
+
+ if(paramCount > 2 && params[2].type != skin_tag_parameter::DEFAULT)
+ {
+ w = params[2].data.numeric;
+ }
+
+ if(paramCount > 3 && params[3].type != skin_tag_parameter::DEFAULT)
+ {
+ h = params[3].data.numeric;
+ }
+
+ if(paramCount > 4 && params[4].type != skin_tag_parameter::DEFAULT)
+ {
+ QString imPath(params[4].data.text);
+ imPath = info.settings()->value("imagepath", "") + "/" + imPath;
+ bitmap = new QPixmap(imPath);
+ if(bitmap->isNull())
+ {
+ delete bitmap;
+ bitmap = 0;
+ }
+ }
+
+
+ /* Finally, we scale the width according to the amount played */
+ int percent = info.device()->data("px").toInt();
+ w = w * percent / 100;
+
+ size = QRectF(0, 0, w, h);
+ setPos(x, y);
+ parent->addTextOffset(h);
+}
+
+RBProgressBar::~RBProgressBar()
+{
+ if(bitmap)
+ delete bitmap;
+}
+
+QRectF RBProgressBar::boundingRect() const
+{
+ return size;
+}
+
+void RBProgressBar::paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option,
+ QWidget *widget)
+{
+ if(bitmap && !bitmap->isNull())
+ {
+ painter->drawPixmap(size, *bitmap, size);
+ }
+ else
+ {
+ painter->fillRect(size, color);
+ }
+}