1 /* -*- mode: C++; c-file-style: "gnu" -*-
3 * This file is part of KMail, the KDE mail client.
4 * Copyright (c) 2003 Carsten Burghardt <burghardt@kde.org>
6 * KMail is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License, version 2, as
8 * published by the Free Software Foundation.
10 * KMail is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 * In addition, as a special exception, the copyright holders give
20 * permission to link the code of this program with any edition of
21 * the Qt library by Trolltech AS, Norway (or with modified versions
22 * of Qt that use the same license as Qt), and distribute linked
23 * combinations including the two. You must obey the GNU General
24 * Public License in all respects for all of the code used other than
25 * Qt. If you modify this file, you may extend this exception to
26 * your version of the file, but you are not obligated to do so. If
27 * you do not wish to do so, delete this exception statement from
35 #include <QStringList>
41 class AttachmentStrategy
;
48 virtual ~BodyVisitor();
50 /** Register the parts that should be visited */
51 void visit( KMMessagePart
*part
);
52 void visit( QList
<KMMessagePart
*> &list
);
54 /** Returns a list of parts that should be loaded */
55 QList
<KMMessagePart
*> partsToLoad();
57 /** Decides whether a part should be loaded.
58 This needs to be implemented by a subclass */
59 virtual bool addPartToList( KMMessagePart
*part
) = 0;
63 * Checks if one of the parents needs loaded children
64 * This is needed for multipart/signed where all parts have to be loaded
66 static bool parentNeedsLoading( KMMessagePart
*part
);
69 QList
<KMMessagePart
*> mParts
;
70 QStringList mBasicList
;
73 // Factory to create a visitor according to the Attachment Strategy
74 class BodyVisitorFactory
77 static BodyVisitor
*getVisitor( const AttachmentStrategy
*strategy
);
80 // Visitor for smart attachment display
81 class BodyVisitorSmart
: public BodyVisitor
86 bool addPartToList( KMMessagePart
*part
);
89 // Visitor for inline attachment display
90 class BodyVisitorInline
: public BodyVisitor
95 bool addPartToList( KMMessagePart
*part
);
98 // Visitor for hidden attachment display
99 class BodyVisitorHidden
: public BodyVisitor
104 bool addPartToList( KMMessagePart
*part
);
109 #endif // BODYVISITOR_H