summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qplatformdialoghelper.h3
-rw-r--r--src/gui/kernel/qplatformdialoghelper_qpa.cpp14
2 files changed, 17 insertions, 0 deletions
diff --git a/src/gui/kernel/qplatformdialoghelper.h b/src/gui/kernel/qplatformdialoghelper.h
index d1e627d506..5865e0a27d 100644
--- a/src/gui/kernel/qplatformdialoghelper.h
+++ b/src/gui/kernel/qplatformdialoghelper.h
@@ -291,6 +291,9 @@ public:
const QSharedPointer<QFileDialogOptions> &options() const;
void setOptions(const QSharedPointer<QFileDialogOptions> &options);
+ static QStringList cleanFilterList(const QString &filter);
+ static const char *filterRegExp;
+
Q_SIGNALS:
void fileSelected(const QString &file);
void filesSelected(const QStringList &files);
diff --git a/src/gui/kernel/qplatformdialoghelper_qpa.cpp b/src/gui/kernel/qplatformdialoghelper_qpa.cpp
index f00437f69b..f71c5e58de 100644
--- a/src/gui/kernel/qplatformdialoghelper_qpa.cpp
+++ b/src/gui/kernel/qplatformdialoghelper_qpa.cpp
@@ -577,4 +577,18 @@ void QPlatformFileDialogHelper::setOptions(const QSharedPointer<QFileDialogOptio
m_options = options;
}
+const char *QPlatformFileDialogHelper::filterRegExp =
+"^(.*)\\(([a-zA-Z0-9_.*? +;#\\-\\[\\]@\\{\\}/!<>\\$%&=^~:\\|]*)\\)$";
+
+// Makes a list of filters from a normal filter string "Image Files (*.png *.jpg)"
+QStringList QPlatformFileDialogHelper::cleanFilterList(const QString &filter)
+{
+ QRegExp regexp(QString::fromLatin1(filterRegExp));
+ QString f = filter;
+ int i = regexp.indexIn(f);
+ if (i >= 0)
+ f = regexp.cap(2);
+ return f.split(QLatin1Char(' '), QString::SkipEmptyParts);
+}
+
QT_END_NAMESPACE