Browse Source

ENH: In Qt 4.6.3 QFileDialog::Option is a regular qt flag and can be reused

There is no need to define our own flags anymore.
Julien Finet 15 years ago
parent
commit
b6a2010bcb
2 changed files with 33 additions and 1 deletions
  1. 20 0
      Libs/Widgets/ctkDirectoryButton.cpp
  2. 13 1
      Libs/Widgets/ctkDirectoryButton.h

+ 20 - 0
Libs/Widgets/ctkDirectoryButton.cpp

@@ -37,14 +37,22 @@ public:
   QDir         Directory;
   QPushButton* PushButton;
   QString      DialogCaption;
+#if QT_VERSION >= 0x040603
+  QFileDialog::Options DialogOptions;
+#else
   ctkDirectoryButton::Options DialogOptions;
+#endif
   bool         DisplayAbsolutePath;
 };
 
 //-----------------------------------------------------------------------------
 ctkDirectoryButtonPrivate::ctkDirectoryButtonPrivate()
 {
+#if QT_VERSION >= 0x040603
+  this->DialogOptions = QFileDialog::ShowDirsOnly;
+#else
   this->DialogOptions = ctkDirectoryButton::ShowDirsOnly;
+#endif
   this->DisplayAbsolutePath = true;
 }
 
@@ -144,14 +152,22 @@ const QString& ctkDirectoryButton::caption()const
 }
 
 //-----------------------------------------------------------------------------
+#if QT_VERSION >= 0x040603
+void ctkDirectoryButton::setOptions(const QFileDialog::Options& dialogOptions)
+#else
 void ctkDirectoryButton::setOptions(const Options& dialogOptions)
+#endif
 {
   CTK_D(ctkDirectoryButton);
   d->DialogOptions = dialogOptions;
 }
 
 //-----------------------------------------------------------------------------
+#if QT_VERSION >= 0x040603
+const QFileDialog::Options& ctkDirectoryButton::options()const
+#else
 const ctkDirectoryButton::Options& ctkDirectoryButton::options()const
+#endif
 {
   CTK_D(const ctkDirectoryButton);
   return d->DialogOptions;
@@ -166,7 +182,11 @@ void ctkDirectoryButton::browse()
       this,
       d->DialogCaption.isEmpty() ? this->toolTip() : d->DialogCaption,
       d->Directory.path(),
+#if QT_VERSION >= 0x040603
+      d->DialogOptions);
+#else
       QFlags<QFileDialog::Option>(int(d->DialogOptions)));
+#endif
   // An empty directory means that the user cancelled the dialog.
   if (dir.isEmpty())
     {

+ 13 - 1
Libs/Widgets/ctkDirectoryButton.h

@@ -35,11 +35,16 @@ class CTK_WIDGETS_EXPORT ctkDirectoryButton: public QWidget
   Q_OBJECT
   Q_PROPERTY(QString directory READ directory WRITE setDirectory)
   Q_PROPERTY(QString caption READ caption WRITE setCaption)
+#if QT_VERSION >= 0x040603
+  Q_PROPERTY(QFileDialog::Options options READ options WRITE setOptions)
+#else
   Q_PROPERTY(Options options READ options WRITE setOptions)
   // QFileDialog::Options is not a meta-type, we need to create our own.
   Q_FLAGS(Option Options);
+#endif
 
 public:
+#if QT_VERSION < 0x040603
   // QFileDialog::Options is not a meta-type, we need to create our own.
   enum Option
     {
@@ -52,7 +57,7 @@ public:
       HideNameFilterDetails = 0x00000040
     };
   Q_DECLARE_FLAGS(Options, Option)
-
+#endif
   ctkDirectoryButton(QWidget * parent = 0);
   ctkDirectoryButton(const QString& directory, QWidget * parent = 0);
   ctkDirectoryButton(const QIcon& icon, const QString& directory, QWidget * parent = 0);
@@ -66,8 +71,13 @@ public:
   void setCaption(const QString& caption);
   const QString& caption()const;
 
+#if QT_VERSION >= 0x040603
+  void setOptions(const QFileDialog::Options& options);
+  const QFileDialog::Options& options()const;
+#else
   void setOptions(const Options& options);
   const Options& options()const;
+#endif
 
 public slots:
   void browse();
@@ -82,6 +92,8 @@ private:
   CTK_DECLARE_PRIVATE(ctkDirectoryButton);
 };
 
+#if QT_VERSION < 0x040603
 Q_DECLARE_OPERATORS_FOR_FLAGS(ctkDirectoryButton::Options);
+#endif
 
 #endif