22#include <QItemSelectionModel>
26class KDSME::AbstractSceneContextMenuEventPrivate
29 Element *m_elementUnderCursor =
nullptr;
33 : QContextMenuEvent(reason, pos, globalPos, modifiers)
34 , d(new AbstractSceneContextMenuEventPrivate)
45 return d->m_elementUnderCursor;
51 , m_instantiator(nullptr)
60 switch (d->m_contextMenuPolicy) {
61 case Qt::CustomContextMenu:
71 if (
event->isAccepted())
74 return QQuickItem::event(
event);
79 , d(new AbstractScenePrivate(this))
92 if (d->m_model ==
model)
96 disconnect(d->m_model, &QAbstractItemModel::rowsAboutToBeRemoved,
98 disconnect(d->m_model, &QAbstractItemModel::rowsInserted,
100 disconnect(d->m_model, &QAbstractItemModel::rowsMoved,
102 disconnect(d->m_model, &QAbstractItemModel::columnsMoved,
104 disconnect(d->m_model, &QAbstractItemModel::layoutChanged,
111 connect(d->m_model, &QAbstractItemModel::rowsAboutToBeRemoved,
113 connect(d->m_model, &QAbstractItemModel::rowsInserted,
115 connect(d->m_model, &QAbstractItemModel::rowsMoved,
117 connect(d->m_model, &QAbstractItemModel::columnsMoved,
119 connect(d->m_model, &QAbstractItemModel::layoutChanged,
123 auto *itemSelectionModel =
new QItemSelectionModel(d->m_model,
this);
124 connect(d->m_model, &QAbstractItemModel::destroyed, itemSelectionModel, &QItemSelectionModel::deleteLater);
132 return d->m_selectionModel;
139 qCWarning(KDSME_VIEW) <<
"QAbstractItemView::setSelectionModel() failed: "
140 "Trying to set a selection model, which works on "
141 "a different model than the view.";
145 if (d->m_selectionModel) {
146 disconnect(d->m_selectionModel, &QItemSelectionModel::selectionChanged,
148 disconnect(d->m_selectionModel, &QItemSelectionModel::currentChanged,
154 if (d->m_selectionModel) {
155 connect(d->m_selectionModel, &QItemSelectionModel::selectionChanged,
157 connect(d->m_selectionModel, &QItemSelectionModel::currentChanged,
164 return d->m_instantiator;
173 qCDebug(KDSME_VIEW) <<
"Instantiator object must implement InstantiatorInterface";
178 d->m_instantiator->setParentItem(
this);
184 return d->m_editTriggers;
189 d->m_editTriggers = triggers;
194 return d->m_contextMenuPolicy;
220 if (d->m_state == state)
229 return d->m_selectionModel ? d->m_selectionModel->currentIndex() : QModelIndex();
234 if (!d->m_selectionModel) {
238 d->m_selectionModel->setCurrentIndex(index, QItemSelectionModel::SelectCurrent);
244 Q_UNUSED(deselected);
virtual QObject * itemForIndex(const QModelIndex &index) const =0
QItemSelectionModel * selectionModel() const
QObject * itemForIndex(const QModelIndex &index) const
virtual void setSelectionModel(QItemSelectionModel *selectionModel)
void setInstantiator(QQuickItem *instantiator)
QQuickItem * instantiator
void instantiatorChanged(QObject *instantiator)
void setViewState(KDSME::AbstractScene::ViewState state)
QAbstractItemModel * model
void setCurrentIndex(const QModelIndex &index)
Qt::ContextMenuPolicy contextMenuPolicy() const
void contextMenuPolicyChanged(Qt::ContextMenuPolicy contextMenuPolicy)
void setEditTriggers(EditTriggers triggers)
void customContextMenuEvent(KDSME::AbstractSceneContextMenuEvent *event)
AbstractScene(QQuickItem *parent=nullptr)
void setContextMenuPolicy(Qt::ContextMenuPolicy contextMenuPolicy)
virtual void setModel(QAbstractItemModel *model)
virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
void modelChanged(QAbstractItemModel *model)
void viewStateChanged(KDSME::AbstractScene::ViewState state)
bool event(QEvent *event) override
virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
virtual void layoutChanged()
virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
QModelIndex currentIndex() const
virtual void rowsInserted(const QModelIndex &parent, int start, int end)
EditTriggers editTriggers() const