File indexing completed on 2024-11-24 04:53:03

0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
0002 
0003    This file is part of the Trojita Qt IMAP e-mail client,
0004    http://trojita.flaska.net/
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 
0023 #ifndef GUI_PARTWIDGETFACTORYVISITOR_H
0024 #define GUI_PARTWIDGETFACTORYVISITOR_H
0025 
0026 #include "Gui/PartWalker.h"
0027 #include "UiUtils/PartVisitor.h"
0028 
0029 namespace Imap {
0030 namespace Network {
0031 class MsgPartNetAccessManager;
0032 }
0033 }
0034 
0035 namespace Gui {
0036 
0037 class MessageView;
0038 
0039 /** @short Build widget displaying message parts
0040 
0041 This class defines how different message parts are displayed, returning QWidget.
0042 It is used by PartWalker which traverses the mail tree and builds up a messageView.
0043  */
0044 class PartWidgetFactoryVisitor: public UiUtils::PartVisitor<QWidget *, MessageView *>
0045 {
0046 public:
0047     virtual ~PartWidgetFactoryVisitor();
0048     virtual QWidget *visitError(QString text, QWidget *parent);
0049     virtual QWidget *visitLoadablePart(QWidget *parent, Imap::Network::MsgPartNetAccessManager *manager, const QModelIndex &part,
0050                                             PartWidgetFactory *factory, int recursionDepth,
0051                                             const UiUtils::PartLoadingOptions loadingMode);
0052     virtual QWidget *visitAttachmentPart(QWidget *parent, Imap::Network::MsgPartNetAccessManager *manager, const QModelIndex &m_partIndex,
0053                                       MessageView *messageView, QWidget *contentView);
0054     virtual QWidget *visitMultipartAlternative(QWidget *parent, PartWidgetFactory *factory, const QModelIndex &partIndex,
0055                                                   const int recursionDepth, const UiUtils::PartLoadingOptions options);
0056     virtual QWidget *visitMultipartEncryptedView(QWidget *parent, PartWidgetFactory *factory, const QModelIndex &partIndex, const int recursionDepth,
0057                                               const UiUtils::PartLoadingOptions loadingOptions);
0058     virtual QWidget *visitMultipartSignedView(QWidget *parent, PartWidgetFactory *factory, const QModelIndex &partIndex, const int recursionDepth,
0059                                               const UiUtils::PartLoadingOptions loadingOptions);
0060     virtual QWidget *visitGenericMultipartView(QWidget *parent,
0061                                               PartWidgetFactory *factory, const QModelIndex &partIndex,
0062                                               int recursionDepth, const UiUtils::PartLoadingOptions options);
0063     virtual QWidget *visitMessage822View(QWidget *parent,
0064                                  PartWidgetFactory *factory, const QModelIndex &partIndex,
0065                                  int recursionDepth, const UiUtils::PartLoadingOptions options);
0066     virtual QWidget *visitSimplePartView(QWidget *parent, Imap::Network::MsgPartNetAccessManager *manager, const QModelIndex &partIndex,
0067                                  MessageView *messageView);
0068     virtual void applySetHidden(QWidget *view);
0069 };
0070 
0071 }
0072 
0073 #endif // GUI_PARTWIDGETFACTORYVISITOR_H