Respect the filename specified when showing the native filedialog
When a filename was specified as part of the start up directory then it should ensure this is put in the filename lineedit in the native filedialog. Change-Id: I2b190933d46553908b5bcf17506cb2a95fb1f982 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This commit is contained in:
parent
6476d6728e
commit
bfd73eaba3
@ -668,6 +668,7 @@ public:
|
|||||||
inline void setNameFilters(const QStringList &f);
|
inline void setNameFilters(const QStringList &f);
|
||||||
inline void selectNameFilter(const QString &filter);
|
inline void selectNameFilter(const QString &filter);
|
||||||
inline QString selectedNameFilter() const;
|
inline QString selectedNameFilter() const;
|
||||||
|
void selectFile(const QString &fileName) const;
|
||||||
bool hideFiltersDetails() const { return m_hideFiltersDetails; }
|
bool hideFiltersDetails() const { return m_hideFiltersDetails; }
|
||||||
void setHideFiltersDetails(bool h) { m_hideFiltersDetails = h; }
|
void setHideFiltersDetails(bool h) { m_hideFiltersDetails = h; }
|
||||||
void setDefaultSuffix(const QString &s);
|
void setDefaultSuffix(const QString &s);
|
||||||
@ -961,6 +962,11 @@ void QWindowsNativeFileDialogBase::setLabelText(QFileDialogOptions::DialogLabel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QWindowsNativeFileDialogBase::selectFile(const QString &fileName) const
|
||||||
|
{
|
||||||
|
m_fileDialog->SetFileName((wchar_t*)fileName.utf16());
|
||||||
|
}
|
||||||
|
|
||||||
// Return the index of the selected filter, accounting for QFileDialog
|
// Return the index of the selected filter, accounting for QFileDialog
|
||||||
// sometimes stripping the filter specification depending on the
|
// sometimes stripping the filter specification depending on the
|
||||||
// hideFilterDetails setting.
|
// hideFilterDetails setting.
|
||||||
@ -1230,6 +1236,12 @@ QWindowsNativeDialogBase *QWindowsFileDialogHelper::createNativeDialog()
|
|||||||
const QString initialDirectory = opts->initialDirectory();
|
const QString initialDirectory = opts->initialDirectory();
|
||||||
if (!initialDirectory.isEmpty())
|
if (!initialDirectory.isEmpty())
|
||||||
result->setDirectory(initialDirectory);
|
result->setDirectory(initialDirectory);
|
||||||
|
const QStringList initialSelection = opts->initiallySelectedFiles();
|
||||||
|
if (initialSelection.size() > 0) {
|
||||||
|
QFileInfo info(initialSelection.front());
|
||||||
|
if (!info.isDir())
|
||||||
|
result->selectFile(info.fileName());
|
||||||
|
}
|
||||||
const QString initialNameFilter = opts->initiallySelectedNameFilter();
|
const QString initialNameFilter = opts->initiallySelectedNameFilter();
|
||||||
if (!initialNameFilter.isEmpty())
|
if (!initialNameFilter.isEmpty())
|
||||||
result->selectNameFilter(initialNameFilter);
|
result->selectNameFilter(initialNameFilter);
|
||||||
@ -1255,9 +1267,13 @@ QString QWindowsFileDialogHelper::directory() const
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWindowsFileDialogHelper::selectFile(const QString & /* filename */)
|
void QWindowsFileDialogHelper::selectFile(const QString &fileName)
|
||||||
{
|
{
|
||||||
// Not implemented.
|
if (QWindowsContext::verboseDialogs)
|
||||||
|
qDebug("%s %s" , __FUNCTION__, qPrintable(fileName));
|
||||||
|
|
||||||
|
if (QWindowsNativeFileDialogBase *nfd = nativeFileDialog())
|
||||||
|
nfd->selectFile(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList QWindowsFileDialogHelper::selectedFiles() const
|
QStringList QWindowsFileDialogHelper::selectedFiles() const
|
||||||
|
Loading…
Reference in New Issue
Block a user