fixed last filepicker location was cleared when file picker dialog was aborted
This commit is contained in:
@@ -4,10 +4,10 @@
|
|||||||
#include <QListView>
|
#include <QListView>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
|
|
||||||
|
#include "ApplicationSettings.h"
|
||||||
#include "FilePath.h"
|
#include "FilePath.h"
|
||||||
#include "QtFilesAndDirectoriesDialog.h"
|
#include "QtFilesAndDirectoriesDialog.h"
|
||||||
#include "utilityApp.h"
|
#include "utilityApp.h"
|
||||||
#include "ApplicationSettings.h"
|
|
||||||
|
|
||||||
QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const FilePath& path)
|
QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const FilePath& path)
|
||||||
{
|
{
|
||||||
@@ -48,18 +48,20 @@ QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const File
|
|||||||
|
|
||||||
QString QtFileDialog::getExistingDirectory(QWidget* parent, const QString& caption, const FilePath& dir)
|
QString QtFileDialog::getExistingDirectory(QWidget* parent, const QString& caption, const FilePath& dir)
|
||||||
{
|
{
|
||||||
QString dir_path = QFileDialog::getExistingDirectory(parent, caption, getDir(QString::fromStdWString(dir.wstr())));
|
const QString dirPath = QFileDialog::getExistingDirectory(
|
||||||
saveFilePickerLocation(FilePath(dir_path.toStdString()));
|
parent, caption, getDir(QString::fromStdWString(dir.wstr())));
|
||||||
return dir_path;
|
saveFilePickerLocation(FilePath(dirPath.toStdString()));
|
||||||
|
return dirPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtFileDialog::getOpenFileName(
|
QString QtFileDialog::getOpenFileName(
|
||||||
QWidget* parent, const QString& caption, const FilePath& dir, const QString& filter)
|
QWidget* parent, const QString& caption, const FilePath& dir, const QString& filter)
|
||||||
{
|
{
|
||||||
QString file_path = QFileDialog::getOpenFileName(parent, caption, getDir(QString::fromStdWString(dir.wstr())), filter);
|
const QString filePath = QFileDialog::getOpenFileName(
|
||||||
FilePath dir_path = FilePath(file_path.toStdString()).getParentDirectory();
|
parent, caption, getDir(QString::fromStdWString(dir.wstr())), filter);
|
||||||
saveFilePickerLocation(dir_path);
|
const FilePath dirPath = FilePath(filePath.toStdString()).getParentDirectory();
|
||||||
return file_path;
|
saveFilePickerLocation(dirPath);
|
||||||
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtFileDialog::showSaveFileDialog(
|
QString QtFileDialog::showSaveFileDialog(
|
||||||
@@ -117,9 +119,10 @@ QString QtFileDialog::getDir(QString dir)
|
|||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
dir = QString::fromStdString(ApplicationSettings::getInstance()->getLastFilepickerLocation().str());
|
dir = QString::fromStdString(
|
||||||
|
ApplicationSettings::getInstance()->getLastFilepickerLocation().str());
|
||||||
|
|
||||||
if (dir.isEmpty()) // first app launch, settings file absent
|
if (dir.isEmpty()) // first app launch, settings file absent
|
||||||
{
|
{
|
||||||
dir = QDir::homePath();
|
dir = QDir::homePath();
|
||||||
}
|
}
|
||||||
@@ -127,9 +130,12 @@ QString QtFileDialog::getDir(QString dir)
|
|||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtFileDialog::saveFilePickerLocation(FilePath path)
|
void QtFileDialog::saveFilePickerLocation(const FilePath& path)
|
||||||
{
|
{
|
||||||
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
|
if (!path.empty())
|
||||||
settings->setLastFilepickerLocation(path);
|
{
|
||||||
settings->save();
|
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
|
||||||
|
settings->setLastFilepickerLocation(path);
|
||||||
|
settings->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static QString getDir(QString dir);
|
static QString getDir(QString dir);
|
||||||
|
static void saveFilePickerLocation(const FilePath& path);
|
||||||
static void saveFilePickerLocation(FilePath path);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QT_FILE_DIALOG_H
|
#endif // QT_FILE_DIALOG_H
|
||||||
|
|||||||
Reference in New Issue
Block a user