diff options
| author | Peter Penz <[email protected]> | 2009-11-21 22:50:22 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2009-11-21 22:50:22 +0000 |
| commit | 2a02ac7d02790c69a63ee79e2fac4e94b9165531 (patch) | |
| tree | 6badbbf536213aee204955e0c352a914cdc6853f | |
| parent | 3be4adae11b9f9466bc926a83372213a34fb92e2 (diff) | |
Let KMetaDataWidget and all the child widgets respect the foreground role that might be set by the client. This allows KMetaDataWidget to get embedded inside a tooltip having correct tooltip colors.
svn path=/trunk/KDE/kdebase/apps/; revision=1052509
| -rw-r--r-- | src/panels/information/kcommentwidget.cpp | 9 | ||||
| -rw-r--r-- | src/panels/information/kcommentwidget_p.h | 3 | ||||
| -rw-r--r-- | src/panels/information/kmetadatawidget.cpp | 46 | ||||
| -rw-r--r-- | src/panels/information/kmetadatawidget.h | 3 | ||||
| -rw-r--r-- | src/panels/information/ktaggingwidget.cpp | 9 | ||||
| -rw-r--r-- | src/panels/information/ktaggingwidget_p.h | 3 |
6 files changed, 60 insertions, 13 deletions
diff --git a/src/panels/information/kcommentwidget.cpp b/src/panels/information/kcommentwidget.cpp index c1f7ab757..408e6a873 100644 --- a/src/panels/information/kcommentwidget.cpp +++ b/src/panels/information/kcommentwidget.cpp @@ -23,6 +23,7 @@ #include <kglobalsettings.h> #include <klocale.h> +#include <QEvent> #include <QLabel> #include <QTextEdit> #include <QVBoxLayout> @@ -87,6 +88,14 @@ bool KCommentWidget::isReadOnly() const return m_readOnly; } +bool KCommentWidget::event(QEvent* event) +{ + if (event->type() == QEvent::Polish) { + m_label->setForegroundRole(foregroundRole()); + } + return QWidget::event(event); +} + void KCommentWidget::slotLinkActivated(const QString& link) { KDialog dialog(this, Qt::Dialog); diff --git a/src/panels/information/kcommentwidget_p.h b/src/panels/information/kcommentwidget_p.h index cd895223f..b40fa71bc 100644 --- a/src/panels/information/kcommentwidget_p.h +++ b/src/panels/information/kcommentwidget_p.h @@ -50,6 +50,9 @@ public: signals: void commentChanged(const QString& comment); +protected: + virtual bool event(QEvent* event); + private slots: void slotLinkActivated(const QString& link); diff --git a/src/panels/information/kmetadatawidget.cpp b/src/panels/information/kmetadatawidget.cpp index 7109fd282..848a4c55a 100644 --- a/src/panels/information/kmetadatawidget.cpp +++ b/src/panels/information/kmetadatawidget.cpp @@ -26,6 +26,7 @@ #include <kglobal.h> #include <klocale.h> +#include <QEvent> #include <QFontMetrics> #include <QGridLayout> #include <QLabel> @@ -177,12 +178,6 @@ KMetaDataWidget::Private::Private(KMetaDataWidget* parent) : m_ownerInfo = new QLabel(parent); m_permissionsInfo = new QLabel(parent); - addRow(new QLabel(i18nc("@label", "Type:"), parent), m_typeInfo); - addRow(m_sizeLabel, m_sizeInfo); - addRow(new QLabel(i18nc("@label", "Modified:"), parent), m_modifiedInfo); - addRow(new QLabel(i18nc("@label", "Owner:"), parent), m_ownerInfo); - addRow(new QLabel(i18nc("@label", "Permissions:"), parent), m_permissionsInfo); - #ifdef HAVE_NEPOMUK m_nepomukActivated = (Nepomuk::ResourceManager::instance()->init() == 0); if (m_nepomukActivated) { @@ -198,15 +193,10 @@ KMetaDataWidget::Private::Private(KMetaDataWidget* parent) : m_commentWidget = new KCommentWidget(parent); connect(m_commentWidget, SIGNAL(commentChanged(const QString&)), q, SLOT(slotCommentChanged(const QString&))); - - addRow(new QLabel(i18nc("@label", "Rating:"), parent), m_ratingWidget); - addRow(new QLabel(i18nc("@label", "Tags:"), parent), m_taggingWidget); - addRow(new QLabel(i18nc("@label", "Comment:"), parent), m_commentWidget); } #endif initMetaInfoSettings(); - updateRowsVisibility(); } KMetaDataWidget::Private::~Private() @@ -230,14 +220,17 @@ void KMetaDataWidget::Private::addRow(QLabel* label, QWidget* infoWidget) const QFont smallFont = KGlobalSettings::smallestReadableFont(); // use a brighter color for the label and a small font size QPalette palette = label->palette(); - QColor textColor = palette.color(QPalette::Text); + const QPalette::ColorRole role = q->foregroundRole(); + QColor textColor = palette.color(role); textColor.setAlpha(128); - palette.setColor(QPalette::WindowText, textColor); + palette.setColor(role, textColor); label->setPalette(palette); + label->setForegroundRole(role); label->setFont(smallFont); label->setWordWrap(true); label->setAlignment(Qt::AlignTop | Qt::AlignRight); + infoWidget->setForegroundRole(role); QLabel* infoLabel = qobject_cast<QLabel*>(infoWidget); if (infoLabel != 0) { infoLabel->setFont(smallFont); @@ -642,4 +635,31 @@ QSize KMetaDataWidget::sizeHint() const return QSize(fixedWidth, height); } +bool KMetaDataWidget::event(QEvent* event) +{ + if (event->type() == QEvent::Polish) { + // The adding of rows is not done in the constructor. This allows the + // client of KMetaDataWidget to set a proper foreground role which + // will be respected by the rows. + + d->addRow(new QLabel(i18nc("@label", "Type:"), this), d->m_typeInfo); + d->addRow(d->m_sizeLabel, d->m_sizeInfo); + d->addRow(new QLabel(i18nc("@label", "Modified:"), this), d->m_modifiedInfo); + d->addRow(new QLabel(i18nc("@label", "Owner:"), this), d->m_ownerInfo); + d->addRow(new QLabel(i18nc("@label", "Permissions:"), this), d->m_permissionsInfo); + + #ifdef HAVE_NEPOMUK + if (d->m_nepomukActivated) { + d->addRow(new QLabel(i18nc("@label", "Rating:"), this), d->m_ratingWidget); + d->addRow(new QLabel(i18nc("@label", "Tags:"), this), d->m_taggingWidget); + d->addRow(new QLabel(i18nc("@label", "Comment:"), this), d->m_commentWidget); + } + #endif + + d->updateRowsVisibility(); + } + + return QWidget::event(event); +} + #include "kmetadatawidget.moc" diff --git a/src/panels/information/kmetadatawidget.h b/src/panels/information/kmetadatawidget.h index 2618913b8..060b82c73 100644 --- a/src/panels/information/kmetadatawidget.h +++ b/src/panels/information/kmetadatawidget.h @@ -125,6 +125,9 @@ public: Q_SIGNALS: void urlActivated(const KUrl& url); +protected: + virtual bool event(QEvent* event); + private: class Private; Private* d; diff --git a/src/panels/information/ktaggingwidget.cpp b/src/panels/information/ktaggingwidget.cpp index 1dff1278f..d33b9f6de 100644 --- a/src/panels/information/ktaggingwidget.cpp +++ b/src/panels/information/ktaggingwidget.cpp @@ -23,6 +23,7 @@ #include <kglobalsettings.h> #include <klocale.h> +#include <QEvent> #include <QLabel> #include <QVBoxLayout> @@ -97,6 +98,14 @@ bool KTaggingWidget::isReadOnly() const return m_readOnly; } +bool KTaggingWidget::event(QEvent* event) +{ + if (event->type() == QEvent::Polish) { + m_label->setForegroundRole(foregroundRole()); + } + return QWidget::event(event); +} + void KTaggingWidget::slotLinkActivated(const QString& link) { Q_UNUSED(link); diff --git a/src/panels/information/ktaggingwidget_p.h b/src/panels/information/ktaggingwidget_p.h index c82df8735..1a4589a62 100644 --- a/src/panels/information/ktaggingwidget_p.h +++ b/src/panels/information/ktaggingwidget_p.h @@ -50,6 +50,9 @@ public: signals: void tagsChanged(const QList<Nepomuk::Tag>& tags); +protected: + virtual bool event(QEvent* event); + private slots: void slotLinkActivated(const QString& link); |
