[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [trojita] src/Gui: redesign EnvelopeView
From: Thomas_Lübking <thomas.luebking () gmail ! com>
Date: 2016-03-05 16:57:05
Message-ID: E1acFVp-0000Mk-U7 () scm ! kde ! org
[Download RAW message or body]
Git commit 722c242e99f7d9278674266e7171f00009f0aebb by Thomas Lübking.
Committed on 28/02/2016 at 12:07.
Pushed by gerrit into branch 'master'.
redesign EnvelopeView
- date on top-right
- move subject to top, stress font (bigger, bold)
- inline from, sender and reply-to
- inline to, cc and bcc (human terms for cc / bcc)
- move "Mailing List" to bottom
- use formlayout
Change-Id: I05e255015d6eea1688c6ff5b610766235240cef4
M +89 -24 src/Gui/EnvelopeView.cpp
http://commits.kde.org/trojita/722c242e99f7d9278674266e7171f00009f0aebb
diff --git a/src/Gui/EnvelopeView.cpp b/src/Gui/EnvelopeView.cpp
index dd4d7b0..05066f8 100644
--- a/src/Gui/EnvelopeView.cpp
+++ b/src/Gui/EnvelopeView.cpp
@@ -24,6 +24,8 @@
#include <QFontMetrics>
#include <QLabel>
#include <QUrlQuery>
+#include <QGridLayout>
+#include <QLayoutItem>
#include <QVBoxLayout>
#include "Gui/AddressRowWidget.h"
#include "Gui/MessageView.h"
@@ -45,7 +47,6 @@ EnvelopeView::EnvelopeView(QWidget *parent, MessageView \
*messageView): QWidget(p setForegroundRole(helpingHeader.foregroundRole());
QVBoxLayout *lay = new QVBoxLayout(this);
- lay->setSpacing(0);
lay->setContentsMargins(0, 0, 0, 0);
setLayout(lay);
@@ -58,9 +59,26 @@ EnvelopeView::EnvelopeView(QWidget *parent, MessageView \
*messageView): QWidget(p
LBL->setTextInteractionFlags(Qt::TextSelectableByMouse | \
Qt::LinksAccessibleByMouse); \ }
+#define ADD_ROW(LBL, WDG) \
+{ \
+ QLabel *l = new QLabel(LBL, this); \
+ l->setAlignment(Qt::AlignRight); \
+ form->addWidget(l, form->rowCount(), 0, Qt::AlignTop); \
+ form->addWidget(WDG, form->rowCount()-1, 1, Qt::AlignTop); \
+}
+
/** @short */
void EnvelopeView::setMessage(const QModelIndex &index)
{
+ while (QLayoutItem *item = layout()->takeAt(0)) {
+ if (item->widget()) {
+ item->widget()->deleteLater();
+ } else if (item->layout()) {
+ item->layout()->deleteLater();
+ } else {
+ delete item;
+ }
+ }
Q_FOREACH(QWidget *w, findChildren<QWidget*>()) {
w->deleteLater();
}
@@ -71,15 +89,75 @@ void EnvelopeView::setMessage(const QModelIndex &index)
const Imap::Message::Envelope e = \
index.data(Imap::Mailbox::RoleMessageEnvelope).value<Imap::Message::Envelope>();
+ // Subject & date
+ QString subDate;
+ // Date
+ if (e.date.isValid()) {
+ subDate = QStringLiteral("<table style=\"margin:0px; margin-left:4em; \
float:right;\"><tr style=\"margin:0px;\"><td \
style=\"margin:0px;\">%1</td></tr></table>").arg(e.date.toLocalTime().toString(Qt::SystemLocaleLongDate));
+ }
+ subDate += QStringLiteral("<span style=\"font:bold \
large;\">%1</span>").arg(e.subject.toHtmlEscaped()); + auto lbl = new \
QLabel(subDate, this); + SET_LABEL_OPTIONS(lbl)
+ layout()->addWidget(lbl);
+
+ QGridLayout *form = new QGridLayout();
+ form->setSpacing(0);
+ form->setContentsMargins(0, 0, 0, 0);
+ static_cast<QBoxLayout*>(layout())->addLayout(form);
+
+ // Sender
+ AddressRowWidget *senderWidget = 0;
+ QString senderLabel;
if (!e.from.isEmpty()) {
- layout()->addWidget(new AddressRowWidget(this, tr("From"), e.from, \
m_messageView)); + senderLabel = tr("From");
+ senderWidget = new AddressRowWidget(this, QString(), e.from, m_messageView);
}
if (!e.sender.isEmpty() && e.sender != e.from) {
- layout()->addWidget(new AddressRowWidget(this, tr("Sender"), e.sender, \
m_messageView)); + if (senderWidget) {
+ senderWidget->addAddresses(QStringLiteral(" %1").arg(tr("sent via")), \
e.sender, m_messageView); + } else {
+ senderLabel = tr("Sender");
+ senderWidget = new AddressRowWidget(this, QString(), e.sender, \
m_messageView); + }
}
if (!e.replyTo.isEmpty() && e.replyTo != e.from) {
- layout()->addWidget(new AddressRowWidget(this, tr("Reply-To"), e.replyTo, \
m_messageView)); + if (senderWidget) {
+ senderWidget->addAddresses(QStringLiteral(", %1").arg(tr("replies to")), \
e.replyTo, m_messageView); + } else {
+ senderLabel = tr("Reply-To");
+ senderWidget = new AddressRowWidget(this, QString(), e.replyTo, \
m_messageView); + }
}
+ if (senderWidget)
+ ADD_ROW(senderLabel, senderWidget)
+
+ // Receiver
+ AddressRowWidget *receiverWidget = 0;
+ QString receiverLabel;
+ if (!e.to.isEmpty()) {
+ receiverLabel = tr("To");
+ receiverWidget = new AddressRowWidget(this, QString(), e.to, m_messageView);
+ }
+ if (!e.cc.isEmpty()) {
+ if (receiverWidget) {
+ receiverWidget->addAddresses(QStringLiteral(" %1").arg(tr("CC'd to")), \
e.cc, m_messageView); + } else {
+ receiverLabel = tr("Cc");
+ receiverWidget = new AddressRowWidget(this, QString(), e.cc, \
m_messageView); + }
+ }
+ if (!e.bcc.isEmpty()) {
+ if (receiverWidget) {
+ receiverWidget->addAddresses(QStringLiteral(" %1").arg(tr("Bcc'd to")), \
e.bcc, m_messageView); + } else {
+ receiverLabel = tr("Bcc");
+ receiverWidget = new AddressRowWidget(this, QString(), e.bcc, \
m_messageView); + }
+ }
+ if (receiverWidget)
+ ADD_ROW(receiverLabel, receiverWidget)
+
+ // Mailing list
QVariantList headerListPost = \
index.data(Imap::Mailbox::RoleMessageHeaderListPost).toList(); if \
(!headerListPost.isEmpty()) { QStringList buf;
@@ -93,28 +171,15 @@ void EnvelopeView::setMessage(const QModelIndex &index)
buf << item.toUrl().toString().toHtmlEscaped();
}
}
- auto lbl = new QLabel(tr("<b>Mailing List:</b> %1").arg(buf.join(tr(", \
")))); + auto lbl = new \
QLabel(QString(QLatin1String("<html> %1</html>")).arg(buf.join(tr(", ")))); \
SET_LABEL_OPTIONS(lbl)
- layout()->addWidget(lbl);
- }
- if (!e.to.isEmpty()) {
- layout()->addWidget(new AddressRowWidget(this, tr("To"), e.to, \
m_messageView));
- }
- if (!e.cc.isEmpty()) {
- layout()->addWidget(new AddressRowWidget(this, tr("Cc"), e.cc, \
m_messageView));
- }
- if (!e.bcc.isEmpty()) {
- layout()->addWidget(new AddressRowWidget(this, tr("Bcc"), e.bcc, \
m_messageView));
- }
- auto lbl = new QLabel(tr("<b>Subject:</b> %1").arg(e.subject.toHtmlEscaped()), \
this);
- SET_LABEL_OPTIONS(lbl)
- layout()->addWidget(lbl);
- if (e.date.isValid()) {
- const QString &date = \
e.date.toLocalTime().toString(Qt::SystemLocaleLongDate);
- auto lbl = new QLabel(tr("<b>Date:</b> %1").arg(date.toHtmlEscaped()), \
this);
- SET_LABEL_OPTIONS(lbl)
- layout()->addWidget(lbl);
+ ADD_ROW(tr("Mailing List"), lbl)
}
+
+ // separating the message
+ QFrame *line = new QFrame(this);
+ line->setFrameStyle(QFrame::HLine|QFrame::Plain);
+ layout()->addWidget(line);
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic