diff --git a/src/app/container/vcontainer.cpp b/src/app/container/vcontainer.cpp index 535130565..84e867722 100644 --- a/src/app/container/vcontainer.cpp +++ b/src/app/container/vcontainer.cpp @@ -480,11 +480,11 @@ const QMap VContainer::DataLineAngles() const //--------------------------------------------------------------------------------------------------------------------- /** - * @brief IncrementTableContains check if increment table contains name + * @brief VariableExist check if exist variable this same name. * @param name name of row * @return true if contains */ -bool VContainer::IncrementExist(const QString &name) +bool VContainer::VariableExist(const QString &name) { return variables.contains(name); } diff --git a/src/app/container/vcontainer.h b/src/app/container/vcontainer.h index 4384396a9..a8c94cfc3 100644 --- a/src/app/container/vcontainer.h +++ b/src/app/container/vcontainer.h @@ -162,7 +162,7 @@ public: qreal height() const; QString HeightName()const; - bool IncrementExist(const QString& name); + bool VariableExist(const QString& name); void RemoveIncrement(const QString& name); diff --git a/src/app/dialogs/app/dialogincrements.cpp b/src/app/dialogs/app/dialogincrements.cpp index acfa9826c..9e8e7aa97 100644 --- a/src/app/dialogs/app/dialogincrements.cpp +++ b/src/app/dialogs/app/dialogincrements.cpp @@ -72,7 +72,7 @@ DialogIncrements::DialogIncrements(VContainer *data, VPattern *doc, QWidget *par //Same regex in pattern.xsd shema file. Don't forget synchronize. TextDelegate *textDelegate = new TextDelegate("^([^0-9-*/^+=\\s\\(\\)%:;!.,]){1,1}([^-*/^+=\\s\\(\\)%:;!.,]){0,}$", - ui->tableWidgetIncrement); + data, ui->tableWidgetIncrement); ui->tableWidgetIncrement->setItemDelegateForColumn(0, textDelegate);// name DoubleSpinBoxDelegate *doubleDelegate = new DoubleSpinBoxDelegate(ui->tableWidgetIncrement); ui->tableWidgetIncrement->setItemDelegateForColumn(2, doubleDelegate);// base value @@ -536,7 +536,7 @@ void DialogIncrements::clickedToolButtonAdd() { name = QString(tr("Name_%1")).arg(num); num++; - } while (data->IncrementExist(name)); + } while (data->VariableExist(name)); const quint32 id = data->getNextId(); const QString description(tr("Description")); diff --git a/src/app/widgets/textdelegate.cpp b/src/app/widgets/textdelegate.cpp index 47fc974f7..c037fbbfd 100644 --- a/src/app/widgets/textdelegate.cpp +++ b/src/app/widgets/textdelegate.cpp @@ -29,15 +29,17 @@ #include "textdelegate.h" #include #include "../options.h" +#include "../container/vcontainer.h" //--------------------------------------------------------------------------------------------------------------------- /** * @brief TextDelegate constructor. * @param parent parent widget. */ -TextDelegate::TextDelegate(const QString ®ex, QObject *parent): QItemDelegate(parent), lastText(QString("Name_")), - regex(regex) +TextDelegate::TextDelegate(const QString ®ex, VContainer *data, QObject *parent) + : QItemDelegate(parent), lastText(QString("Name_")), regex(regex), data(data) { + SCASSERT(data); //Little hack. Help save lineedit text in const method. connect(this, &TextDelegate::SaveText, this, &TextDelegate::InitText); } @@ -127,7 +129,7 @@ void TextDelegate::commitAndCloseEditor() QLineEdit *lineEdit = qobject_cast(sender()); SCASSERT(lineEdit != nullptr); QString text = lineEdit->text(); - if ( lastText != text && text.isEmpty() == false) + if ( lastText != text && text.isEmpty() == false && data->VariableExist(text) == false) { lastText = text; emit commitData(lineEdit); diff --git a/src/app/widgets/textdelegate.h b/src/app/widgets/textdelegate.h index 77f0a8462..0b2138b40 100644 --- a/src/app/widgets/textdelegate.h +++ b/src/app/widgets/textdelegate.h @@ -31,6 +31,7 @@ #include +class VContainer; /** * @brief The TextDelegate class a delegate that allows the user to change text values from the model * using a edit line widget. @@ -39,7 +40,7 @@ class TextDelegate : public QItemDelegate { Q_OBJECT public: - TextDelegate(const QString ®ex, QObject *parent = nullptr); + TextDelegate(const QString ®ex, VContainer *data, QObject *parent = nullptr); QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; void setEditorData(QWidget *editor, const QModelIndex &index) const; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; @@ -54,9 +55,13 @@ public slots: void commitAndCloseEditor(); void InitText(const QString &text); private: + Q_DISABLE_COPY(TextDelegate) + /** @brief lastValue last saved value. */ - QString lastText; - QString regex; + QString lastText; + + QString regex; + VContainer *data; }; #endif // TEXTDELEGATE_H