mirror of
https://github.com/Lurkki14/tuxclocker.git
synced 2025-02-25 18:55:24 -06:00
qt: save parametrization vector data
This commit is contained in:
parent
faff24ac28
commit
5096296ff0
@ -129,6 +129,16 @@ void AssignableEditorDelegate::setModelData(QWidget *editor, QAbstractItemModel
|
||||
model->setData(index, a_editor->text(), Qt::DisplayRole);
|
||||
}
|
||||
|
||||
if (v_data.canConvert<AssignableParametrizationData>()) {
|
||||
auto p_editor = static_cast<AssignableParametrizationEditor*>(editor);
|
||||
auto data = qvariant_cast<AssignableParametrizationData>(v_data);
|
||||
|
||||
QVariant v;
|
||||
v.setValue(p_editor->data());
|
||||
|
||||
model->setData(index, v, Qt::UserRole);
|
||||
}
|
||||
|
||||
// Set original size
|
||||
model->setData(index, m_originalItemSize, Qt::SizeHintRole);
|
||||
m_spanAllColumns = false;
|
||||
|
@ -14,12 +14,13 @@ private:
|
||||
ReadableData m_parameterReadable; // Readable node that the recepient is parametrized from
|
||||
AssignableData m_controlledAssignable;
|
||||
std::chrono::milliseconds m_updateInterval;
|
||||
QVector <qreal> m_xVector;
|
||||
QVector <qreal> m_yVector;
|
||||
QVector <QPointF> m_pointsVector;
|
||||
public:
|
||||
AssignableParametrizationData() {};
|
||||
AssignableParametrizationData(AssignableData &data) {m_controlledAssignable = data;}
|
||||
const AssignableData assignableData() {return m_controlledAssignable;}
|
||||
const QVector <QPointF> pointsVector() {return m_pointsVector;}
|
||||
void setPointsVector(const QVector <QPointF> vector) {m_pointsVector = vector;}
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(AssignableParametrizationData);
|
||||
|
@ -33,6 +33,7 @@ AssignableParametrizationEditor::AssignableParametrizationEditor(QWidget *parent
|
||||
m_stackedWidget->addWidget((m_editorWidget = new GraphEditor));
|
||||
|
||||
connect(m_editButton, &QPushButton::clicked, [=]() {
|
||||
m_editorWidget->dragChartView()->setVector(m_parametrizationData.pointsVector());
|
||||
m_stackedWidget->setCurrentWidget(m_editorWidget);
|
||||
emit expansionSizeRequested(QSize(200, 300));
|
||||
});
|
||||
@ -42,6 +43,12 @@ AssignableParametrizationEditor::AssignableParametrizationEditor(QWidget *parent
|
||||
emit expansionDisableRequested();
|
||||
});
|
||||
|
||||
connect(m_editorWidget, &GraphEditor::saved, [=]() {
|
||||
m_stackedWidget->setCurrentWidget(m_initialWidget);
|
||||
emit expansionDisableRequested();
|
||||
m_parametrizationData.setPointsVector(m_editorWidget->dragChartView()->vector());
|
||||
});
|
||||
|
||||
layout()->addWidget(m_stackedWidget);
|
||||
layout()->setMargin(0);
|
||||
}
|
||||
@ -50,4 +57,17 @@ void AssignableParametrizationEditor::setData(AssignableParametrizationData &dat
|
||||
m_parametrizationData = data;
|
||||
// Update y-axis label
|
||||
m_editorWidget->dragChartView()->yAxis()->setTitleText(m_parametrizationData.assignableData().name);
|
||||
// Set y-axis range
|
||||
switch (m_parametrizationData.assignableData().m_rangeInfo.range_data_type) {
|
||||
case TC_ASSIGNABLE_RANGE_DOUBLE:
|
||||
m_editorWidget->dragChartView()->yAxis()->setMin(m_parametrizationData.assignableData().m_rangeInfo.double_range.min);
|
||||
m_editorWidget->dragChartView()->yAxis()->setMax(m_parametrizationData.assignableData().m_rangeInfo.double_range.max);
|
||||
break;
|
||||
case TC_ASSIGNABLE_RANGE_INT:
|
||||
m_editorWidget->dragChartView()->yAxis()->setMin(m_parametrizationData.assignableData().m_rangeInfo.int_range.min);
|
||||
m_editorWidget->dragChartView()->yAxis()->setMax(m_parametrizationData.assignableData().m_rangeInfo.int_range.max);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ class AssignableParametrizationEditor : public AbstractExpandableItemEditor {
|
||||
public:
|
||||
AssignableParametrizationEditor(QWidget *parent = nullptr);
|
||||
void setData(AssignableParametrizationData &data);
|
||||
AssignableParametrizationData data() {return m_parametrizationData;}
|
||||
private:
|
||||
QVBoxLayout *m_layout;
|
||||
QCheckBox *m_enabledCheckBox;
|
||||
|
@ -77,22 +77,27 @@ DragChartView::DragChartView(QWidget *parent) : QChartView(parent)
|
||||
|
||||
// Add filler item when point is added
|
||||
connect(&m_series, &QScatterSeries::pointAdded, [=]() {
|
||||
qDebug("item added");
|
||||
auto item = new QGraphicsLineItem;
|
||||
item->setPen(QPen(QBrush(QColor(Qt::blue)), 3));
|
||||
m_lineFillerItems.append(item);
|
||||
chart()->scene()->addItem(item);
|
||||
});
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
m_series.append(i * 5, i * 5);
|
||||
|
||||
/*auto item = new QGraphicsLineItem;
|
||||
item->setPen(QPen(QBrush(QColor(Qt::blue)), 3));
|
||||
m_lineFillerItems.append(item);
|
||||
chart()->scene()->addItem(item);*/
|
||||
}
|
||||
|
||||
connect(&m_series, &QScatterSeries::pointsReplaced, [=]() {
|
||||
// Delete filler items
|
||||
for (auto item : m_lineFillerItems) {
|
||||
delete item;
|
||||
}
|
||||
m_lineFillerItems.clear();
|
||||
// Create new ones
|
||||
for (int i = 0; i < m_series.pointsVector().length(); i++) {
|
||||
auto item = new QGraphicsLineItem;
|
||||
item->setPen(QPen(QBrush(QColor(Qt::blue)), 3));
|
||||
m_lineFillerItems.append(item);
|
||||
chart()->scene()->addItem(item);
|
||||
}
|
||||
});
|
||||
|
||||
connect(&m_series, &QScatterSeries::pressed, [=](QPointF point) {
|
||||
m_dragCanStart = true;
|
||||
m_latestScatterPoint = point;
|
||||
@ -135,8 +140,6 @@ DragChartView::DragChartView(QWidget *parent) : QChartView(parent)
|
||||
m_yAxis.setTitleBrush(QBrush(QPalette().color(QPalette::Text)));
|
||||
m_xAxis.setTitleBrush(QBrush(QPalette().color(QPalette::Text)));
|
||||
|
||||
//setCursor(Qt::CrossCursor);
|
||||
|
||||
// Set cursor to indicate dragging
|
||||
connect(this, &DragChartView::dragStarted, [=]() {
|
||||
setCursor(Qt::ClosedHandCursor);
|
||||
@ -162,6 +165,10 @@ DragChartView::DragChartView(QWidget *parent) : QChartView(parent)
|
||||
});
|
||||
}
|
||||
|
||||
void DragChartView::setVector(const QVector <QPointF> vector) {
|
||||
m_series.replace(vector);
|
||||
}
|
||||
|
||||
bool DragChartView::event(QEvent *event) {
|
||||
//qDebug() << event->type();
|
||||
|
||||
|
@ -12,6 +12,9 @@ public:
|
||||
DragChartView(QWidget *parent = nullptr);
|
||||
QValueAxis *xAxis() {return &m_xAxis;}
|
||||
QValueAxis *yAxis() {return &m_yAxis;}
|
||||
|
||||
void setVector(const QVector <QPointF> vector);
|
||||
QVector <QPointF> vector() {return m_series.pointsVector();}
|
||||
protected:
|
||||
bool event(QEvent*);
|
||||
void mousePressEvent(QMouseEvent*);
|
||||
|
@ -22,5 +22,9 @@ GraphEditor::GraphEditor(QWidget *parent) : QWidget(parent) {
|
||||
emit cancelled();
|
||||
});
|
||||
|
||||
connect(m_saveButton, &QPushButton::clicked, [=]() {
|
||||
emit saved();
|
||||
});
|
||||
|
||||
setLayout(m_layout);
|
||||
}
|
||||
|
@ -18,4 +18,5 @@ private:
|
||||
QPushButton *m_cancelButton;
|
||||
signals:
|
||||
void cancelled();
|
||||
void saved();
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user