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