diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2013-02-01 10:36:42 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-18 00:27:47 +0100 |
commit | 468d010fdf851804d8f02dd93c382b512ce5c67e (patch) | |
tree | b0a97f41f14603be90705898270603c22b49228f /src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h | |
parent | e88011357e5dd3b0ae4e6bc715ef29e5f4f3ffab (diff) |
Introduce a native file dialog for GTK+ 2.x
Change-Id: I3cb29218a54b9120c2ab6e2e32b810a111a7bf3d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h')
-rw-r--r-- | src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h | 40 |
1 files changed, 40 insertions, 0 deletions
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 <QtCore/qscopedpointer.h> #include <qpa/qplatformdialoghelper.h> +typedef struct _GtkDialog GtkDialog; +typedef struct _GtkFileFilter GtkFileFilter; + QT_BEGIN_NAMESPACE class QGtk2Dialog; @@ -74,6 +77,43 @@ private: mutable QScopedPointer<QGtk2Dialog> 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<QString, GtkFileFilter*> _filters; + QHash<GtkFileFilter*, QString> _filterNames; + mutable QScopedPointer<QGtk2Dialog> d; +}; + QT_END_NAMESPACE #endif // QGTK2DIALOGHELPERS_P_H |