Theme Editor: Implemented saveGeometry() in RBAlbumArt

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27713 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-08-05 08:03:32 +00:00
parent 2ea1a34f98
commit 265ee156f2
4 changed files with 25 additions and 6 deletions

View file

@ -23,15 +23,19 @@
#include <QPainter>
#include "parsetreenode.h"
RBAlbumArt::RBAlbumArt(QGraphicsItem *parent, int x, int y, int maxWidth,
int maxHeight, int artWidth, int artHeight, char hAlign,
char vAlign)
int maxHeight, int artWidth, int artHeight,
ParseTreeNode* node, char hAlign, char vAlign)
: RBMovable(parent), size(0, 0, maxWidth,
maxHeight),
artWidth(artWidth), artHeight(artHeight),
hAlign(hAlign), vAlign(vAlign),
texture(":/render/albumart.png")
texture(":/render/albumart.png"), node(node)
{
setFlag(ItemSendsGeometryChanges, false);
setPos(x, y);
hide();
}
@ -99,4 +103,11 @@ void RBAlbumArt::paint(QPainter *painter,
void RBAlbumArt::saveGeometry()
{
QPointF origin = pos();
QRectF bounds = boundingRect();
node->modParam(static_cast<int>(origin.x()), 0);
node->modParam(static_cast<int>(origin.y()), 1);
node->modParam(static_cast<int>(bounds.width()), 2);
node->modParam(static_cast<int>(bounds.height()), 3);
}

View file

@ -26,18 +26,23 @@
#include "rbmovable.h"
class ParseTreeNode;
class RBAlbumArt : public RBMovable
{
public:
RBAlbumArt(QGraphicsItem* parent, int x, int y, int maxWidth, int maxHeight,
int artWidth, int artHeight, char hAlign = 'c',
char vAlign = 'c');
int artWidth, int artHeight, ParseTreeNode* node,
char hAlign = 'c', char vAlign = 'c');
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget);
void position(){ this->setPos(size.x(), size.y()); }
void enableMove(){
setFlag(ItemSendsGeometryChanges, true);
}
protected:
void saveGeometry();
@ -49,6 +54,8 @@ private:
char hAlign;
char vAlign;
QPixmap texture;
ParseTreeNode* node;
};
#endif // RBALBUMART_H

View file

@ -82,6 +82,7 @@ public:
{
albumArt->setParentItem(view);
albumArt->show();
albumArt->enableMove();
}
}

View file

@ -819,7 +819,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
height = info.device()->data("artheight").toInt();
info.screen()->setAlbumArt(new RBAlbumArt(viewport, x, y, maxWidth,
maxHeight, width, height,
hAlign, vAlign));
this, hAlign, vAlign));
return true;
}