diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-20 01:41:08 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-20 01:41:08 -0400 |
| commit | 42f4df80fc0a4b1188377c8b776e2938de692b84 (patch) | |
| tree | fb6f500b3c92338e14b3397a25712707847bdc8e /sigmodr/widgets/TileItem.cpp | |
| parent | e5985d56f8ff4ed33a3c282661cc9bf084c76e96 (diff) | |
| download | sigen-42f4df80fc0a4b1188377c8b776e2938de692b84.tar.gz sigen-42f4df80fc0a4b1188377c8b776e2938de692b84.tar.xz sigen-42f4df80fc0a4b1188377c8b776e2938de692b84.zip | |
Fix up TileItem
Diffstat (limited to 'sigmodr/widgets/TileItem.cpp')
| -rw-r--r-- | sigmodr/widgets/TileItem.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/sigmodr/widgets/TileItem.cpp b/sigmodr/widgets/TileItem.cpp index f1911d2d..4c7b3b74 100644 --- a/sigmodr/widgets/TileItem.cpp +++ b/sigmodr/widgets/TileItem.cpp @@ -24,6 +24,9 @@ #include <sigmod/Sprite.h> #include <sigmod/Tile.h> +// KDE includes +#include <KColorScheme> + // Qt includes #include <QtGui/QPainter> #include <QtGui/QStyle> @@ -35,7 +38,7 @@ using namespace Sigmodr::Widgets; TileItem::TileItem(MapTile* tile, QGraphicsScene* parent) : MapItem(parent), m_tile(tile), - m_tileIndex(-1) + m_tileIndex(INT_MIN) { connect(m_tile, SIGNAL(changed()), this, SLOT(tileChanged())); connect(m_tile, SIGNAL(error(QString)), this, SLOT(tileChanged())); @@ -46,12 +49,26 @@ TileItem::TileItem(MapTile* tile, QGraphicsScene* parent) : QRectF TileItem::boundingRect() const { - return QRect(m_tile->position(), m_pixmap.size()); + return QRect(m_tile->position(), m_pixmap.isNull() ? QSize(32, 32) : m_pixmap.size()); } void TileItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { - painter->drawPixmap(0, 0, m_pixmap); + if (m_pixmap.isNull()) + { + QPainterPath path; + path.moveTo(8, 24); + path.lineTo(24, 8); + path.moveTo(8, 8); + path.lineTo(24, 24); + painter->setPen(QPen(Qt::red, 5)); + painter->setBrush(Qt::NoBrush); + painter->drawPath(path); + } + else + painter->drawPixmap(0, 0, m_pixmap); + painter->setBrush(KStatefulBrush(KColorScheme::Selection, KColorScheme::HoverColor).brush(QPalette::Active)); + painter->setOpacity(.25); MapItem::paint(painter, option, widget); } @@ -65,7 +82,9 @@ void TileItem::setSprite(const int spriteId) if (spriteId == m_tileIndex) return; const Sprite* sprite = m_tile->game()->spriteById(spriteId); - m_pixmap.loadFromData(sprite->sprite()); + if (!sprite || !m_pixmap.loadFromData(sprite->sprite())) + m_pixmap = QPixmap(); + prepareGeometryChange(); m_tileIndex = spriteId; } @@ -91,7 +110,7 @@ void TileItem::resetLabel() if (tile) { m_label->setText(tile->name()); - QSizeF size = m_label->boundingRect().size() / 2 - m_pixmap.size() / 2; + QSizeF size = m_label->boundingRect().size() / 2 - (m_pixmap.isNull() ? QSize(32, 32) : m_pixmap.size()) / 2; m_label->setPos(-size.width(), -size.height()); } } |
