Cabana: move settings to seperate files (#26173)
parent
998d18783d
commit
4bf86742e6
7 changed files with 124 additions and 109 deletions
@ -0,0 +1,79 @@ |
|||||||
|
#include "tools/cabana/settings.h" |
||||||
|
|
||||||
|
#include <QDialogButtonBox> |
||||||
|
#include <QFormLayout> |
||||||
|
#include <QSettings> |
||||||
|
|
||||||
|
// Settings
|
||||||
|
Settings settings; |
||||||
|
|
||||||
|
Settings::Settings() { |
||||||
|
load(); |
||||||
|
} |
||||||
|
|
||||||
|
void Settings::save() { |
||||||
|
QSettings s("settings", QSettings::IniFormat); |
||||||
|
s.setValue("fps", fps); |
||||||
|
s.setValue("log_size", can_msg_log_size); |
||||||
|
s.setValue("cached_segment", cached_segment_limit); |
||||||
|
s.setValue("chart_height", chart_height); |
||||||
|
emit changed(); |
||||||
|
} |
||||||
|
|
||||||
|
void Settings::load() { |
||||||
|
QSettings s("settings", QSettings::IniFormat); |
||||||
|
fps = s.value("fps", 10).toInt(); |
||||||
|
can_msg_log_size = s.value("log_size", 100).toInt(); |
||||||
|
cached_segment_limit = s.value("cached_segment", 3).toInt(); |
||||||
|
chart_height = s.value("chart_height", 200).toInt(); |
||||||
|
} |
||||||
|
|
||||||
|
// SettingsDlg
|
||||||
|
|
||||||
|
SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) { |
||||||
|
setWindowTitle(tr("Settings")); |
||||||
|
QVBoxLayout *main_layout = new QVBoxLayout(this); |
||||||
|
QFormLayout *form_layout = new QFormLayout(); |
||||||
|
|
||||||
|
fps = new QSpinBox(this); |
||||||
|
fps->setRange(10, 100); |
||||||
|
fps->setSingleStep(10); |
||||||
|
fps->setValue(settings.fps); |
||||||
|
form_layout->addRow("FPS", fps); |
||||||
|
|
||||||
|
log_size = new QSpinBox(this); |
||||||
|
log_size->setRange(50, 500); |
||||||
|
log_size->setSingleStep(10); |
||||||
|
log_size->setValue(settings.can_msg_log_size); |
||||||
|
form_layout->addRow(tr("Log size"), log_size); |
||||||
|
|
||||||
|
cached_segment = new QSpinBox(this); |
||||||
|
cached_segment->setRange(3, 60); |
||||||
|
cached_segment->setSingleStep(1); |
||||||
|
cached_segment->setValue(settings.cached_segment_limit); |
||||||
|
form_layout->addRow(tr("Cached segments limit"), cached_segment); |
||||||
|
|
||||||
|
chart_height = new QSpinBox(this); |
||||||
|
chart_height->setRange(100, 500); |
||||||
|
chart_height->setSingleStep(10); |
||||||
|
chart_height->setValue(settings.chart_height); |
||||||
|
form_layout->addRow(tr("Chart height"), chart_height); |
||||||
|
|
||||||
|
main_layout->addLayout(form_layout); |
||||||
|
|
||||||
|
auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); |
||||||
|
main_layout->addWidget(buttonBox); |
||||||
|
|
||||||
|
setFixedWidth(360); |
||||||
|
connect(buttonBox, &QDialogButtonBox::accepted, this, &SettingsDlg::save); |
||||||
|
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); |
||||||
|
} |
||||||
|
|
||||||
|
void SettingsDlg::save() { |
||||||
|
settings.fps = fps->value(); |
||||||
|
settings.can_msg_log_size = log_size->value(); |
||||||
|
settings.cached_segment_limit = cached_segment->value(); |
||||||
|
settings.chart_height = chart_height->value(); |
||||||
|
settings.save(); |
||||||
|
accept(); |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include <QDialog> |
||||||
|
#include <QSpinBox> |
||||||
|
|
||||||
|
class Settings : public QObject { |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
Settings(); |
||||||
|
void save(); |
||||||
|
void load(); |
||||||
|
|
||||||
|
int fps = 10; |
||||||
|
int can_msg_log_size = 100; |
||||||
|
int cached_segment_limit = 3; |
||||||
|
int chart_height = 200; |
||||||
|
|
||||||
|
signals: |
||||||
|
void changed(); |
||||||
|
}; |
||||||
|
|
||||||
|
class SettingsDlg : public QDialog { |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
SettingsDlg(QWidget *parent); |
||||||
|
void save(); |
||||||
|
QSpinBox *fps; |
||||||
|
QSpinBox *log_size ; |
||||||
|
QSpinBox *cached_segment; |
||||||
|
QSpinBox *chart_height; |
||||||
|
}; |
||||||
|
|
||||||
|
extern Settings settings; |
Loading…
Reference in new issue