94 lines
2.2 KiB
C++
94 lines
2.2 KiB
C++
// For license of this file, see <project-root-folder>/LICENSE.md.
|
|
|
|
#ifndef MESSAGEPREVIEWER_H
|
|
#define MESSAGEPREVIEWER_H
|
|
|
|
#include "core/message.h"
|
|
#include "gui/tabcontent.h"
|
|
#include "services/abstract/label.h"
|
|
#include "services/abstract/rootitem.h"
|
|
|
|
#include <QAction>
|
|
#include <QPointer>
|
|
#include <QToolButton>
|
|
#include <QUrl>
|
|
|
|
class QGridLayout;
|
|
class QStackedLayout;
|
|
class QToolBar;
|
|
class WebBrowser;
|
|
class ItemDetails;
|
|
|
|
class LabelToolbarAction : public QAction {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit LabelToolbarAction(QObject* parent = nullptr);
|
|
|
|
Label* label() const;
|
|
void setLabel(Label* label);
|
|
|
|
private:
|
|
QPointer<Label> m_label;
|
|
};
|
|
|
|
class MessagePreviewer : public TabContent {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit MessagePreviewer(QWidget* parent = nullptr);
|
|
virtual ~MessagePreviewer();
|
|
|
|
void reloadFontSettings();
|
|
|
|
virtual WebBrowser* webBrowser() const;
|
|
|
|
public slots:
|
|
void setToolbarsVisible(bool visible);
|
|
void clear();
|
|
|
|
void showItemDetails(RootItem* item);
|
|
void loadUrl(const QString& url);
|
|
void loadMessage(const Message& message, RootItem* root);
|
|
|
|
private slots:
|
|
void switchLabel(bool assign);
|
|
void markMessageAsRead();
|
|
void markMessageAsUnread();
|
|
void markMessageAsReadUnread(RootItem::ReadStatus read);
|
|
void switchMessageImportance(bool checked);
|
|
|
|
signals:
|
|
void markMessageRead(int id, RootItem::ReadStatus read);
|
|
void markMessageImportant(int id, RootItem::Importance important);
|
|
void setMessageLabelIds(int id, const QStringList& ids);
|
|
|
|
private:
|
|
void createConnections();
|
|
void updateButtons();
|
|
void updateLabels(bool only_clear);
|
|
|
|
void ensureItemDetailsVisible();
|
|
void ensureDefaultBrowserVisible();
|
|
|
|
QGridLayout* m_mainLayout;
|
|
QStackedLayout* m_viewerLayout;
|
|
QToolBar* m_toolBar;
|
|
WebBrowser* m_msgBrowser;
|
|
Message m_message;
|
|
QPointer<RootItem> m_root;
|
|
QAction* m_actionMarkRead;
|
|
QAction* m_actionMarkUnread;
|
|
QAction* m_actionSwitchImportance;
|
|
QAction* m_separator;
|
|
QList<LabelToolbarAction*> m_btnLabels;
|
|
ItemDetails* m_itemDetails;
|
|
bool m_toolbarVisible;
|
|
|
|
static const int INDEX_DEFAULT = 0;
|
|
static const int INDEX_ITEMS = 1;
|
|
static const int INDEX_CUSTOM = 2;
|
|
};
|
|
|
|
#endif // MESSAGEPREVIEWER_H
|