empty previewer for emails
This commit is contained in:
parent
ded2ce26eb
commit
55571a9d44
|
@ -295,6 +295,8 @@ set(SOURCES
|
|||
services/gmail/gui/formeditgmailaccount.h
|
||||
services/gmail/gui/gmailaccountdetails.cpp
|
||||
services/gmail/gui/gmailaccountdetails.h
|
||||
services/gmail/gui/emailpreviewer.h
|
||||
services/gmail/gui/emailpreviewer.cpp
|
||||
services/greader/definitions.h
|
||||
services/greader/greaderentrypoint.cpp
|
||||
services/greader/greaderentrypoint.h
|
||||
|
@ -541,6 +543,7 @@ set(UI_FILES
|
|||
services/gmail/gui/formaddeditemail.ui
|
||||
services/gmail/gui/formdownloadattachment.ui
|
||||
services/gmail/gui/gmailaccountdetails.ui
|
||||
services/gmail/gui/emailpreviewer.ui
|
||||
services/greader/gui/greaderaccountdetails.ui
|
||||
services/newsblur/gui/newsbluraccountdetails.ui
|
||||
services/owncloud/gui/owncloudaccountdetails.ui
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <QKeyEvent>
|
||||
#include <QPainter>
|
||||
#include <QScrollBar>
|
||||
#include <QStackedLayout>
|
||||
#include <QToolBar>
|
||||
#include <QToolTip>
|
||||
|
||||
|
@ -41,22 +42,28 @@ void MessagePreviewer::createConnections() {
|
|||
}
|
||||
|
||||
MessagePreviewer::MessagePreviewer(QWidget* parent)
|
||||
: QWidget(parent), m_layout(new QGridLayout(this)), m_toolBar(new QToolBar(this)),
|
||||
m_separator(nullptr), m_btnLabels(QList<QPair<LabelButton*, QAction*>>()) {
|
||||
m_msgBrowser = new WebBrowser(nullptr, this);
|
||||
: QWidget(parent), m_mainLayout(new QGridLayout(this)), m_viewerLayout(new QStackedLayout(this)),
|
||||
m_toolBar(new QToolBar(this)), m_msgBrowser(new WebBrowser(nullptr, this)), m_separator(nullptr),
|
||||
m_btnLabels(QList<QPair<LabelButton*, QAction*>>()) {
|
||||
|
||||
m_actionSwitchImportance->setCheckable(true);
|
||||
m_toolBar->setOrientation(Qt::Orientation::Vertical);
|
||||
|
||||
// NOTE: To make sure that if we have many labels and short message
|
||||
// that whole toolbar is visible.
|
||||
m_toolBar->setSizePolicy(m_toolBar->sizePolicy().horizontalPolicy(), QSizePolicy::Policy::MinimumExpanding);
|
||||
|
||||
m_layout->setContentsMargins(3, 3, 3, 3);
|
||||
m_layout->addWidget(m_msgBrowser, 0, 1, 1, 1);
|
||||
m_layout->addWidget(m_toolBar, 0, 0, -1, 1);
|
||||
// This layout holds standard article browser on index 0
|
||||
// and optional custom browser on index 1.
|
||||
m_viewerLayout->addWidget(m_msgBrowser);
|
||||
|
||||
m_mainLayout->setContentsMargins(3, 3, 3, 3);
|
||||
m_mainLayout->addLayout(m_viewerLayout, 0, 1, 1, 1);
|
||||
m_mainLayout->addWidget(m_toolBar, 0, 0, -1, 1);
|
||||
|
||||
createConnections();
|
||||
|
||||
m_actionSwitchImportance->setCheckable(true);
|
||||
|
||||
clear();
|
||||
}
|
||||
|
||||
|
@ -77,6 +84,7 @@ WebBrowser* MessagePreviewer::webBrowser() const {
|
|||
|
||||
void MessagePreviewer::clear() {
|
||||
updateLabels(true);
|
||||
ensureDefaultBrowserVisible();
|
||||
m_msgBrowser->clear(false);
|
||||
hide();
|
||||
m_root.clear();
|
||||
|
@ -88,6 +96,7 @@ void MessagePreviewer::hideToolbar() {
|
|||
}
|
||||
|
||||
void MessagePreviewer::loadUrl(const QString& url) {
|
||||
ensureDefaultBrowserVisible();
|
||||
m_msgBrowser->loadUrl(url);
|
||||
}
|
||||
|
||||
|
@ -109,10 +118,9 @@ void MessagePreviewer::loadMessage(const Message& message, RootItem* root) {
|
|||
return it->kind() == RootItem::Kind::Feed && it->customId() == msg_feed_id;
|
||||
})->toFeed();
|
||||
|
||||
// TODO: tady místo na otevření skrze custom previewer, pokud
|
||||
// ho root má.
|
||||
|
||||
if (feed != nullptr && feed->openArticlesDirectly() && !m_message.m_url.isEmpty()) {
|
||||
ensureDefaultBrowserVisible();
|
||||
|
||||
m_msgBrowser->setVerticalScrollBarPosition(0.0);
|
||||
m_msgBrowser->loadUrl(m_message.m_url);
|
||||
}
|
||||
|
@ -120,9 +128,24 @@ void MessagePreviewer::loadMessage(const Message& message, RootItem* root) {
|
|||
CustomMessagePreviewer* custom_previewer = root->getParentServiceRoot()->customMessagePreviewer();
|
||||
|
||||
if (custom_previewer != nullptr) {
|
||||
auto* current_custom_previewer = m_viewerLayout->widget(1);
|
||||
|
||||
if (current_custom_previewer != nullptr) {
|
||||
if (current_custom_previewer != custom_previewer) {
|
||||
m_viewerLayout->removeWidget(current_custom_previewer);
|
||||
m_viewerLayout->addWidget(custom_previewer);
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_viewerLayout->addWidget(custom_previewer);
|
||||
}
|
||||
|
||||
m_viewerLayout->setCurrentIndex(1);
|
||||
custom_previewer->loadMessage(message, m_root);
|
||||
}
|
||||
else {
|
||||
ensureDefaultBrowserVisible();
|
||||
|
||||
m_msgBrowser->loadMessages({ message }, m_root);
|
||||
}
|
||||
}
|
||||
|
@ -249,6 +272,14 @@ void MessagePreviewer::updateLabels(bool only_clear) {
|
|||
}
|
||||
}
|
||||
|
||||
void MessagePreviewer::ensureDefaultBrowserVisible() {
|
||||
if (m_viewerLayout->count() > 1) {
|
||||
m_viewerLayout->removeWidget(m_viewerLayout->widget(1));
|
||||
}
|
||||
|
||||
m_viewerLayout->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
LabelButton::LabelButton(QWidget* parent) : QToolButton(parent), m_label(nullptr) {}
|
||||
|
||||
Label* LabelButton::label() const {
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <QPointer>
|
||||
|
||||
class QGridLayout;
|
||||
class QStackedLayout;
|
||||
class QToolBar;
|
||||
class WebBrowser;
|
||||
|
||||
|
@ -60,8 +61,10 @@ class MessagePreviewer : public QWidget {
|
|||
void createConnections();
|
||||
void updateButtons();
|
||||
void updateLabels(bool only_clear);
|
||||
void ensureDefaultBrowserVisible();
|
||||
|
||||
QGridLayout* m_layout;
|
||||
QGridLayout* m_mainLayout;
|
||||
QStackedLayout* m_viewerLayout;
|
||||
QToolBar* m_toolBar;
|
||||
WebBrowser* m_msgBrowser;
|
||||
Message m_message;
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "services/gmail/definitions.h"
|
||||
#include "services/gmail/gmailentrypoint.h"
|
||||
#include "services/gmail/gmailnetworkfactory.h"
|
||||
#include "services/gmail/gui/emailpreviewer.h"
|
||||
#include "services/gmail/gui/formaddeditemail.h"
|
||||
#include "services/gmail/gui/formdownloadattachment.h"
|
||||
#include "services/gmail/gui/formeditgmailaccount.h"
|
||||
|
@ -97,6 +98,14 @@ bool GmailServiceRoot::wantsBaggedIdsOfExistingMessages() const {
|
|||
return true;
|
||||
}
|
||||
|
||||
CustomMessagePreviewer* GmailServiceRoot::customMessagePreviewer() {
|
||||
if (m_emailPreview.isNull()) {
|
||||
m_emailPreview.reset(new EmailPreviewer());
|
||||
}
|
||||
|
||||
return m_emailPreview.data();
|
||||
}
|
||||
|
||||
bool GmailServiceRoot::downloadAttachmentOnMyOwn(const QUrl& url) const {
|
||||
QString str_url = url.toString();
|
||||
QString attachment_id = str_url.mid(str_url.indexOf(QL1C('?')) + 1);
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include "services/abstract/cacheforserviceroot.h"
|
||||
#include "services/abstract/serviceroot.h"
|
||||
|
||||
#include "services/gmail/gui/emailpreviewer.h"
|
||||
|
||||
class GmailNetworkFactory;
|
||||
|
||||
class GmailServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
||||
|
@ -35,6 +37,7 @@ class GmailServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
|||
const QHash<ServiceRoot::BagOfMessages, QStringList>& stated_messages,
|
||||
const QHash<QString, QStringList>& tagged_messages);
|
||||
virtual bool wantsBaggedIdsOfExistingMessages() const;
|
||||
virtual CustomMessagePreviewer* customMessagePreviewer();
|
||||
|
||||
protected:
|
||||
virtual RootItem* obtainNewTreeForSyncIn() const;
|
||||
|
@ -47,6 +50,7 @@ class GmailServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
|||
void updateTitle();
|
||||
|
||||
private:
|
||||
QScopedPointer<EmailPreviewer> m_emailPreview;
|
||||
GmailNetworkFactory* m_network;
|
||||
QAction* m_actionReply;
|
||||
Message m_replyToMessage;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#include "services/gmail/gui/emailpreviewer.h"
|
||||
|
||||
EmailPreviewer::EmailPreviewer(QWidget* parent) : CustomMessagePreviewer(parent) {
|
||||
m_ui.setupUi(this);
|
||||
}
|
||||
|
||||
EmailPreviewer::~EmailPreviewer() {
|
||||
qDebugNN << LOGSEC_GMAIL << "Email previewer destroyed.";
|
||||
}
|
||||
|
||||
void EmailPreviewer::clear() {}
|
||||
|
||||
void EmailPreviewer::loadMessage(const Message& msg, RootItem* selected_item) {}
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef EMAILPREVIEWER_H
|
||||
#define EMAILPREVIEWER_H
|
||||
|
||||
#include "services/abstract/gui/custommessagepreviewer.h"
|
||||
|
||||
#include "ui_emailpreviewer.h"
|
||||
|
||||
class EmailPreviewer : public CustomMessagePreviewer {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit EmailPreviewer(QWidget* parent = nullptr);
|
||||
virtual ~EmailPreviewer();
|
||||
|
||||
virtual void clear();
|
||||
virtual void loadMessage(const Message& msg, RootItem* selected_item);
|
||||
|
||||
private:
|
||||
Ui::EmailPreviewer m_ui;
|
||||
};
|
||||
|
||||
#endif // EMAILPREVIEWER_H
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>EmailPreviewer</class>
|
||||
<widget class="QWidget" name="EmailPreviewer">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>80</x>
|
||||
<y>90</y>
|
||||
<width>49</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>test</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue