23#include <QAbstractTransition>
31Qt::ItemFlags toItemFlags(Element::Flags flags)
35 result |= Qt::ItemIsDragEnabled;
37 result |= Qt::ItemIsSelectable;
39 result |= Qt::ItemIsEditable;
45struct StateModel::Private
50StateModel::Private::Private()
66 return qobject_cast<State *>(
rootObjects().value(0));
84 return element->toDisplayString();
86 return QVariant::fromValue<Element *>(element);
88 return element->internalId();
90 return element->label();
99 if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
106 return QAbstractItemModel::headerData(section, orientation, role);
114 return QAbstractItemModel::flags(
index);
117 return toItemFlags(element->
flags()) | Qt::ItemIsEnabled;
120struct TransitionModel::Private
125 : QSortFilterProxyModel(parent)
137 QSortFilterProxyModel::setSourceModel(
nullptr);
141 auto *model = qobject_cast<StateModel *>(sourceModel);
143 qCWarning(KDSME_CORE) <<
"called with invalid model instance:" << model;
147 QSortFilterProxyModel::setSourceModel(sourceModel);
152 Q_UNUSED(source_row);
155 const auto *transition = qobject_cast<const Transition *>(
object);
157 return transition !=
nullptr;
160struct TransitionListModel::Private
165 QList<Transition *> m_transitions;
168TransitionListModel::Private::Private()
174 : QAbstractListModel(parent)
185 if (parent.isValid())
188 return static_cast<int>(d->m_transitions.size());
199 if (index.row() < 0 || index.row() >=
rowCount()) {
203 Transition *transition = d->m_transitions[index.row()];
204 Q_ASSERT(transition);
205 if (role == Qt::DisplayRole) {
206 const int column = index.column();
218 return QVariant::fromValue<Transition *>(transition);
225 if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
228 return tr(
"Transition");
230 return tr(
"Source State");
232 return tr(
"Target State");
237 return QAbstractListModel::headerData(section, orientation, role);
242 QHash<int, QByteArray>
roleNames = QAbstractItemModel::roleNames();
263#include "moc_elementmodel.cpp"
virtual QString toDisplayString() const
void setRootObject(QObject *rootObject)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QList< QObject * > rootObjects() const
QModelIndex index(int row, int column, const QModelIndex &parent={}) const override
@ ObjectRole
return QObject*
Qt::ItemFlags flags(const QModelIndex &index) const override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
@ ElementRole
return Element*
@ InternalIdRole
return quint64
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
StateModel(QObject *parent=nullptr)
void setState(State *state)
int columnCount(const QModelIndex &parent) const override
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
TransitionListModel(QObject *parent=nullptr)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
void setState(State *state)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QHash< int, QByteArray > roleNames() const override
void setSourceModel(QAbstractItemModel *sourceModel) override
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
TransitionModel(QObject *parent=nullptr)
KDSME::State * sourceState
KDSME::State * targetState