qt: Add a function that extracts the suffix from a filter

Extract the 'Extract first suffix from filter pattern...'
functionality into a testable utility function
This commit is contained in:
w0xlt
2022-06-21 18:53:03 -03:00
parent a09033e22c
commit c378535e28
2 changed files with 21 additions and 15 deletions

View File

@@ -292,6 +292,16 @@ QString getDefaultDataDirectory()
return PathToQString(GetDefaultDataDir());
}
QString ExtractFirstSuffixFromFilter(const QString& filter)
{
QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]");
QString suffix;
if (filter_re.exactMatch(filter)) {
suffix = filter_re.cap(1);
}
return suffix;
}
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir,
const QString &filter,
QString *selectedSuffixOut)
@@ -309,13 +319,7 @@ QString getSaveFileName(QWidget *parent, const QString &caption, const QString &
/* Directly convert path to native OS path separators */
QString result = QDir::toNativeSeparators(QFileDialog::getSaveFileName(parent, caption, myDir, filter, &selectedFilter));
/* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */
QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]");
QString selectedSuffix;
if(filter_re.exactMatch(selectedFilter))
{
selectedSuffix = filter_re.cap(1);
}
QString selectedSuffix = ExtractFirstSuffixFromFilter(selectedFilter);
/* Add suffix if needed */
QFileInfo info(result);
@@ -357,14 +361,8 @@ QString getOpenFileName(QWidget *parent, const QString &caption, const QString &
if(selectedSuffixOut)
{
/* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */
QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]");
QString selectedSuffix;
if(filter_re.exactMatch(selectedFilter))
{
selectedSuffix = filter_re.cap(1);
}
*selectedSuffixOut = selectedSuffix;
*selectedSuffixOut = ExtractFirstSuffixFromFilter(selectedFilter);
;
}
return result;
}

View File

@@ -123,6 +123,14 @@ namespace GUIUtil
*/
QString getDefaultDataDirectory();
/**
* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...).
*
* @param[in] filter Filter specification such as "Comma Separated Files (*.csv)"
* @return QString
*/
QString ExtractFirstSuffixFromFilter(const QString& filter);
/** Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix
when no suffix is provided by the user.