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