Do not overwrite marker frequency while editing
This commit is contained in:
parent
ca3bc9c794
commit
fb8ee5b355
Binary file not shown.
@ -8,7 +8,8 @@ MarkerWidget::MarkerWidget(TraceMarkerModel &model, QWidget *parent) :
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->tableView->setModel(&model);
|
ui->tableView->setModel(&model);
|
||||||
ui->tableView->setItemDelegateForColumn(1, new TraceChooserDelegate);
|
ui->tableView->setItemDelegateForColumn(TraceMarkerModel::ColIndexTrace, new TraceChooserDelegate);
|
||||||
|
ui->tableView->setItemDelegateForColumn(TraceMarkerModel::ColIndexFreq, new TraceFrequencyDelegate);
|
||||||
|
|
||||||
connect(&model.getModel(), &TraceModel::traceAdded, this, &MarkerWidget::updatePersistentEditors);
|
connect(&model.getModel(), &TraceModel::traceAdded, this, &MarkerWidget::updatePersistentEditors);
|
||||||
connect(&model.getModel(), &TraceModel::traceRemoved, this, &MarkerWidget::updatePersistentEditors);
|
connect(&model.getModel(), &TraceModel::traceRemoved, this, &MarkerWidget::updatePersistentEditors);
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
TraceMarker::TraceMarker()
|
TraceMarker::TraceMarker()
|
||||||
: parentTrace(nullptr),
|
: editingFrequeny(false),
|
||||||
|
parentTrace(nullptr),
|
||||||
frequency(1000000000),
|
frequency(1000000000),
|
||||||
number(1),
|
number(1),
|
||||||
data(0)
|
data(0)
|
||||||
|
@ -22,7 +22,7 @@ public:
|
|||||||
QPixmap& getSymbol();
|
QPixmap& getSymbol();
|
||||||
|
|
||||||
int getNumber() const;
|
int getNumber() const;
|
||||||
|
bool editingFrequeny;
|
||||||
public slots:
|
public slots:
|
||||||
void setFrequency(double freq);
|
void setFrequency(double freq);
|
||||||
signals:
|
signals:
|
||||||
|
@ -64,9 +64,14 @@ void TraceMarkerModel::removeMarker(TraceMarker *m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TraceMarkerModel::markerDataChanged(TraceMarker *)
|
void TraceMarkerModel::markerDataChanged(TraceMarker *m)
|
||||||
{
|
{
|
||||||
|
if(m->editingFrequeny) {
|
||||||
|
// only update the other columns, do not override editor data
|
||||||
|
emit dataChanged(index(0, ColIndexData), index(markers.size()-1, ColIndexData));
|
||||||
|
} else {
|
||||||
emit dataChanged(index(0, ColIndexFreq), index(markers.size()-1, ColIndexData));
|
emit dataChanged(index(0, ColIndexFreq), index(markers.size()-1, ColIndexData));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TraceMarker *TraceMarkerModel::marker(int index)
|
TraceMarker *TraceMarkerModel::marker(int index)
|
||||||
@ -228,3 +233,19 @@ void TraceChooserDelegate::setModelData(QWidget *editor, QAbstractItemModel *mod
|
|||||||
auto c = (QComboBox*) editor;
|
auto c = (QComboBox*) editor;
|
||||||
markerModel->setData(index, c->itemData(c->currentIndex()));
|
markerModel->setData(index, c->itemData(c->currentIndex()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWidget *TraceFrequencyDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
auto model = (TraceMarkerModel*) index.model();
|
||||||
|
auto marker = model->getMarker()[index.row()];
|
||||||
|
marker->editingFrequeny = true;
|
||||||
|
return QStyledItemDelegate::createEditor(parent, option, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TraceFrequencyDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
auto markerModel = (TraceMarkerModel*) model;
|
||||||
|
auto marker = markerModel->getMarker()[index.row()];
|
||||||
|
marker->editingFrequeny = false;
|
||||||
|
QStyledItemDelegate::setModelData(editor, model, index);
|
||||||
|
}
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
#include "tracemarker.h"
|
#include "tracemarker.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "tracemodel.h"
|
#include "tracemodel.h"
|
||||||
#include <QItemDelegate>
|
#include <QStyledItemDelegate>
|
||||||
|
|
||||||
class TraceChooserDelegate : public QItemDelegate
|
class TraceChooserDelegate : public QStyledItemDelegate
|
||||||
{
|
{
|
||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
QWidget *createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const override;
|
QWidget *createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const override;
|
||||||
@ -15,6 +15,13 @@ class TraceChooserDelegate : public QItemDelegate
|
|||||||
void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const override;
|
void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TraceFrequencyDelegate : public QStyledItemDelegate
|
||||||
|
{
|
||||||
|
Q_OBJECT;
|
||||||
|
QWidget *createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const override;
|
||||||
|
void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const override;
|
||||||
|
};
|
||||||
|
|
||||||
class TraceMarkerModel : public QAbstractTableModel
|
class TraceMarkerModel : public QAbstractTableModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Loading…
Reference in New Issue
Block a user