1
/*  This file is part of the KDE project
2
    Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
3
4
    This library is free software; you can redistribute it and/or
5
    modify it under the terms of the GNU Lesser General Public
6
    License as published by the Free Software Foundation; either
7
    version 2.1 of the License, or (at your option) version 3, or any
8
    later version accepted by the membership of KDE e.V. (or its
9
    successor approved by the membership of KDE e.V.), Nokia Corporation 
10
    (or its successors, if any) and the KDE Free Qt Foundation, which shall
11
    act as a proxy defined in Section 6 of version 3 of the license.
12
13
    This library is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
    Lesser General Public License for more details.
17
18
    You should have received a copy of the GNU Lesser General Public 
19
    License along with this library.  If not, see <http://www.gnu.org/licenses/>.
20
21
*/
22
23
#ifndef PATH_P_H
24
#define PATH_P_H
25
26
#include "path.h"
27
#include <QtCore/QPair>
28
#include <QtCore/QList>
29
#include <QtCore/QSharedData>
30
#include "effect.h"
31
#include "medianodedestructionhandler_p.h"
32
33
QT_BEGIN_NAMESPACE
34
35
class QObject;
36
37
namespace Phonon
38
{
39
40
class MediaNode;
41
typedef QPair<QObject*, QObject*> QObjectPair;
42
43
44
class PathPrivate : public QSharedData, private MediaNodeDestructionHandler
45
{
46
    friend class Path;
47
    public:
48
        PathPrivate()
49
            : sourceNode(0), sinkNode(0)
50
#ifndef QT_NO_PHONON_EFFECT
51
            , effectsParent(0)
52
#endif //QT_NO_PHONON_EFFECT
53
        {
54
        }
55
56
        ~PathPrivate();
57
58
        MediaNode *sourceNode;
59
        MediaNode *sinkNode;
60
61
    protected:
62
        void phononObjectDestroyed(MediaNodePrivate *);
63
64
#ifndef QT_NO_PHONON_EFFECT
65
        QObject *effectsParent; // used as parent for Effects created in insertEffect
66
        QList<Effect *> effects;
67
#endif
68
    private:
69
        bool executeTransaction( const QList<QObjectPair> &disconnections, const QList<QObjectPair> &connections);
70
#ifndef QT_NO_PHONON_EFFECT
71
        bool removeEffect(Effect *effect);
72
#endif
73
};
74
75
} // namespace Phonon
76
77
QT_END_NAMESPACE
78
79
#endif // PATH_P_H