1
0
Fork 0

configurable data view modes

This commit is contained in:
Kevin Matz 2021-07-31 14:06:58 -04:00
parent 31108b7499
commit f9c01e5ad3
2 changed files with 40 additions and 1 deletions

View File

@ -1,5 +1,8 @@
#include "universemodel.h"
#include <QFont>
#include <QChar>
#include <QMetaEnum>
/**
* @brief UniverseModel::UniverseModel
@ -83,7 +86,20 @@ QVariant UniverseModel::data(const QModelIndex &index, int role) const
return QVariant();
if (slot > 512)
return QVariant();
return universe_->value(slot);
switch (data_mode_) {
case Decimal:
return universe_->value(slot);
break;
case Hex:
return QString("%1")
.arg(universe_->value(slot), 2, 16, QChar('0'))
.toUpper();
break;
case Percent:
return QString("%1%").arg((universe_->value(slot) / 255.0F) * 100,
0, 'f', 0, '0');
break;
}
break;
}
case Qt::FontRole:
@ -149,6 +165,18 @@ void UniverseModel::universeRefreshed() {
}
/**
* @brief UniverseModel::setDataMode
* @param mode
*/
void UniverseModel::setDataMode(const QString mode)
{
auto&& metaEnum = QMetaEnum::fromType<data_modes>();
data_mode_ = static_cast<data_modes>(metaEnum.keyToValue(mode.toLocal8Bit())); emit dataChanged(index(0,0), index(rowCount(), columnCount()));
emit dataChanged(index(0,0), index(rowCount(), columnCount()));
}
/**
* @brief UniverseModel::setUniverse
* @param universe

View File

@ -8,6 +8,13 @@ class UniverseModel : public QAbstractTableModel
Q_OBJECT
public:
enum data_modes {
Decimal,
Hex,
Percent
};
Q_ENUM(data_modes)
explicit UniverseModel(QObject *parent = nullptr);
// Header:
@ -25,15 +32,19 @@ public:
Qt::ItemFlags flags(const QModelIndex& index) const override;
// Data source:
void setUniverse(QSacnUniverse *universe);
QSacnUniverse * universe() const { return universe_; }
const data_modes dataMode() { return data_mode_; }
signals:
void recievedUpdate(const QSacnUniverse*);
public slots:
void universeRefreshed();
void setDataMode(const QString mode);
private:
QSacnUniverse * universe_ = nullptr;
data_modes data_mode_ = Decimal;
};