From 56c8b2b1507887e9187749b6a6486dc6134c4bac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20L=C3=BCbking?= <thomas.luebking@gmail.com>
Date: Sat, 7 Jul 2012 00:18:42 +0200
Subject: [PATCH 3/4] pimp message view

---
 src/Gui/MessageView.cpp |   42 ++++++++++++++++++++++++++++++++++--------
 src/Gui/PartWidget.cpp  |    7 +++++++
 2 Dateien geändert, 41 Zeilen hinzugefügt(+), 8 Zeilen entfernt(-)

diff --git a/src/Gui/MessageView.cpp b/src/Gui/MessageView.cpp
index c08f3db..9e6bbd0 100644
--- a/src/Gui/MessageView.cpp
+++ b/src/Gui/MessageView.cpp
@@ -45,6 +45,11 @@ namespace Gui
 
 MessageView::MessageView(QWidget *parent): QWidget(parent)
 {
+    QPalette pal = palette();
+    pal.setColor(backgroundRole(), palette().color(QPalette::Active, QPalette::Base));
+    pal.setColor(foregroundRole(), palette().color(QPalette::Active, QPalette::Text));
+    setPalette(pal);
+    setAutoFillBackground(true);
     netAccess = new Imap::Network::MsgPartNetAccessManager(this);
     connect(netAccess, SIGNAL(requestingExternal(QUrl)), this, SLOT(externalsRequested(QUrl)));
     factory = new PartWidgetFactory(netAccess, this);
@@ -54,13 +59,34 @@ MessageView::MessageView(QWidget *parent): QWidget(parent)
     emptyView->setPage(new UserAgentWebPage(emptyView));
     emptyView->installEventFilter(this);
 
-    layout = new QVBoxLayout(this);
     viewer = emptyView;
-    header = new QLabel(this);
+
+    QWidget *headerSection = new QWidget(this);
+    pal = headerSection->palette();
+    pal.setColor(headerSection->backgroundRole(), palette().color(QPalette::Active, QPalette::Text));
+    pal.setColor(headerSection->foregroundRole(), palette().color(QPalette::Active, QPalette::Base));
+    headerSection->setPalette(pal);
+    headerSection->setAutoFillBackground(true);
+
+    header = new QLabel(headerSection);
+    header->setBackgroundRole(QPalette::Text);
+    header->setForegroundRole(QPalette::Base);
     header->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse);
     header->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
-    tags = new TagListWidget(this);
+    tags = new TagListWidget(headerSection);
+    tags->setBackgroundRole(QPalette::Text);
+    tags->setForegroundRole(QPalette::Base);
+
+    layout = new QVBoxLayout(headerSection);
+    layout->addWidget(header);
+    layout->addWidget(tags);
     tags->hide();
+
+    layout = new QVBoxLayout(this);
+    layout->addWidget(headerSection);
+    layout->setSpacing(0);
+    layout->setContentsMargins(0,0,0,0);
+
     connect(tags, SIGNAL(tagAdded(QString)), this, SLOT(newLabelAction(QString)));
     connect(tags, SIGNAL(tagRemoved(QString)), this, SLOT(deleteLabelAction(QString)));
     connect(header, SIGNAL(linkHovered(QString)), this, SLOT(linkInTitleHovered(QString)));
@@ -68,11 +94,11 @@ MessageView::MessageView(QWidget *parent): QWidget(parent)
     externalElements->hide();
     connect(externalElements, SIGNAL(loadingEnabled()), this, SLOT(externalsEnabled()));
     layout->addWidget(externalElements);
-    layout->addWidget(header);
-    layout->addWidget(tags);
-    layout->addWidget(viewer);
-    layout->setContentsMargins(0, 0, 0, 0);
-    layout->setSpacing(0);
+    QHBoxLayout *hLayout = new QHBoxLayout;
+    hLayout->setContentsMargins(6,6,6,0);
+    hLayout->addWidget(viewer);
+    static_cast<QVBoxLayout*>(layout)->addLayout(hLayout);
+    layout = hLayout;
 
     markAsReadTimer = new QTimer(this);
     markAsReadTimer->setSingleShot(true);
diff --git a/src/Gui/PartWidget.cpp b/src/Gui/PartWidget.cpp
index 7b1447c..7f9be7f 100644
--- a/src/Gui/PartWidget.cpp
+++ b/src/Gui/PartWidget.cpp
@@ -48,6 +48,7 @@ MultipartAlternativeWidget::MultipartAlternativeWidget(QWidget *parent,
         const int recursionDepth):
     QTabWidget(parent)
 {
+    setContentsMargins(0,0,0,0);
     for (int i = 0; i < partIndex.model()->rowCount(partIndex); ++i) {
         using namespace Imap::Mailbox;
         QModelIndex anotherPart = partIndex.child(i, 0);
@@ -81,8 +82,10 @@ MultipartSignedWidget::MultipartSignedWidget(QWidget *parent,
         const int recursionDepth):
     QGroupBox(tr("Signed Message"), parent)
 {
+    setFlat(true);
     using namespace Imap::Mailbox;
     QVBoxLayout *layout = new QVBoxLayout(this);
+    layout->setSpacing(0);
     uint childrenCount = partIndex.model()->rowCount(partIndex);
     if (childrenCount == 1) {
         setTitle(tr("Mallformed multipart/signed message: only one nested part"));
@@ -111,8 +114,10 @@ GenericMultipartWidget::GenericMultipartWidget(QWidget *parent,
         int recursionDepth):
     QGroupBox(tr("Multipart Message"), parent)
 {
+    setFlat(true);
     // multipart/mixed or anything else, as mandated by RFC 2046, Section 5.1.3
     QVBoxLayout *layout = new QVBoxLayout(this);
+    layout->setSpacing(0);
     for (int i = 0; i < partIndex.model()->rowCount(partIndex); ++i) {
         using namespace Imap::Mailbox;
         QModelIndex anotherPart = partIndex.child(i, 0);
@@ -132,7 +137,9 @@ Message822Widget::Message822Widget(QWidget *parent,
                                    int recursionDepth):
     QGroupBox(tr("Message"), parent)
 {
+    setFlat(true);
     QVBoxLayout *layout = new QVBoxLayout(this);
+    layout->setSpacing(0);
     QModelIndex headerIndex = partIndex.child(0, Imap::Mailbox::TreeItem::OFFSET_HEADER);
     Q_ASSERT(headerIndex.isValid());
     QLabel *header = new Rfc822HeaderView(0, headerIndex);
-- 
1.7.10.4

