Git commit 82711287d2338b5e200a2cd59996de4a61fd6b04 by Jan Kundr?t. Committed on 24/05/2013 at 13:42. Pushed by jkt into branch 'master'.
GUI: propagate signals from nested envelopes to the topmost MessageView M +6 -0 src/Gui/EnvelopeView.cpp M +4 -0 src/Gui/EnvelopeView.h M +2 -2 src/Gui/MessageView.cpp M +2 -0 src/Gui/PartWidget.cpp M +8 -2 src/Gui/PartWidgetFactory.cpp M +6 -1 src/Gui/PartWidgetFactory.h http://commits.kde.org/trojita/82711287d2338b5e200a2cd59996de4a61fd6b04 diff --git a/src/Gui/EnvelopeView.cpp b/src/Gui/EnvelopeView.cpp index 4322deb..c88ac82 100644 --- a/src/Gui/EnvelopeView.cpp +++ b/src/Gui/EnvelopeView.cpp @@ -26,6 +26,7 @@ #else # include <QUrlQuery> #endif +#include "MessageView.h" #include "Imap/Model/ItemRoles.h" #include "Imap/Model/MailboxTree.h" #include "Imap/Model/Model.h" @@ -136,4 +137,9 @@ void EnvelopeView::onLinkHovered(const QString &target) #endif } +void EnvelopeView::connectWithMessageView(MessageView *messageView) +{ + connect(this, SIGNAL(linkActivated(QString)), messageView, SLOT(headerLinkActivated(QString))); +} + } diff --git a/src/Gui/EnvelopeView.h b/src/Gui/EnvelopeView.h index 699825b..142eb81 100644 --- a/src/Gui/EnvelopeView.h +++ b/src/Gui/EnvelopeView.h @@ -27,6 +27,8 @@ namespace Gui { +class MessageView; + /** @short Widget displaying the message envelope */ class EnvelopeView : public QLabel { @@ -36,6 +38,8 @@ public: void setMessage(const QModelIndex &index); + void connectWithMessageView(MessageView *messageView); + private slots: void onLinkHovered(const QString &target); diff --git a/src/Gui/MessageView.cpp b/src/Gui/MessageView.cpp index 5e827f9..4383bc8 100644 --- a/src/Gui/MessageView.cpp +++ b/src/Gui/MessageView.cpp @@ -63,7 +63,7 @@ MessageView::MessageView(QWidget *parent): QWidget(parent) setFocusPolicy(Qt::StrongFocus); // not by the wheel netAccess = new Imap::Network::MsgPartNetAccessManager(this); connect(netAccess, SIGNAL(requestingExternal(QUrl)), this, SLOT(externalsRequested(QUrl))); - factory = new PartWidgetFactory(netAccess, this, this); + factory = new PartWidgetFactory(netAccess, this, this, this); emptyView = new EmbeddedWebView(this, new QNetworkAccessManager(this)); emptyView->setFixedSize(450,300); @@ -90,7 +90,7 @@ MessageView::MessageView(QWidget *parent): QWidget(parent) // the actual mail header m_envelope = new EnvelopeView(headerSection); - connect(m_envelope, SIGNAL(linkActivated(QString)), this, SLOT(headerLinkActivated(QString))); + m_envelope->connectWithMessageView(this); // the tag bar tags = new TagListWidget(headerSection); diff --git a/src/Gui/PartWidget.cpp b/src/Gui/PartWidget.cpp index f1d88ed..523fd97 100644 --- a/src/Gui/PartWidget.cpp +++ b/src/Gui/PartWidget.cpp @@ -27,6 +27,7 @@ #include <QTabBar> #include "EnvelopeView.h" +#include "MessageView.h" #include "PartWidgetFactory.h" #include "Imap/Model/ItemRoles.h" #include "Imap/Model/MailboxTree.h" @@ -175,6 +176,7 @@ Message822Widget::Message822Widget(QWidget *parent, QVBoxLayout *layout = new QVBoxLayout(this); layout->setSpacing(0); EnvelopeView *envelope = new EnvelopeView(0); + envelope->connectWithMessageView(factory->messageView()); envelope->setMessage(partIndex); layout->addWidget(envelope); for (int i = 0; i < partIndex.model()->rowCount(partIndex); ++i) { diff --git a/src/Gui/PartWidgetFactory.cpp b/src/Gui/PartWidgetFactory.cpp index e21f241..42498bc 100644 --- a/src/Gui/PartWidgetFactory.cpp +++ b/src/Gui/PartWidgetFactory.cpp @@ -41,8 +41,9 @@ namespace Gui { -PartWidgetFactory::PartWidgetFactory(Imap::Network::MsgPartNetAccessManager *manager, QObject *wheelEventFilter, QObject *guiInteractionTarget): - manager(manager), wheelEventFilter(wheelEventFilter), guiInteractionTarget(guiInteractionTarget) +PartWidgetFactory::PartWidgetFactory(Imap::Network::MsgPartNetAccessManager *manager, QObject *wheelEventFilter, + QObject *guiInteractionTarget, MessageView *messageView): + manager(manager), wheelEventFilter(wheelEventFilter), guiInteractionTarget(guiInteractionTarget), m_messageView(messageView) { } @@ -173,4 +174,9 @@ QWidget *PartWidgetFactory::create(const QModelIndex &partIndex, int recursionDe return lbl; } +MessageView *PartWidgetFactory::messageView() const +{ + return m_messageView; +} + } diff --git a/src/Gui/PartWidgetFactory.h b/src/Gui/PartWidgetFactory.h index 85ef633..de20cb0 100644 --- a/src/Gui/PartWidgetFactory.h +++ b/src/Gui/PartWidgetFactory.h @@ -31,6 +31,8 @@ class QModelIndex; namespace Gui { +class MessageView; + class PartWidgetFactory { Q_DECLARE_TR_FUNCTIONS(PartWidgetFactory) @@ -42,13 +44,16 @@ public: LOAD_ON_SHOW /**< @short Load the parts only after they have been shown to the user */ } PartLoadingMode; - PartWidgetFactory(Imap::Network::MsgPartNetAccessManager *manager, QObject *wheelEventFilter, QObject *guiInteractionTarget); + PartWidgetFactory(Imap::Network::MsgPartNetAccessManager *manager, QObject *wheelEventFilter, QObject *guiInteractionTarget, + MessageView *messageView); QWidget *create(const QModelIndex &partIndex); QWidget *create(const QModelIndex &partIndex, int recursionDepth, const PartLoadingMode loadingMode = LOAD_IMMEDIATELY); + MessageView *messageView() const; private: Imap::Network::MsgPartNetAccessManager *manager; QObject *wheelEventFilter; QObject *guiInteractionTarget; + MessageView *m_messageView; PartWidgetFactory(const PartWidgetFactory &); // don't implement PartWidgetFactory &operator=(const PartWidgetFactory &); // don't implement
