diff --git a/src/gui/messagepreviewer.cpp b/src/gui/messagepreviewer.cpp index 4c7ae55da..a5695cff2 100644 --- a/src/gui/messagepreviewer.cpp +++ b/src/gui/messagepreviewer.cpp @@ -29,11 +29,7 @@ #include -MessagePreviewer::MessagePreviewer(QWidget *parent) : QWidget(parent), - m_ui(new Ui::MessagePreviewer) { - m_ui->setupUi(this); - m_ui->m_txtMessage->viewport()->setAutoFillBackground(true); - +void MessagePreviewer::createConnections() { connect(m_ui->m_txtMessage, &QTextBrowser::anchorClicked, [=](const QUrl &url) { if (!url.isEmpty()) { // User clicked some URL. Open it in external browser or download? @@ -65,11 +61,6 @@ MessagePreviewer::MessagePreviewer(QWidget *parent) : QWidget(parent), tr("Selected hyperlink is invalid.")); } }); - - m_toolBar = new QToolBar(this); - m_toolBar->setOrientation(Qt::Vertical); - m_ui->m_layout->addWidget(m_toolBar, 0, 0, -1, 1); - connect(m_actionMarkRead = m_toolBar->addAction(qApp->icons()->fromTheme("mail-mark-read"), tr("Mark message as read")), &QAction::triggered, this, @@ -89,6 +80,18 @@ MessagePreviewer::MessagePreviewer(QWidget *parent) : QWidget(parent), QToolTip::showText(QCursor::pos(), tr("Click this link to download it or open it with external browser."), this); }); + connect(m_ui->m_txtMessage, &MessageTextBrowser::imageRequested, this, &MessagePreviewer::addMessageImage); +} + +MessagePreviewer::MessagePreviewer(QWidget *parent) : QWidget(parent), + m_ui(new Ui::MessagePreviewer), m_messageImages(QStringList()) { + m_ui->setupUi(this); + m_ui->m_txtMessage->viewport()->setAutoFillBackground(true); + m_toolBar = new QToolBar(this); + m_toolBar->setOrientation(Qt::Vertical); + m_ui->m_layout->addWidget(m_toolBar, 0, 0, -1, 1); + + createConnections(); m_actionSwitchImportance->setCheckable(true); @@ -111,6 +114,7 @@ void MessagePreviewer::reloadFontSettings() { void MessagePreviewer::clear() { m_ui->m_txtMessage->clear(); + m_messageImages.clear(); hide(); } @@ -118,18 +122,23 @@ void MessagePreviewer::clear() { void MessagePreviewer::loadMessage(const Message &message, RootItem *root) { m_message = message; m_root = root; + m_messageImages.clear(); if (!m_root.isNull()) { - updateButtons(); m_actionSwitchImportance->setChecked(m_message.m_isImportant); m_ui->m_txtMessage->setHtml(prepareHtmlForMessage(m_message)); + updateButtons(); show(); m_ui->m_txtMessage->verticalScrollBar()->triggerAction(QScrollBar::SliderToMinimum); } } +void MessagePreviewer::addMessageImage(const QString &image_url) { + m_messageImages.append(image_url); +} + void MessagePreviewer::markMessageAsRead() { if (!m_root.isNull()) { if (m_root->getParentServiceRoot()->onBeforeSetMessagesRead(m_root.data(), diff --git a/src/gui/messagepreviewer.h b/src/gui/messagepreviewer.h index d42aa2c02..7277870d6 100644 --- a/src/gui/messagepreviewer.h +++ b/src/gui/messagepreviewer.h @@ -48,6 +48,7 @@ class MessagePreviewer : public QWidget { void loadMessage(const Message &message, RootItem *root); private slots: + void addMessageImage(const QString &image_url); void markMessageAsRead(); void markMessageAsUnread(); void switchMessageImportance(bool checked); @@ -56,6 +57,7 @@ class MessagePreviewer : public QWidget { void requestMessageListReload(bool mark_current_as_read); private: + void createConnections(); void updateButtons(); QString prepareHtmlForMessage(const Message &message); @@ -63,6 +65,7 @@ class MessagePreviewer : public QWidget { QScopedPointer m_ui; Message m_message; QPointer m_root; + QStringList m_messageImages; QAction *m_actionMarkRead; QAction *m_actionMarkUnread; diff --git a/src/gui/messagetextbrowser.cpp b/src/gui/messagetextbrowser.cpp index e5fbff9ac..953e91d74 100644 --- a/src/gui/messagetextbrowser.cpp +++ b/src/gui/messagetextbrowser.cpp @@ -28,3 +28,8 @@ QVariant MessageTextBrowser::loadResource(int type, const QUrl &name) { return QVariant(); } } + +void MessageTextBrowser::wheelEvent(QWheelEvent *e) { + QTextBrowser::wheelEvent(e); + qApp->settings()->setValue(GROUP(Messages), Messages::PreviewerFontStandard, font().toString()); +} diff --git a/src/gui/messagetextbrowser.h b/src/gui/messagetextbrowser.h index c0a04521c..92f74a422 100644 --- a/src/gui/messagetextbrowser.h +++ b/src/gui/messagetextbrowser.h @@ -17,6 +17,9 @@ class MessageTextBrowser : public QTextBrowser { signals: void imageRequested(const QString &image_url); + protected: + void wheelEvent(QWheelEvent *e); + private: QPixmap m_imagePlaceholder; };