Add support for options in color dialog "static" methods
authorKevin Krammer <kevin.krammer@kdab.com>
Sun, 4 Nov 2012 20:08:52 +0000 (21:08 +0100)
committerKevin Krammer <kevin.krammer@kdab.com>
Sun, 4 Nov 2012 20:08:52 +0000 (21:08 +0100)
examples/dialogs.qml
lib/declarativecolordialog.cpp
lib/declarativecolordialog_p.h

index ff0aa15..ba83443 100644 (file)
@@ -111,15 +111,30 @@ Widget {
     PushButton {
       text: qsTr("Color Dialog::getColor")
       onClicked: {
-          console.log("Selected color: " + ColorDialog.getColor("#ff0000"))
+        console.log("Selected color: " + ColorDialog.getColor())
+      }
+    }
+
+    PushButton {
+      text: qsTr("Color Dialog::getColor with initial color")
+      onClicked: {
+        console.log("Selected color: " + ColorDialog.getColor("#ff0000"))
       }
     }
 
     PushButton {
       text: qsTr("Color Dialog::getColor with title")
       onClicked: {
-          ColorDialog.title = "Pick a color"
-          console.log("Selected color: " + ColorDialog.getColor("#ff0000"))
+        ColorDialog.title = "Pick a color"
+        console.log("Selected color: " + ColorDialog.getColor())
+      }
+    }
+
+    PushButton {
+      text: qsTr("Color Dialog::getColor with options")
+      onClicked: {
+        ColorDialog.options = ColorDialog.NoButtons | ColorDialog.ShowAlphaChannel
+        console.log("Selected color: " + ColorDialog.getColor())
       }
     }
 
index 8f5e46a..df0fd27 100644 (file)
@@ -54,6 +54,29 @@ QString DeclarativeColorDialogAttached::title() const
   return d->title;
 }
 
+void DeclarativeColorDialogAttached::setOptions(int options)
+{
+  if (d->options == options)
+    return;
+
+  d->options = static_cast<QColorDialog::ColorDialogOptions>(options);
+  emit optionsChanged(options);
+}
+
+int DeclarativeColorDialogAttached::options() const
+{
+  return d->options;
+}
+
+QColor DeclarativeColorDialogAttached::getColor()
+{
+  QWidget *parent = bestParentWindow();
+  if (!d->title.isEmpty() || d->options != 0)
+    return QColorDialog::getColor(Qt::white, parent, d->title, d->options);
+  else
+    return QColorDialog::getColor(Qt::white, parent);
+}
+
 QColor DeclarativeColorDialogAttached::getColor(const QColor &initialColor)
 {
   QWidget *parent = bestParentWindow();
index 2986a15..4a138d1 100644 (file)
@@ -31,7 +31,7 @@ class DeclarativeColorDialogAttached : public StaticDialogMethodAttached
 {
   Q_OBJECT
   Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
-  // TODO option
+  Q_PROPERTY(int options READ options WRITE setOptions NOTIFY optionsChanged)
 
   public:
     DeclarativeColorDialogAttached(QObject *parent = 0);
@@ -40,10 +40,15 @@ class DeclarativeColorDialogAttached : public StaticDialogMethodAttached
     void setTitle(const QString &title);
     QString title() const;
 
+    void setOptions(int options);
+    int options() const;
+
+    Q_INVOKABLE QColor getColor();
     Q_INVOKABLE QColor getColor(const QColor &initialColor);
 
   Q_SIGNALS:
     void titleChanged(const QString &title);
+    void optionsChanged(int options);
 
   private:
     class Private;