diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-07-02 00:20:36 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-07-02 00:20:36 +0000 |
| commit | 9742704070732aeaa9fa1287045a682db5cf4527 (patch) | |
| tree | f459140aa86f7e61e574912fdba80241641feded /utils/themeeditor/graphics | |
| parent | 5633ece5a85a933a45de3896eb52bb3804849c3b (diff) | |
| download | rockbox-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')
| -rw-r--r-- | utils/themeeditor/graphics/rbprogressbar.cpp | 106 | ||||
| -rw-r--r-- | utils/themeeditor/graphics/rbprogressbar.h | 51 | ||||
| -rw-r--r-- | utils/themeeditor/graphics/rbviewport.h | 4 |
3 files changed, 161 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); + } +} diff --git a/utils/themeeditor/graphics/rbprogressbar.h b/utils/themeeditor/graphics/rbprogressbar.h new file mode 100644 index 0000000..edcdd01 --- /dev/null +++ b/utils/themeeditor/graphics/rbprogressbar.h @@ -0,0 +1,51 @@ +/*************************************************************************** + * __________ __ ___. + * 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. + * + ****************************************************************************/ + +#ifndef RBPROGRESSBAR_H +#define RBPROGRESSBAR_H + +#include <QGraphicsItem> +#include <QPixmap> + +#include "rbrenderinfo.h" +#include "rbviewport.h" +#include "devicestate.h" +#include "skin_parser.h" + +class RBProgressBar : public QGraphicsItem +{ +public: + RBProgressBar(RBViewport* parent, const RBRenderInfo& info, + int paramCount, skin_tag_parameter* params); + virtual ~RBProgressBar(); + + QRectF boundingRect() const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget); + +private: + QPixmap* bitmap; + QColor color; + QRectF size; + +}; + +#endif // RBPROGRESSBAR_H diff --git a/utils/themeeditor/graphics/rbviewport.h b/utils/themeeditor/graphics/rbviewport.h index 70f5223..624a968 100644 --- a/utils/themeeditor/graphics/rbviewport.h +++ b/utils/themeeditor/graphics/rbviewport.h @@ -49,13 +49,17 @@ public: QWidget *widget); void setBGColor(QColor color){ background = color; } + QColor getBGColor(){ return background; } void setFGColor(QColor color){ foreground = color; } + QColor getFGColor(){ return foreground; } void makeCustomUI(){ customUI = true; } void clearCustomUI(){ customUI = false; } void newLine(); void write(QString text); void alignText(Alignment align){ textAlign = align; } + int getTextOffset(){ return textOffset.y(); } + void addTextOffset(int height){ textOffset.setY(textOffset.y() + height); } void enableStatusBar(){ showStatusBar = true; } |