1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Fixed image positioning bug, implemented saveGeometry() in RBImage

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27711 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-08-05 07:28:01 +00:00
parent 430eb651a2
commit bfc20975b0
3 changed files with 33 additions and 9 deletions

View file

@ -24,10 +24,16 @@
#include <QBitmap> #include <QBitmap>
#include "rbimage.h" #include "rbimage.h"
#include "parsetreenode.h"
RBImage::RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent) RBImage::RBImage(QString file, int tiles, int x, int y, ParseTreeNode* node,
: RBMovable(parent), tiles(tiles), currentTile(0) QGraphicsItem* parent)
: RBMovable(parent), tiles(tiles), currentTile(0),
node(node)
{ {
/* Prevents RBMovable from interfering with initial position setting */
setFlag(ItemSendsGeometryChanges, false);
if(QFile::exists(file)) if(QFile::exists(file))
{ {
image = new QPixmap(file); image = new QPixmap(file);
@ -56,7 +62,8 @@ RBImage::RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent)
} }
RBImage::RBImage(const RBImage &other, QGraphicsItem* parent) RBImage::RBImage(const RBImage &other, QGraphicsItem* parent)
: RBMovable(parent), tiles(other.tiles), currentTile(other.currentTile) : RBMovable(parent), tiles(other.tiles), currentTile(other.currentTile),
node(other.node)
{ {
if(other.image) if(other.image)
image = new QPixmap(*(other.image)); image = new QPixmap(*(other.image));
@ -90,7 +97,12 @@ void RBImage::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
RBMovable::paint(painter, option, widget); RBMovable::paint(painter, option, widget);
} }
void RBImage::saveGeometry() void RBImage::saveGeometry()
{ {
QPointF origin = pos();
node->modParam(static_cast<int>(origin.x()), 2);
node->modParam(static_cast<int>(origin.y()), 3);
} }

View file

@ -27,10 +27,13 @@
#include "rbmovable.h" #include "rbmovable.h"
class ParseTreeNode;
class RBImage: public RBMovable class RBImage: public RBMovable
{ {
public: public:
RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent = 0); RBImage(QString file, int tiles, int x, int y, ParseTreeNode* node,
QGraphicsItem* parent = 0);
RBImage(const RBImage& other, QGraphicsItem* parent); RBImage(const RBImage& other, QGraphicsItem* parent);
virtual ~RBImage(); virtual ~RBImage();
@ -45,6 +48,11 @@ public:
currentTile = tiles -1; currentTile = tiles -1;
} }
void enableMovement()
{
setFlag(ItemSendsGeometryChanges, true);
}
protected: protected:
void saveGeometry(); void saveGeometry();
@ -56,6 +64,8 @@ private:
QRectF size; QRectF size;
ParseTreeNode* node;
}; };
#endif // RBIMAGE_H #endif // RBIMAGE_H

View file

@ -758,6 +758,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
image = new RBImage(*(info.screen()->getImage(id)), viewport); image = new RBImage(*(info.screen()->getImage(id)), viewport);
image->setTile(tile); image->setTile(tile);
image->show(); image->show();
image->enableMovement();
} }
return true; return true;
@ -775,7 +776,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
tiles = 1; tiles = 1;
info.screen()->loadImage(id, new RBImage(filename, tiles, x, y, info.screen()->loadImage(id, new RBImage(filename, tiles, x, y,
viewport)); this, viewport));
return true; return true;
case '\0': case '\0':
@ -785,10 +786,11 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
element->params[1].data.text; element->params[1].data.text;
x = element->params[2].data.number; x = element->params[2].data.number;
y = element->params[3].data.number; y = element->params[3].data.number;
image = new RBImage(filename, 1, x, y, viewport); image = new RBImage(filename, 1, x, y, this, viewport);
info.screen()->loadImage(id, new RBImage(filename, 1, x, y, info.screen()->loadImage(id, image);
viewport)); image->show();
info.screen()->getImage(id)->show(); image->enableMovement();
return true; return true;
} }