18#include <QGraphicsItem>
19#include <QGraphicsScene>
56 : QObject(parent),
m_d(new
Imp)
61 m_d->ignoreall_int=
false;
62 m_d->ignoreall_move=
false;
79 assert(!
m_d->scene&&
"VP1GraphicsItemCollection::setInteractionMode can not be called while a scene is attached.");
81 std::cout<<
"VP1GraphicsItemCollection::setInteractionMode can not be called while a scene is attached."<<std::endl;
84 m_d->interactionmode = im;
90 return m_d->interactionmode;
96 assert(!
m_d->items2active.contains(item)&&
"Please do not add the same item twice");
97 assert(!item->flags()&&
"Please do not add any flags to your items!!");
101 m_d->scene->addItem(item);
102 item->setFlag(QGraphicsItem::ItemIsMovable,(movable&&(!
m_d->ignoreall_move)));
104 assert(!
m_d->items2active.contains(item));
105 m_d->items2active.insert(item,active);
109 m_d->movableitems<<item;
118 if (it==
m_d->items2active.end())
123 m_d->scene->removeItem(item);
125 m_d->items2active.erase(it);
126 assert(!
m_d->items2active.contains(item));
128 if (!
m_d->movableitems.empty()) {
129 QSet<QGraphicsItem*>::iterator it2 =
m_d->movableitems.find(item);
130 if (it2!=
m_d->movableitems.end()) {
131 assert(
m_d->movableitems.contains(item));
132 m_d->movableitems.erase(it2);
135 assert(!
m_d->movableitems.contains(item));
143 if (it==
m_d->items2active.end())
145 if (movable==
m_d->movableitems.contains(item))
148 assert(!
m_d->movableitems.contains(item));
149 m_d->movableitems<<item;
151 assert(
m_d->movableitems.contains(item));
152 m_d->movableitems.remove(item);
153 assert(!
m_d->movableitems.contains(item));
155 if (!
m_d->ignoreall_move)
156 item->setFlag(QGraphicsItem::ItemIsMovable,movable);
164 if (it==
m_d->items2active.end())
179 m_d->view->clearSelections();
184 for (it=
m_d->items2active.begin();it!=itE;++it)
185 m_d->scene->removeItem(it.key());
189 for (it=
m_d->items2active.begin();it!=itE;++it) {
193 m_d->items2active.clear();
194 m_d->movableitems.clear();
201 return m_d->items2active.contains(item);
208 QSet<QGraphicsItem*>::iterator it,itE=
movableitems.end();
210 (*it)->setFlag(QGraphicsItem::ItemIsMovable,enabled);
218 if (
m_d->ignoreall_int==b)
220 m_d->ignoreall_int=b;
226 if (
m_d->ignoreall_move==b)
228 m_d->ignoreall_move=b;
230 m_d->setEnabledMovableItems(!b);
244 m_d->scene=view->scene();
249 for (it=
m_d->items2active.begin();it!=itE;++it) {
250 m_d->scene->addItem(it.key());
253 m_d->setEnabledMovableItems(!
m_d->ignoreall_move);
261 m_d->view->removeItemCollection(
this);
274 for (it=
m_d->items2active.begin();it!=itE;++it) {
275 m_d->scene->removeItem(it.key());
286 assert(
m_d->lastview);
287 m_d->lastview->addItemCollection(
this);
302 return m_d->items2active.count();
308 return m_d->nactiveitems;
314 return m_d->movableitems.count();
320 return m_d->ignoresInteractions() ? 0 :
m_d->nactiveitems;
326 return m_d->ignoresInteractions() ? 0 :
m_d->movableitems.count();
334 QHash<QGraphicsItem*,bool>::const_iterator it =
m_d->items2active.find(item);
337 if (it==
m_d->items2active.constEnd())
VP1GraphicsItemCollection::INTERACTIONMODE interactionmode
void setEnabledMovableItems(const bool &enabled)
QHash< QGraphicsItem *, bool >::iterator ItemDataMapItr
QHash< QGraphicsItem *, bool > items2active
VP1GraphicsView * lastview
bool ignoresInteractions() const
QSet< QGraphicsItem * > movableitems
void setInteractionMode(const INTERACTIONMODE &)
INTERACTIONMODE interactionMode() const
void clear(const bool &deleteitems=true)
bool itemBelongsAndIsPresentlyActive(QGraphicsItem *) const
void real_detachFromView()
void itemPicked(QGraphicsItem *) const
void setTemporaryIgnoreInteractions(const bool &)
void selectionChangedPrivate(const QList< QGraphicsItem * > &) const
bool hasItem(QGraphicsItem *) const
void itemGotEvent(QGraphicsItem *, QEvent *) const
int nMovableItems() const
void setTemporaryIgnoreMovable(const bool &)
friend class VP1GraphicsView
void selectionChanged(QList< QGraphicsItem * >) const
bool removeItem(QGraphicsItem *)
int nPresentlyActiveItems() const
void itemPickedPrivate(QGraphicsItem *) const
bool setActive(QGraphicsItem *, const bool &active=true)
int nPresentlyMovableItems() const
void itemGotEventPrivate(QGraphicsItem *, QEvent *) const
VP1GraphicsItemCollection(QObject *parent=0)
void addItem(QGraphicsItem *, const bool &active=false, const bool &movable=false)
bool setMovable(QGraphicsItem *item, const bool &movable=true)
virtual ~VP1GraphicsItemCollection()
void attachToView(VP1GraphicsView *)