From 468d010fdf851804d8f02dd93c382b512ce5c67e Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 1 Feb 2013 10:36:42 +0100 Subject: Introduce a native file dialog for GTK+ 2.x Change-Id: I3cb29218a54b9120c2ab6e2e32b810a111a7bf3d Reviewed-by: Friedemann Kleint Reviewed-by: Jens Bache-Wiig Reviewed-by: Shawn Rutledge --- .../platformthemes/gtk2/qgtk2dialoghelpers.h | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h') diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h index 9dc6991601..301a2aa6ae 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h @@ -45,6 +45,9 @@ #include #include +typedef struct _GtkDialog GtkDialog; +typedef struct _GtkFileFilter GtkFileFilter; + QT_BEGIN_NAMESPACE class QGtk2Dialog; @@ -74,6 +77,43 @@ private: mutable QScopedPointer d; }; +class QGtk2FileDialogHelper : public QPlatformFileDialogHelper +{ + Q_OBJECT + +public: + QGtk2FileDialogHelper(); + ~QGtk2FileDialogHelper(); + + virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + virtual void exec(); + virtual void hide(); + + virtual bool defaultNameFilterDisables() const; + virtual void setDirectory(const QString &directory); + virtual QString directory() const; + virtual void selectFile(const QString &filename); + virtual QStringList selectedFiles() const; + virtual void setFilter(); + virtual void selectNameFilter(const QString &filter); + virtual QString selectedNameFilter() const; + +private Q_SLOTS: + void onAccepted(); + +private: + static void onSelectionChanged(GtkDialog *dialog, QGtk2FileDialogHelper *helper); + static void onCurrentFolderChanged(QGtk2FileDialogHelper *helper); + void applyOptions(); + void setNameFilters(const QStringList &filters); + + QString _dir; + QStringList _selection; + QHash _filters; + QHash _filterNames; + mutable QScopedPointer d; +}; + QT_END_NAMESPACE #endif // QGTK2DIALOGHELPERS_P_H -- cgit v1.2.3