diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2011-11-10 13:07:01 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-11 10:58:10 +0100 |
commit | af914694d81317b4a7bf0804d9d34a1f3bf2cf48 (patch) | |
tree | 039dc97541bc51cdeddf21b5f8949d5e998b18de /src/widgets/dialogs/qcolordialog.cpp | |
parent | 9a8a70d8e42f7e8fee8398affa5680adb2ba24d6 (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.cpp | 17 |
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 |