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

View File

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

View File

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