logic: save last filepicker location (issue #802) (#1024)

This commit is contained in:
miltolstoy
2020-06-08 11:24:38 +02:00
committed by GitHub
parent e7fc3d205d
commit 0da704eabe
4 changed files with 38 additions and 8 deletions
+10
View File
@@ -668,6 +668,16 @@ void ApplicationSettings::setSeenErrorHelpMessage(bool seen)
setValue<bool>("user/seen_error_help_message", seen);
}
FilePath ApplicationSettings::getLastFilepickerLocation() const
{
return FilePath(getValue<std::wstring>("user/last_filepicker_location", L""));
}
void ApplicationSettings::setLastFilepickerLocation(const FilePath& path)
{
setValue<std::wstring>("user/last_filepicker_location", path.wstr());
}
int ApplicationSettings::getPluginPort() const
{
return getValue<int>("network/plugin_port", 6666);
+3
View File
@@ -178,6 +178,9 @@ public:
bool getSeenErrorHelpMessage() const;
void setSeenErrorHelpMessage(bool seen);
FilePath getLastFilepickerLocation() const;
void setLastFilepickerLocation(const FilePath& path);
// network
int getPluginPort() const;
void setPluginPort(const int pluginPort);
+23 -8
View File
@@ -7,6 +7,7 @@
#include "FilePath.h"
#include "QtFilesAndDirectoriesDialog.h"
#include "utilityApp.h"
#include "ApplicationSettings.h"
QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const FilePath& path)
{
@@ -39,6 +40,7 @@ QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const File
list = dialog->selectedFiles();
}
saveFilePickerLocation(FilePath(dialog->directory().path().toStdString()));
delete dialog;
return list;
@@ -46,15 +48,18 @@ QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const File
QString QtFileDialog::getExistingDirectory(QWidget* parent, const QString& caption, const FilePath& dir)
{
return QFileDialog::getExistingDirectory(
parent, caption, getDir(QString::fromStdWString(dir.wstr())));
QString dir_path = QFileDialog::getExistingDirectory(parent, caption, getDir(QString::fromStdWString(dir.wstr())));
saveFilePickerLocation(FilePath(dir_path.toStdString()));
return dir_path;
}
QString QtFileDialog::getOpenFileName(
QWidget* parent, const QString& caption, const FilePath& dir, const QString& filter)
{
return QFileDialog::getOpenFileName(
parent, caption, getDir(QString::fromStdWString(dir.wstr())), filter);
QString file_path = QFileDialog::getOpenFileName(parent, caption, getDir(QString::fromStdWString(dir.wstr())), filter);
FilePath dir_path = FilePath(file_path.toStdString()).getParentDirectory();
saveFilePickerLocation(dir_path);
return file_path;
}
QString QtFileDialog::showSaveFileDialog(
@@ -107,14 +112,24 @@ QString QtFileDialog::showSaveFileDialog(
QString QtFileDialog::getDir(QString dir)
{
static bool used = false;
if (!dir.isEmpty())
{
return dir;
}
if (!used && dir.isEmpty())
dir = QString::fromStdString(ApplicationSettings::getInstance()->getLastFilepickerLocation().str());
if (dir.isEmpty()) // first app launch, settings file absent
{
dir = QDir::homePath();
}
used = true;
return dir;
}
void QtFileDialog::saveFilePickerLocation(FilePath path)
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
settings->setLastFilepickerLocation(path);
settings->save();
}
+2
View File
@@ -20,6 +20,8 @@ public:
private:
static QString getDir(QString dir);
static void saveFilePickerLocation(FilePath path);
};
#endif // QT_FILE_DIALOG_H