diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-29 15:05:13 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-29 15:05:13 -0400 |
| commit | bf9bf987affee51525fbc7d847dc0289535cf133 (patch) | |
| tree | 65f686da9194f6e60257cf8c53f009a730f9a1f9 | |
| parent | d296d2f6717a01eb2e7d3c55d82b68c503830d96 (diff) | |
| download | sigen-bf9bf987affee51525fbc7d847dc0289535cf133.tar.gz sigen-bf9bf987affee51525fbc7d847dc0289535cf133.tar.xz sigen-bf9bf987affee51525fbc7d847dc0289535cf133.zip | |
Pass the map to MapItem as wellso that it can check bounds when moving
| -rw-r--r-- | sigmodr/widgets/mapeditor/EffectItem.cpp | 4 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/EffectItem.h | 2 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/MapItem.cpp | 20 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/MapItem.h | 7 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/MapScene.cpp | 10 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/TileItem.cpp | 4 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/TileItem.h | 2 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/TrainerItem.cpp | 4 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/TrainerItem.h | 2 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/WarpItem.cpp | 4 | ||||
| -rw-r--r-- | sigmodr/widgets/mapeditor/WarpItem.h | 2 |
11 files changed, 39 insertions, 22 deletions
diff --git a/sigmodr/widgets/mapeditor/EffectItem.cpp b/sigmodr/widgets/mapeditor/EffectItem.cpp index 08942907..354b095c 100644 --- a/sigmodr/widgets/mapeditor/EffectItem.cpp +++ b/sigmodr/widgets/mapeditor/EffectItem.cpp @@ -30,8 +30,8 @@ using namespace Sigmod; using namespace Sigmodr::Widgets; -EffectItem::EffectItem(MapEffect* effect, QGraphicsScene* parent) : - MapItem(parent), +EffectItem::EffectItem(Sigmod::Map* map, MapEffect* effect, QGraphicsScene* parent) : + MapItem(map, parent), m_effect(effect) { connect(m_effect, SIGNAL(changed()), this, SLOT(effectChanged())); diff --git a/sigmodr/widgets/mapeditor/EffectItem.h b/sigmodr/widgets/mapeditor/EffectItem.h index 578f9c6a..84c9f838 100644 --- a/sigmodr/widgets/mapeditor/EffectItem.h +++ b/sigmodr/widgets/mapeditor/EffectItem.h @@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT EffectItem : public MapItem Q_OBJECT public: - EffectItem(Sigmod::MapEffect* effect, QGraphicsScene* parent); + EffectItem(Sigmod::Map* map, Sigmod::MapEffect* effect, QGraphicsScene* parent); QRectF boundingRect() const; diff --git a/sigmodr/widgets/mapeditor/MapItem.cpp b/sigmodr/widgets/mapeditor/MapItem.cpp index 388cef05..6ecf3b8f 100644 --- a/sigmodr/widgets/mapeditor/MapItem.cpp +++ b/sigmodr/widgets/mapeditor/MapItem.cpp @@ -18,6 +18,9 @@ // Header include #include "MapItem.h" +// Sigmod includes +#include <sigmod/Map.h> + // KDE includes #include <KColorScheme> @@ -28,10 +31,12 @@ #include <QtGui/QPainter> #include <QtGui/QStyleOptionGraphicsItem> +using namespace Sigmod; using namespace Sigmodr::Widgets; -MapItem::MapItem(QGraphicsScene* parent) : +MapItem::MapItem(Map* map, QGraphicsScene* parent) : QObject(parent), + m_map(map), m_tag(new QGraphicsSimpleTextItem(this)), m_label(new QGraphicsSimpleTextItem(this)) { @@ -72,7 +77,14 @@ void MapItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* event) void MapItem::mouseMoveEvent(QGraphicsSceneMouseEvent* event) { - QGraphicsItem::mouseMoveEvent(event); - moveTo(scenePos().toPoint()); - update(); + QRect mapRect = QRect(0, 0, m_map->width(), m_map->height()); + QRect rect = QRectF(event->scenePos() - event->buttonDownPos(Qt::LeftButton), boundingRect().size()).toRect(); + if (!mapRect.contains(rect)) + event->ignore(); + else + { + QGraphicsItem::mouseMoveEvent(event); + moveTo(scenePos().toPoint()); + update(); + } } diff --git a/sigmodr/widgets/mapeditor/MapItem.h b/sigmodr/widgets/mapeditor/MapItem.h index b0d29c76..53a6ea2a 100644 --- a/sigmodr/widgets/mapeditor/MapItem.h +++ b/sigmodr/widgets/mapeditor/MapItem.h @@ -27,6 +27,10 @@ // Forward declarations class QGraphicsScene; +namespace Sigmod +{ +class Map; +} namespace Sigmodr { @@ -37,7 +41,7 @@ class SIGMODRWIDGETS_NO_EXPORT MapItem : public QObject, public QGraphicsItem Q_OBJECT public: - MapItem(QGraphicsScene* parent); + MapItem(Sigmod::Map* map, QGraphicsScene* parent); virtual QRectF boundingRect() const = 0; @@ -53,6 +57,7 @@ class SIGMODRWIDGETS_NO_EXPORT MapItem : public QObject, public QGraphicsItem virtual void resetLabel() = 0; + Sigmod::Map* m_map; QGraphicsSimpleTextItem* m_tag; QGraphicsSimpleTextItem* m_label; }; diff --git a/sigmodr/widgets/mapeditor/MapScene.cpp b/sigmodr/widgets/mapeditor/MapScene.cpp index 20a04328..6e5872d9 100644 --- a/sigmodr/widgets/mapeditor/MapScene.cpp +++ b/sigmodr/widgets/mapeditor/MapScene.cpp @@ -56,28 +56,28 @@ MapScene::MapScene(Map* map, QObject* parent) : // for (int i = 0; i < m_map->effectCount(); ++i) // { // MapEffect* effect = m_map->effect(i); -// EffectItem* item = new EffectItem(effect, this); +// EffectItem* item = new EffectItem(m_map, effect, this); // m_effects[effect] = item; // addItem(item); // } for (int i = 0; i < m_map->tileCount(); ++i) { MapTile* tile = m_map->tile(i); - TileItem* item = new TileItem(tile, this); + TileItem* item = new TileItem(m_map, tile, this); m_tiles[tile] = item; addItem(item); } for (int i = 0; i < m_map->trainerCount(); ++i) { MapTrainer* trainer = m_map->trainer(i); - TrainerItem* item = new TrainerItem(trainer, this); + TrainerItem* item = new TrainerItem(m_map, trainer, this); m_trainers[trainer] = item; addItem(item); } // for (int i = 0; i < m_map->warpCount(); ++i) // { // MapWarp* warp = m_map->warp(i); -// WarpItem* item = new WarpItem(warp, this); +// WarpItem* item = new WarpItem(m_map, warp, this); // m_warps[warp] = item; // addItem(item); // } @@ -126,7 +126,7 @@ void MapScene::addTile() QList<QGraphicsView*> viewList = views(); if (viewList.size()) tile->setPosition(viewList[0]->mapToScene(QPoint(0, 0)).toPoint()); - TileItem* item = new TileItem(tile, this); + TileItem* item = new TileItem(m_map, tile, this); m_tiles[tile] = item; addItem(item); emit(changed()); diff --git a/sigmodr/widgets/mapeditor/TileItem.cpp b/sigmodr/widgets/mapeditor/TileItem.cpp index 6f7e2484..20f8b8d7 100644 --- a/sigmodr/widgets/mapeditor/TileItem.cpp +++ b/sigmodr/widgets/mapeditor/TileItem.cpp @@ -36,8 +36,8 @@ using namespace Sigmod; using namespace Sigmodr::Widgets; -TileItem::TileItem(MapTile* tile, QGraphicsScene* parent) : - MapItem(parent), +TileItem::TileItem(Sigmod::Map* map, MapTile* tile, QGraphicsScene* parent) : + MapItem(map, parent), m_tile(tile), m_tileIndex(INT_MIN) { diff --git a/sigmodr/widgets/mapeditor/TileItem.h b/sigmodr/widgets/mapeditor/TileItem.h index c11c2189..93afa51d 100644 --- a/sigmodr/widgets/mapeditor/TileItem.h +++ b/sigmodr/widgets/mapeditor/TileItem.h @@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT TileItem : public MapItem Q_OBJECT public: - TileItem(Sigmod::MapTile* tile, QGraphicsScene* parent); + TileItem(Sigmod::Map* map, Sigmod::MapTile* tile, QGraphicsScene* parent); QRectF boundingRect() const; diff --git a/sigmodr/widgets/mapeditor/TrainerItem.cpp b/sigmodr/widgets/mapeditor/TrainerItem.cpp index 2ea7cae7..2a97b3d7 100644 --- a/sigmodr/widgets/mapeditor/TrainerItem.cpp +++ b/sigmodr/widgets/mapeditor/TrainerItem.cpp @@ -33,8 +33,8 @@ using namespace Sigmod; using namespace Sigmodr::Widgets; -TrainerItem::TrainerItem(MapTrainer* trainer, QGraphicsScene* parent) : - MapItem(parent), +TrainerItem::TrainerItem(Sigmod::Map* map, MapTrainer* trainer, QGraphicsScene* parent) : + MapItem(map, parent), m_trainer(trainer) { connect(m_trainer, SIGNAL(changed()), this, SLOT(trainerChanged())); diff --git a/sigmodr/widgets/mapeditor/TrainerItem.h b/sigmodr/widgets/mapeditor/TrainerItem.h index f8c4cd6e..7baa7d46 100644 --- a/sigmodr/widgets/mapeditor/TrainerItem.h +++ b/sigmodr/widgets/mapeditor/TrainerItem.h @@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT TrainerItem : public MapItem Q_OBJECT public: - TrainerItem(Sigmod::MapTrainer* trainer, QGraphicsScene* parent); + TrainerItem(Sigmod::Map* map, Sigmod::MapTrainer* trainer, QGraphicsScene* parent); QRectF boundingRect() const; diff --git a/sigmodr/widgets/mapeditor/WarpItem.cpp b/sigmodr/widgets/mapeditor/WarpItem.cpp index 39dadcb4..fd8474cb 100644 --- a/sigmodr/widgets/mapeditor/WarpItem.cpp +++ b/sigmodr/widgets/mapeditor/WarpItem.cpp @@ -30,8 +30,8 @@ using namespace Sigmod; using namespace Sigmodr::Widgets; -WarpItem::WarpItem(MapWarp* warp, QGraphicsScene* parent) : - MapItem(parent), +WarpItem::WarpItem(Sigmod::Map* map, MapWarp* warp, QGraphicsScene* parent) : + MapItem(map, parent), m_warp(warp) { connect(m_warp, SIGNAL(changed()), this, SLOT(warpChanged())); diff --git a/sigmodr/widgets/mapeditor/WarpItem.h b/sigmodr/widgets/mapeditor/WarpItem.h index d574202c..5fc74666 100644 --- a/sigmodr/widgets/mapeditor/WarpItem.h +++ b/sigmodr/widgets/mapeditor/WarpItem.h @@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT WarpItem : public MapItem Q_OBJECT public: - WarpItem(Sigmod::MapWarp* warp, QGraphicsScene* parent); + WarpItem(Sigmod::Map* map, Sigmod::MapWarp* warp, QGraphicsScene* parent); QRectF boundingRect() const; |
