rssguard/src/librssguard/gui/messagepreviewer.h

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