Backport r950340 | aacid | 2009-04-06 23:21:18 +0200 (Mon, 06 Apr 2009) | 4 lines
[kdepim.git] / kmail / bodyvisitor.h
blob54fb887d2a501f5f3b97b42230e80d5a4746ecbd
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
28 * your version.
31 #ifndef BODYVISITOR_H
32 #define BODYVISITOR_H
34 #include <QList>
35 #include <QStringList>
37 class KMMessagePart;
39 namespace KMail {
41 class AttachmentStrategy;
43 // Base class
44 class BodyVisitor
46 public:
47 BodyVisitor();
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;
61 protected:
62 /**
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 );
68 protected:
69 QList<KMMessagePart*> mParts;
70 QStringList mBasicList;
73 // Factory to create a visitor according to the Attachment Strategy
74 class BodyVisitorFactory
76 public:
77 static BodyVisitor *getVisitor( const AttachmentStrategy *strategy );
80 // Visitor for smart attachment display
81 class BodyVisitorSmart: public BodyVisitor
83 public:
84 BodyVisitorSmart();
86 bool addPartToList( KMMessagePart *part );
89 // Visitor for inline attachment display
90 class BodyVisitorInline: public BodyVisitor
92 public:
93 BodyVisitorInline();
95 bool addPartToList( KMMessagePart *part );
98 // Visitor for hidden attachment display
99 class BodyVisitorHidden: public BodyVisitor
101 public:
102 BodyVisitorHidden();
104 bool addPartToList( KMMessagePart *part );
109 #endif // BODYVISITOR_H