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->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::traceRemoved, this, &MarkerWidget::updatePersistentEditors);
|
||||
|
@ -2,7 +2,8 @@
|
||||
#include <QPainter>
|
||||
|
||||
TraceMarker::TraceMarker()
|
||||
: parentTrace(nullptr),
|
||||
: editingFrequeny(false),
|
||||
parentTrace(nullptr),
|
||||
frequency(1000000000),
|
||||
number(1),
|
||||
data(0)
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
QPixmap& getSymbol();
|
||||
|
||||
int getNumber() const;
|
||||
|
||||
bool editingFrequeny;
|
||||
public slots:
|
||||
void setFrequency(double freq);
|
||||
signals:
|
||||
|
@ -64,9 +64,14 @@ void TraceMarkerModel::removeMarker(TraceMarker *m)
|
||||
}
|
||||
}
|
||||
|
||||
void TraceMarkerModel::markerDataChanged(TraceMarker *)
|
||||
void TraceMarkerModel::markerDataChanged(TraceMarker *m)
|
||||
{
|
||||
emit dataChanged(index(0, ColIndexFreq), index(markers.size()-1, ColIndexData));
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
TraceMarker *TraceMarkerModel::marker(int index)
|
||||
@ -228,3 +233,19 @@ void TraceChooserDelegate::setModelData(QWidget *editor, QAbstractItemModel *mod
|
||||
auto c = (QComboBox*) editor;
|
||||
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 <vector>
|
||||
#include "tracemodel.h"
|
||||
#include <QItemDelegate>
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
class TraceChooserDelegate : public QItemDelegate
|
||||
class TraceChooserDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT;
|
||||
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;
|
||||
};
|
||||
|
||||
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
|
||||
{
|
||||
Q_OBJECT
|
||||
|
Loading…
Reference in New Issue
Block a user