improved marker data capsulation

This commit is contained in:
Jan Käberich 2020-10-19 21:21:04 +02:00
parent bd7fbfda2f
commit b5cd6e0072
3 changed files with 19 additions and 24 deletions

View File

@ -1,11 +1,11 @@
#include "tracemarker.h"
#include <QPainter>
TraceMarker::TraceMarker()
TraceMarker::TraceMarker(int number)
: editingFrequeny(false),
parentTrace(nullptr),
frequency(1000000000),
number(1),
number(number),
data(0)
{
@ -101,6 +101,11 @@ void TraceMarker::constrainFrequency()
}
}
Trace *TraceMarker::getTrace() const
{
return parentTrace;
}
int TraceMarker::getNumber() const
{
return number;

View File

@ -7,10 +7,9 @@
class TraceMarker : public QObject
{
friend class TraceMarkerModel;
Q_OBJECT;
public:
TraceMarker();
TraceMarker(int number = 1);
~TraceMarker();
void assignTrace(Trace *t);
Trace* trace();
@ -23,6 +22,8 @@ public:
int getNumber() const;
bool editingFrequeny;
Trace *getTrace() const;
public slots:
void setFrequency(double freq);
signals:

View File

@ -19,15 +19,14 @@ TraceMarker *TraceMarkerModel::createDefaultMarker()
number++;
used = false;
for(auto m : markers) {
if(m->number == number) {
if(m->getNumber() == number) {
used = true;
break;
}
}
} while (used);
auto marker = new TraceMarker();
marker->number = number;
marker->frequency = 2150000000;
auto marker = new TraceMarker(number);
marker->setFrequency(2150000000);
marker->assignTrace(model.trace(0));
return marker;
}
@ -95,19 +94,19 @@ QVariant TraceMarkerModel::data(const QModelIndex &index, int role) const
switch(index.column()) {
case ColIndexNumber:
switch(role) {
case Qt::DisplayRole: return QVariant((unsigned int)marker->number); break;
case Qt::DisplayRole: return QVariant((unsigned int)marker->getNumber()); break;
}
case ColIndexTrace:
switch(role) {
case Qt::DisplayRole:
if(marker->parentTrace) {
return marker->parentTrace->name();
if(marker->getTrace()) {
return marker->getTrace()->name();
}
break;
}
case ColIndexFreq:
switch(role) {
case Qt::DisplayRole: return Unit::ToString(marker->frequency, "Hz", " kMG", 6); break;
case Qt::DisplayRole: return Unit::ToString(marker->getFrequency(), "Hz", " kMG", 6); break;
}
case ColIndexData:
switch(role) {
@ -140,16 +139,6 @@ bool TraceMarkerModel::setData(const QModelIndex &index, const QVariant &value,
}
auto m = markers[index.row()];
switch(index.column()) {
case ColIndexNumber: {
bool convertOk;
unsigned int number;
number = value.toUInt(&convertOk);
if(convertOk) {
m->number = number;
return true;
}
break;
}
case ColIndexTrace: {
auto trace = qvariant_cast<Trace*>(value);
m->assignTrace(trace);
@ -171,7 +160,7 @@ Qt::ItemFlags TraceMarkerModel::flags(const QModelIndex &index) const
{
int flags = Qt::NoItemFlags;
switch(index.column()) {
case ColIndexNumber: flags |= Qt::ItemIsEnabled | Qt::ItemIsEditable; break;
case ColIndexNumber: flags |= Qt::ItemIsEnabled; break;
case ColIndexTrace: flags |= Qt::ItemIsEnabled | Qt::ItemIsEditable; break;
case ColIndexFreq: flags |= Qt::ItemIsEnabled | Qt::ItemIsEditable; break;
case ColIndexData: flags |= Qt::ItemIsEnabled; break;
@ -188,7 +177,7 @@ std::vector<TraceMarker *> TraceMarkerModel::getMarker(Trace *t)
{
std::vector<TraceMarker*> attachedMarkers;
for(auto m : markers) {
if(m->parentTrace == t) {
if(m->getTrace() == t) {
attachedMarkers.push_back(m);
}
}