void LiveSingleSelectionManipulator::select(SelectionType selectionType, bool selectOnlyContentItems) { QDeclarativeViewInspectorPrivate *inspectorPrivate = QDeclarativeViewInspectorPrivate::get(m_editorView); QList<QGraphicsItem*> itemList = inspectorPrivate->selectableItems(m_beginPoint); select(selectionType, itemList, selectOnlyContentItems); }
void LiveRubberBandSelectionManipulator::begin(const QPointF &beginPoint) { m_beginPoint = beginPoint; m_selectionRectangleElement.setRect(m_beginPoint, m_beginPoint); m_selectionRectangleElement.show(); m_isActive = true; QDeclarativeViewInspectorPrivate *inspectorPrivate = QDeclarativeViewInspectorPrivate::get(m_editorView); m_beginFormEditorItem = topFormEditorItem(inspectorPrivate->selectableItems(beginPoint)); m_oldSelectionList = m_editorView->selectedItems(); }
bool LiveSelectionTool::alreadySelected(const QList<QGraphicsItem*> &itemList) const { QDeclarativeViewInspectorPrivate *inspectorPrivate = QDeclarativeViewInspectorPrivate::get(inspector()); const QList<QGraphicsItem*> selectedItems = inspectorPrivate->selectedItems(); if (selectedItems.isEmpty()) return false; foreach (QGraphicsItem *item, itemList) if (selectedItems.contains(item)) return true; return false; }
void LiveRubberBandSelectionManipulator::select(SelectionType selectionType) { QDeclarativeViewInspectorPrivate *inspectorPrivate = QDeclarativeViewInspectorPrivate::get(m_editorView); QList<QGraphicsItem*> itemList = inspectorPrivate->selectableItems(m_selectionRectangleElement.rect(), Qt::IntersectsItemShape); QList<QGraphicsItem*> newSelectionList; foreach (QGraphicsItem* item, itemList) { if (item && item->parentItem() && !newSelectionList.contains(item) //&& m_beginFormEditorItem->childItems().contains(item) // TODO activate this test ) { newSelectionList.append(item); } } if (newSelectionList.isEmpty() && m_beginFormEditorItem) newSelectionList.append(m_beginFormEditorItem); QList<QGraphicsItem*> resultList; switch(selectionType) { case AddToSelection: { resultList.append(m_oldSelectionList); resultList.append(newSelectionList); } break; case ReplaceSelection: { resultList.append(newSelectionList); } break; case RemoveFromSelection: { QSet<QGraphicsItem*> oldSelectionSet(m_oldSelectionList.toSet()); QSet<QGraphicsItem*> newSelectionSet(newSelectionList.toSet()); resultList.append(oldSelectionSet.subtract(newSelectionSet).toList()); } } m_editorView->setSelectedItems(resultList); }
void LiveSelectionTool::mousePressEvent(QMouseEvent *event) { QDeclarativeViewInspectorPrivate *inspectorPrivate = QDeclarativeViewInspectorPrivate::get(inspector()); QList<QGraphicsItem*> itemList = inspectorPrivate->selectableItems(event->pos()); LiveSingleSelectionManipulator::SelectionType selectionType = getSelectionType(event->modifiers()); if (event->buttons() & Qt::LeftButton) { m_mousePressTimer.start(); if (m_rubberbandSelectionMode) { m_rubberbandSelectionManipulator.begin(event->pos()); } else { m_singleSelectionManipulator.begin(event->pos()); m_singleSelectionManipulator.select(selectionType, m_selectOnlyContentItems); } } else if (event->buttons() & Qt::RightButton) { createContextMenu(itemList, event->globalPos()); } }