Cabana: remember last directory in open file dialog (#26449)

* remember last directory in open file dialog

* use QFileInfo
old-commit-hash: 122c0ec135
taco
Dean Lee 2 years ago committed by GitHub
parent 5f80ca6359
commit 26fb7d0db0
  1. 8
      tools/cabana/mainwin.cc
  2. 5
      tools/cabana/settings.cc
  3. 1
      tools/cabana/settings.h

@ -156,8 +156,9 @@ void MainWindow::loadDBCFromName(const QString &name) {
}
void MainWindow::loadDBCFromFile() {
QString file_name = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath(), "DBC (*.dbc)");
QString file_name = QFileDialog::getOpenFileName(this, tr("Open File"), settings.last_dir, "DBC (*.dbc)");
if (!file_name.isEmpty()) {
settings.last_dir = QFileInfo(file_name).absolutePath();
QFile file(file_name);
if (file.open(QIODevice::ReadOnly)) {
auto dbc_name = QFileInfo(file_name).baseName();
@ -185,8 +186,9 @@ void MainWindow::loadDBCFromFingerprint() {
void MainWindow::saveDBCToFile() {
QString file_name = QFileDialog::getSaveFileName(this, tr("Save File"),
QDir::homePath() + "/untitled.dbc", tr("DBC (*.dbc)"));
QDir::cleanPath(settings.last_dir + "/untitled.dbc"), tr("DBC (*.dbc)"));
if (!file_name.isEmpty()) {
settings.last_dir = QFileInfo(file_name).absolutePath();
QFile file(file_name);
if (file.open(QIODevice::WriteOnly))
file.write(dbc()->generateDBC().toUtf8());
@ -228,6 +230,8 @@ void MainWindow::closeEvent(QCloseEvent *event) {
main_win = nullptr;
if (floating_window)
floating_window->deleteLater();
settings.save();
QWidget::closeEvent(event);
}

@ -1,6 +1,7 @@
#include "tools/cabana/settings.h"
#include <QDialogButtonBox>
#include <QDir>
#include <QFormLayout>
#include <QSettings>
@ -19,7 +20,7 @@ void Settings::save() {
s.setValue("chart_height", chart_height);
s.setValue("chart_theme", chart_theme);
s.setValue("max_chart_x_range", max_chart_x_range);
emit changed();
s.setValue("last_dir", last_dir);
}
void Settings::load() {
@ -30,6 +31,7 @@ void Settings::load() {
chart_height = s.value("chart_height", 200).toInt();
chart_theme = s.value("chart_theme", 0).toInt();
max_chart_x_range = s.value("max_chart_x_range", 3 * 60).toInt();
last_dir = s.value("last_dir", QDir::homePath()).toString();
}
// SettingsDlg
@ -90,4 +92,5 @@ void SettingsDlg::save() {
settings.max_chart_x_range = max_chart_x_range->value() * 60;
settings.save();
accept();
emit settings.changed();
}

@ -18,6 +18,7 @@ public:
int chart_height = 200;
int chart_theme = 0;
int max_chart_x_range = 3 * 60; // 3 minutes
QString last_dir;
signals:
void changed();

Loading…
Cancel
Save