Gui: make sure to use FileIconProvider in FileDialog and delete it after closing the dialog

This commit is contained in:
wmayer
2022-07-04 13:17:11 +02:00
parent bc2d022e55
commit 4dbeb8c5aa

View File

@@ -195,6 +195,7 @@ QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption,
urls << QUrl::fromLocalFile(QDir::currentPath());
FileDialog dlg(parent);
dlg.setOptions(options);
dlg.setWindowTitle(windowTitle);
dlg.setSidebarUrls(urls);
auto iconprov = std::make_unique<FileIconProvider>();
@@ -204,7 +205,6 @@ QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption,
dlg.setDirectory(dirName);
if (hasFilename)
dlg.selectFile(dirName);
dlg.setOptions(options);
dlg.setNameFilters(filter.split(QLatin1String(";;")));
if (selectedFilter && !selectedFilter->isEmpty())
dlg.selectNameFilter(*selectedFilter);
@@ -277,13 +277,14 @@ QString FileDialog::getOpenFileName(QWidget * parent, const QString & caption, c
urls << QUrl::fromLocalFile(QDir::currentPath());
FileDialog dlg(parent);
dlg.setOptions(options);
dlg.setWindowTitle(windowTitle);
dlg.setSidebarUrls(urls);
dlg.setIconProvider(new FileIconProvider());
auto iconprov = std::make_unique<FileIconProvider>();
dlg.setIconProvider(iconprov.get());
dlg.setFileMode(QFileDialog::ExistingFile);
dlg.setAcceptMode(QFileDialog::AcceptOpen);
dlg.setDirectory(dirName);
dlg.setOptions(options);
dlg.setNameFilters(filter.split(QLatin1String(";;")));
dlg.setOption(QFileDialog::HideNameFilterDetails, false);
if (selectedFilter && !selectedFilter->isEmpty())
@@ -338,13 +339,14 @@ QStringList FileDialog::getOpenFileNames (QWidget * parent, const QString & capt
urls << QUrl::fromLocalFile(QDir::currentPath());
FileDialog dlg(parent);
dlg.setOptions(options);
dlg.setWindowTitle(windowTitle);
dlg.setSidebarUrls(urls);
dlg.setIconProvider(new FileIconProvider());
auto iconprov = std::make_unique<FileIconProvider>();
dlg.setIconProvider(iconprov.get());
dlg.setFileMode(QFileDialog::ExistingFiles);
dlg.setAcceptMode(QFileDialog::AcceptOpen);
dlg.setDirectory(dirName);
dlg.setOptions(options);
dlg.setNameFilters(filter.split(QLatin1String(";;")));
dlg.setOption(QFileDialog::HideNameFilterDetails, false);
if (selectedFilter && !selectedFilter->isEmpty())