Cabana: remember last directory in open file dialog (#26449)
* remember last directory in open file dialog * use QFileInfo old-commit-hash: 122c0ec135804ac6a106f1e06f4cb3467fb13b1a
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user