Skip to content
Snippets Groups Projects
Commit 7234711c authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

FitParameterModel: item->value() is replaced

parent 0d7bbabb
No related branches found
No related tags found
1 merge request!1120GUI: FitParameterModel and fit items are refactored
......@@ -197,9 +197,12 @@ QVariant FitParameterModel::data(const QModelIndex& index, int role) const
return fitPar->displayName();
if (FitParameterLinkItem* linkItem = toFitParameterLinkItem(item->parent()))
return linkItem->title();
return item->property(propertyName);
qInfo() << "\n\n" << "next round";
qInfo() << item << index.row() << index.column() << item->objectName();
return valueOfItem(item);
// return item->value();
return QVariant("FitParameterModel::data : item->value() 1");
// return QVariant("item->value() 1");
}
bool isEditable = true;
......@@ -208,9 +211,10 @@ QVariant FitParameterModel::data(const QModelIndex& index, int role) const
if (role == Qt::ForegroundRole && !isEditable)
return QVariant(QColor(Qt::gray));
if (role == Qt::ToolTipRole && bool(toFitParameterLinkItem(item)))
return item->property(propertyName);
return valueOfItem(item);
// return item->property(propertyName);
// return item->value();
return QVariant("FitParameterModel::data : item->value() 2");
// return QVariant("item->value() 2");
}
return QVariant();
}
......@@ -233,9 +237,12 @@ bool FitParameterModel::setData(const QModelIndex& index, const QVariant& value,
fitParItem->setMinimum(value.toDouble());
else if (index.column() == COL_MAX)
fitParItem->setMaximum(value.toDouble());
} else
item->setProperty(propertyName, value);
} else {
// item->setProperty(propertyName, value);
setValueOfItem(item, value);
// item->setValue(value);
qInfo() << "setData : value" << value;
}
emit dataChanged(index, index);
return true;
}
......@@ -387,11 +394,45 @@ QObject *FitParameterModel::itemForIndex(const QModelIndex& index) const
return m_fitParameterContainer; // why container, not nullptr?
}
QVariant FitParameterModel::valueOfItem(QObject *item) const
{
qInfo() << "get" << item->objectName();
qInfo() << dynamic_cast<FitDoubleItem*>(item);
if(FitTypeItem* type = toFitTypeItem(item))
return type->type().variant();
if(FitDoubleItem* doubleVal = toFitDoubleItem(item)) {
qInfo() << "-- converted" << doubleVal->value();
return doubleVal->value();
}
return QVariant();
}
void FitParameterModel::setValueOfItem(QObject *item, const QVariant &value)
{
qInfo() << "set" << item->objectName();
if(FitTypeItem* type = toFitTypeItem(item))
type->setType(value.value<ComboProperty>());
if(FitDoubleItem* doubleVal = toFitDoubleItem(item))
doubleVal->setValue(value.toDouble());
}
FitEditableDoubleItem *FitParameterModel::toFitEditableDoubleItem(QObject *item) const
{
return dynamic_cast<FitEditableDoubleItem*>(item);
}
FitTypeItem *FitParameterModel::toFitTypeItem(QObject *item) const
{
return dynamic_cast<FitTypeItem*>(item);
}
FitDoubleItem *FitParameterModel::toFitDoubleItem(QObject *item) const
{
return dynamic_cast<FitDoubleItem*>(item);
}
FitParameterLinkItem* FitParameterModel::toFitParameterLinkItem(QObject* item) const
{
return dynamic_cast<FitParameterLinkItem*>(item);
......
......@@ -18,10 +18,12 @@
#include <QAbstractItemModel>
#include <QStringList>
class FitDoubleItem;
class FitEditableDoubleItem;
class FitParameterContainerItem;
class FitParameterItem;
class FitParameterLinkItem;
class FitTypeItem;
class JobItem;
//! Model to show items from FitParameterContainer in 5 column tree view.
......@@ -56,8 +58,13 @@ public:
QModelIndex indexOfItem(QObject* item) const;
QObject* itemForIndex(const QModelIndex& index) const;
QVariant valueOfItem(QObject* item) const;
void setValueOfItem(QObject *item, const QVariant& value);
// casting
FitEditableDoubleItem *toFitEditableDoubleItem(QObject *item) const;
FitTypeItem *toFitTypeItem(QObject *item) const;
FitDoubleItem *toFitDoubleItem(QObject *item) const;
FitParameterLinkItem *toFitParameterLinkItem(QObject *item) const;
FitParameterLinkItem *toFitParameterLinkItem(const QModelIndex &index) const;
......
......@@ -104,7 +104,9 @@ QWidget* FitParameterDelegate::createEditorFromIndex(const QModelIndex& index,
QWidget* parent) const
{
if (index.internalPointer()) {
qInfo() << "before";
auto* item = static_cast<SessionItem*>(index.internalPointer());
qInfo() << "after";
return GUI::View::PropertyEditorFactory::CreateEditor(*item, parent);
}
return nullptr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment