summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs/qcolordialog.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-11-10 13:07:01 +0100
committerQt by Nokia <qt-info@nokia.com>2011-11-11 10:58:10 +0100
commitaf914694d81317b4a7bf0804d9d34a1f3bf2cf48 (patch)
tree039dc97541bc51cdeddf21b5f8949d5e998b18de /src/widgets/dialogs/qcolordialog.cpp
parent9a8a70d8e42f7e8fee8398affa5680adb2ba24d6 (diff)
QPlatformDialogHelper: Split class hierarchy, decouple from Dialog
- Introduce hierarchy of QPlatformDialogHelper-derived classes for font, color and file dialogs. - Start reducing dependencies on QDialog: * Remove QDialog-specifics from interface, introduce enumeration for DialogCode * Make the helpers Q_OBJECTS to be able to add the signals passed on to the QDialogs * Remove QDialogPrivate pointer - Split setVisible_sys() in show_sys() (factory method for native dialogs) and hide_sys(). Pass parent window to show_sys(), removing the necessity to query the QDialog for it - Introduce a styleHint() similar to QGuiApplication's for platform-specific - Fix compile in cocoa/windows, reduce depency on QDialog (-private) classes. Change-Id: Ic1cb715e1edf767f2cb18b9780341d189339ef1d Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Diffstat (limited to 'src/widgets/dialogs/qcolordialog.cpp')
-rw-r--r--src/widgets/dialogs/qcolordialog.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp
index 6b956b1277..1eaaf79bf5 100644
--- a/src/widgets/dialogs/qcolordialog.cpp
+++ b/src/widgets/dialogs/qcolordialog.cpp
@@ -1282,6 +1282,8 @@ inline bool QColorDialogPrivate::isAlphaVisible() const { return cs->isAlphaVisi
QColor QColorDialogPrivate::currentQColor() const
{
+ if (nativeDialogInUse)
+ return platformColorDialogHelper()->currentColor_sys();
return cs->currentQColor();
}
@@ -1650,6 +1652,13 @@ void QColorDialogPrivate::init(const QColor &initial)
q->setCurrentColor(initial);
}
+void QColorDialogPrivate::initHelper(QPlatformDialogHelper *h)
+{
+ QColorDialog *d = q_func();
+ QObject::connect(h, SIGNAL(currentColorChanged(QColor)), d, SIGNAL(currentColorChanged(QColor)));
+ QObject::connect(h, SIGNAL(colorSelected(QColor)), d, SIGNAL(colorSelected(QColor)));
+}
+
void QColorDialogPrivate::_q_addCustom()
{
cusrgb[nextCust] = cs->currentColor();
@@ -1758,8 +1767,8 @@ void QColorDialog::setCurrentColor(const QColor &color)
d->setCocoaPanelColor(color);
#endif
// ### fixme: Call helper
- // if (d->nativeDialogInUse)
- // qt_guiPlatformPlugin()->colorDialogSetCurrentColor(this, color);
+ if (d->nativeDialogInUse)
+ d->platformColorDialogHelper()->setCurrentColor_sys(color);
}
QColor QColorDialog::currentColor() const
@@ -1768,7 +1777,6 @@ QColor QColorDialog::currentColor() const
return d->currentQColor();
}
-
/*!
Returns the color that the user selected by clicking the \gui{OK}
or equivalent button.
@@ -1915,8 +1923,7 @@ void QColorDialog::setVisible(bool visible)
#else
if (!(d->opts & DontUseNativeDialog))
- if (QPlatformDialogHelper *helper = d->platformHelper())
- d->nativeDialogInUse = helper->setVisible_sys(visible);
+ d->setNativeDialogVisible(visible);
if (d->nativeDialogInUse) {
// Set WA_DontShowOnScreen so that QDialog::setVisible(visible) below