]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Let KMetaDataWidget and all the child widgets respect the foreground role that might...
authorPeter Penz <peter.penz19@gmail.com>
Sat, 21 Nov 2009 22:50:22 +0000 (22:50 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 21 Nov 2009 22:50:22 +0000 (22:50 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1052509

src/panels/information/kcommentwidget.cpp
src/panels/information/kcommentwidget_p.h
src/panels/information/kmetadatawidget.cpp
src/panels/information/kmetadatawidget.h
src/panels/information/ktaggingwidget.cpp
src/panels/information/ktaggingwidget_p.h

index c1f7ab7571cce3bcd246bb2dba48677accbf99d5..408e6a873a41c0d647e1024a583c5ae0c5437d20 100644 (file)
@@ -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);
index cd895223fb3ef242e86405393c2d4b7166ce79f7..b40fa71bc2bf362f7f32f4c427ef5535d91560eb 100644 (file)
@@ -50,6 +50,9 @@ public:
 signals:
     void commentChanged(const QString& comment);
 
+protected:
+    virtual bool event(QEvent* event);
+
 private slots:
     void slotLinkActivated(const QString& link);
 
index 7109fd282e4d40b7dbf09ed74b00205e152a3623..848a4c55a5cc3fd44e7d717e4afa4a825762bb3d 100644 (file)
@@ -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"
index 2618913b8c3ff365231d516287536c2be950953e..060b82c73321ccfe2607522dea644c044a72ee24 100644 (file)
@@ -125,6 +125,9 @@ public:
 Q_SIGNALS:
     void urlActivated(const KUrl& url);
 
+protected:
+    virtual bool event(QEvent* event);
+
 private:
     class Private;
     Private* d;
index 1dff1278f26fc164fd367226f09512e9351177a1..d33b9f6deaf24a8772b6d23042c36dc7e1299aea 100644 (file)
@@ -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);
index c82df873539a511315a65fb367f583b992c945fd..1a4589a62245d64df46bb6fa36b653f8e15fcc1d 100644 (file)
@@ -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);