28 : QAbstractItemModel(parent), m_root_item(fitParContainer)
42 "FitParameterProxyModel::FitParameterProxyModel() -> Error. "
43 "Wrong item reported.");
60 return Qt::NoItemFlags;
62 Qt::ItemFlags returnVal = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
64 if (item->isEditable() &&
index.column() != 0)
65 returnVal |= Qt::ItemIsEditable;
66 if (item->parent()->modelType() ==
"FitParameterLink" &&
index.column() == 0) {
67 returnVal |= Qt::ItemIsDragEnabled;
69 const bool allow_one_fit_parameter_to_have_more_than_one_link =
true;
70 if (allow_one_fit_parameter_to_have_more_than_one_link) {
73 if (item->modelType() ==
"FitParameter"
74 || item->modelType() ==
"FitParameterContainer") {
75 returnVal |= Qt::ItemIsDropEnabled;
80 if (item->modelType() ==
"FitParameterContainer") {
81 returnVal |= Qt::ItemIsDropEnabled;
97 if (parent_item->
modelType() ==
"FitParameterContainer") {
103 return createIndex(row, column, itemToPack);
105 }
else if (parent_item->
modelType() ==
"FitParameter" && column == 0) {
107 if (row < links.size()) {
113 return QModelIndex();
119 return QModelIndex();
121 if (!child.isValid())
122 return QModelIndex();
127 return QModelIndex();
128 if (parent_item->modelType() ==
"FitParameterLink") {
131 return QModelIndex();
132 return createIndex(
ParentRow(*fitPar), 0, fitPar);
136 return QModelIndex();
151 if (parent_item->
modelType() ==
"FitParameterContainer") {
153 }
else if (parent_item->
modelType() ==
"FitParameter") {
172 if (parentItem->modelType() ==
"FitParameter") {
189 if (role == Qt::DisplayRole || role == Qt::EditRole) {
190 if (item->modelType() ==
"FitParameter") {
191 return item->displayName();
193 return item->value();
196 return QVariant(QColor(Qt::gray));
198 return item->value();
209 if (!
index.isValid())
212 if (role == Qt::EditRole) {
213 item->setValue(value);
230 QMimeData*
mimeData =
new QMimeData();
231 QModelIndex
index = indexes.first();
232 if (
index.isValid()) {
234 QString path = item->value().toString();
242 int column,
const QModelIndex& parent)
const
247 bool drop_is_possible(
false);
249 drop_is_possible =
true;
250 if (!
parent.isValid() && row == -1 && column == -1)
251 drop_is_possible =
true;
252 return drop_is_possible;
256 int column,
const QModelIndex& parent)
264 ASSERT(fitParItem->modelType() ==
"FitParameter");
282 if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
291 const QModelIndex& bottomRight,
292 const QVector<int>& roles)
294 Q_UNUSED(bottomRight);
302 if (itemIndex.isValid())
303 emit dataChanged(itemIndex, itemIndex, roles);
327 connect(
sourceModel, &QAbstractItemModel::dataChanged,
this,
329 connect(
sourceModel, &QAbstractItemModel::rowsRemoved,
this,
331 connect(
sourceModel, &QAbstractItemModel::modelAboutToBeReset,
this,
334 disconnect(
sourceModel, &QAbstractItemModel::dataChanged,
this,
336 disconnect(
sourceModel, &QAbstractItemModel::rowsRemoved,
this,
338 disconnect(
sourceModel, &QAbstractItemModel::modelAboutToBeReset,
this,
344 const QString& tooltip)
353 return QModelIndex();
356 if (parent_item->modelType() ==
"FitParameterContainer") {
357 if (item->
modelType() ==
"FitParameter") {
358 return createIndex(
ParentRow(*item), 0, item);
360 }
else if (parent_item->modelType() ==
"FitParameter") {
362 QString tag = parent_item->tagFromItem(item);
365 return createIndex(
ParentRow(*parent_item), col, item);
367 }
else if (parent_item->modelType() ==
"FitParameterLink") {
369 return createIndex(links.indexOf(parent_item), 0, item);
372 return QModelIndex();
380 if (
index.isValid()) {
#define ASSERT(condition)
Defines class FitParameterHelper.
Defines FitParameterItems family of classes.
Defines class FitParameterProxyModel.
Defines class GUIHelpers functions.
Defines ModelPath namespace.
Defines namespace SessionItemUtils.
static void createFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem)
Creates fit parameter from given ParameterItem, sets starting value to the value of ParameterItem,...
static ParameterItem * getParameterItem(FitParameterContainerItem *container, const QString &link)
Returns ParameterItem corresponding to given link.
static void addToFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem, const QString &fitParName)
Adds given parameterItem to the existing fit parameter with display name fitParName.
static const QString P_MAX
static const QString T_LINK
static const QString P_TYPE
static const QString P_MIN
static const QString P_START_VALUE
static const QString P_LINK
QModelIndex index(int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE
QMimeData * mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE
void connectModel(QAbstractItemModel *sourceModel, bool isConnect=true)
int columnCount(const QModelIndex &parent) const Q_DECL_OVERRIDE
bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE
QMap< int, QString > m_columnNames
QMap< int, QString > m_columnToolTips
bool setData(const QModelIndex &index, const QVariant &value, int role) Q_DECL_OVERRIDE
SessionItem * itemForIndex(const QModelIndex &index) const
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const Q_DECL_OVERRIDE
QStringList mimeTypes() const Q_DECL_OVERRIDE
QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE
SessionModel * sourceModel() const
QModelIndex indexOfItem(SessionItem *item) const
bool isValidSourceItem(SessionItem *item) const
Returns true if given item still exists in source model.
int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE
void onSourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles)
FitParameterProxyModel(FitParameterContainerItem *fitParContainer, QObject *parent=0)
QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE
void onSourceRowsRemoved(const QModelIndex &parent, int first, int last)
Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE
void onSourceAboutToBeReset()
~FitParameterProxyModel()
void addColumn(EColumn id, const QString &name, const QString &tooltip)
FitParameterContainerItem * m_root_item
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE
void unsubscribe(const void *caller)
Cancells all subscribtion of given caller.
void setOnItemDestroy(std::function< void(SessionItem *)> f, const void *caller=0)
The ParameterItem class represent a tuning value in a parameter tuning tree.
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.
int numberOfChildren() const
Returns total number of children.
QString displayName() const
Get display name of item, append index if ambigue.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
SessionItem * parent() const
Returns parent of this item.
SessionModel * model() const
Returns model of this item.
SessionItem * childAt(int row) const
Returns the child at the given row.
QString modelType() const
Get model type.
QModelIndex index() const
Returns model index of this item.
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
SessionItem * itemForIndex(const QModelIndex &index) const
bool isValidItem(SessionModel *model, SessionItem *item, const QModelIndex &parent)
Iterates through all the model and returns true if item is found. This is to.
QString const & name(EShape k)
QVariant ToolTipRole(const SessionItem &item, int ncol=0)
Returns tooltip for given item.
QVariant ForegroundRole(const SessionItem &item)
Returns text color for given item.
int ParentRow(const SessionItem &item)
Returns the index of the given item within its parent. Returns -1 when no parent is set.
const QString LinkMimeType