From 9c77a998db451564c3b297dc11b4114900cd7d3c Mon Sep 17 00:00:00 2001 From: Kevin Krammer Date: Sun, 4 Nov 2012 21:08:52 +0100 Subject: [PATCH] Add support for options in color dialog "static" methods --- examples/dialogs.qml | 21 ++++++++++++++++++--- lib/declarativecolordialog.cpp | 23 +++++++++++++++++++++++ lib/declarativecolordialog_p.h | 7 ++++++- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/examples/dialogs.qml b/examples/dialogs.qml index ff0aa15..ba83443 100644 --- a/examples/dialogs.qml +++ b/examples/dialogs.qml @@ -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()) } } diff --git a/lib/declarativecolordialog.cpp b/lib/declarativecolordialog.cpp index 8f5e46a..df0fd27 100644 --- a/lib/declarativecolordialog.cpp +++ b/lib/declarativecolordialog.cpp @@ -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(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(); diff --git a/lib/declarativecolordialog_p.h b/lib/declarativecolordialog_p.h index 2986a15..4a138d1 100644 --- a/lib/declarativecolordialog_p.h +++ b/lib/declarativecolordialog_p.h @@ -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; -- 1.7.2.5