Skip to content

Commit a3f4a60

Browse files
committed
set default series type in settings dlg
1 parent 676fe6e commit a3f4a60

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

tools/cabana/chartswidget.cc

+6-2
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ void ChartsWidget::settingChanged() {
181181
range_slider->setRange(1, settings.max_cached_minutes * 60);
182182
for (auto c : charts) {
183183
c->setFixedHeight(settings.chart_height);
184+
c->setSeriesType(settings.chart_series_type == 0 ? QAbstractSeries::SeriesTypeLine : QAbstractSeries::SeriesTypeScatter);
184185
}
185186
}
186187

@@ -300,6 +301,8 @@ bool ChartsWidget::eventFilter(QObject *obj, QEvent *event) {
300301
// ChartView
301302

302303
ChartView::ChartView(QWidget *parent) : QChartView(nullptr, parent) {
304+
series_type = settings.chart_series_type == 0 ? QAbstractSeries::SeriesTypeLine : QAbstractSeries::SeriesTypeScatter;
305+
303306
QChart *chart = new QChart();
304307
chart->setBackgroundRoundness(0);
305308
axis_x = new QValueAxis(this);
@@ -326,9 +329,10 @@ ChartView::ChartView(QWidget *parent) : QChartView(nullptr, parent) {
326329
QMenu *menu = new QMenu(this);
327330
line_series_action = menu->addAction(tr("Line"), [this]() { setSeriesType(QAbstractSeries::SeriesTypeLine); });
328331
line_series_action->setCheckable(true);
329-
line_series_action->setChecked(true);
332+
line_series_action->setChecked(series_type == QAbstractSeries::SeriesTypeLine);
330333
scatter_series_action = menu->addAction(tr("Scatter"), [this]() { setSeriesType(QAbstractSeries::SeriesTypeScatter); });
331334
scatter_series_action->setCheckable(true);
335+
scatter_series_action->setChecked(series_type == QAbstractSeries::SeriesTypeScatter);
332336
menu->addSeparator();
333337
menu->addAction(tr("Manage series"), this, &ChartView::manageSeries);
334338
manage_btn->setMenu(menu);
@@ -490,7 +494,7 @@ void ChartView::updatePlot(double cur, double min, double max) {
490494
int num_points = std::max<int>(end - begin, 1);
491495
int pixels_per_point = width() / num_points;
492496
if (series_type == QAbstractSeries::SeriesTypeScatter) {
493-
((QScatterSeries *)s.series)->setMarkerSize(std::max<int>(1, 16 * (pixels_per_point / 64.0)));
497+
((QScatterSeries *)s.series)->setMarkerSize(std::clamp(pixels_per_point / 10 , 1, 16));
494498
} else {
495499
s.series->setPointsVisible(pixels_per_point > 20);
496500
}

tools/cabana/chartswidget.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class ChartView : public QChartView {
3131
void updatePlot(double cur, double min, double max);
3232
void setPlotAreaLeftPosition(int pos);
3333
qreal getYAsixLabelWidth() const;
34+
void setSeriesType(QAbstractSeries::SeriesType type);
3435

3536
struct SigItem {
3637
QString msg_id;
@@ -56,7 +57,6 @@ private slots:
5657
void signalUpdated(const Signal *sig);
5758
void signalRemoved(const Signal *sig);
5859
void manageSeries();
59-
void setSeriesType(QAbstractSeries::SeriesType type);
6060

6161
private:
6262
QList<ChartView::SigItem>::iterator removeItem(const QList<ChartView::SigItem>::iterator &it);

tools/cabana/settings.cc

+8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ void Settings::save() {
2525
s.setValue("video_splitter_state", video_splitter_state);
2626
s.setValue("recent_files", recent_files);
2727
s.setValue("message_header_state", message_header_state);
28+
s.setValue("chart_series_type", chart_series_type);
2829
}
2930

3031
void Settings::load() {
@@ -40,6 +41,7 @@ void Settings::load() {
4041
video_splitter_state = s.value("video_splitter_state").toByteArray();
4142
recent_files = s.value("recent_files").toStringList();
4243
message_header_state = s.value("message_header_state").toByteArray();
44+
chart_series_type = s.value("chart_series_type", 0).toInt();
4345
}
4446

4547
// SettingsDlg
@@ -60,6 +62,11 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) {
6062
cached_minutes->setValue(settings.max_cached_minutes);
6163
form_layout->addRow(tr("Max Cached Minutes"), cached_minutes);
6264

65+
chart_series_type = new QComboBox(this);
66+
chart_series_type->addItems({tr("Line"), tr("Scatter")});
67+
chart_series_type->setCurrentIndex(settings.chart_series_type);
68+
form_layout->addRow(tr("Chart Default Series Type"), chart_series_type);
69+
6370
chart_height = new QSpinBox(this);
6471
chart_height->setRange(100, 500);
6572
chart_height->setSingleStep(10);
@@ -77,6 +84,7 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) {
7784
void SettingsDlg::save() {
7885
settings.fps = fps->value();
7986
settings.max_cached_minutes = cached_minutes->value();
87+
settings.chart_series_type = chart_series_type->currentIndex();
8088
settings.chart_height = chart_height->value();
8189
settings.save();
8290
accept();

tools/cabana/settings.h

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Settings : public QObject {
1818
int chart_height = 200;
1919
int chart_column_count = 1;
2020
int chart_range = 3 * 60; // e minutes
21+
int chart_series_type = 0;
2122
QString last_dir;
2223
QByteArray geometry;
2324
QByteArray video_splitter_state;
@@ -38,6 +39,7 @@ class SettingsDlg : public QDialog {
3839
QSpinBox *fps;
3940
QSpinBox *cached_minutes;
4041
QSpinBox *chart_height;
42+
QComboBox *chart_series_type;
4143
};
4244

4345
extern Settings settings;

0 commit comments

Comments
 (0)