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 ABSTRACTMEDIASTREAM_P_H
24#define ABSTRACTMEDIASTREAM_P_H
25
26#include "phonon_export.h"
27#include "abstractmediastream.h"
28#include "mediaobject_p.h"
29#include "streaminterface.h"
30
31#include "medianodedestructionhandler_p.h"
32
33QT_BEGIN_NAMESPACE
34
35#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
36
37class MediaObjectPrivate;
38
39namespace Phonon
40{
41class PHONON_EXPORT AbstractMediaStreamPrivate : private MediaNodeDestructionHandler
42{
43 friend class MediaObject;
44 Q_DECLARE_PUBLIC(AbstractMediaStream)
45 public:
46 void setStreamInterface(StreamInterface *);
47 void setMediaObjectPrivate(MediaObjectPrivate *);
48 ~AbstractMediaStreamPrivate();
49
50 protected:
51 AbstractMediaStreamPrivate()
52 : streamSize(0),
53 streamSeekable(false),
54 ignoreWrites(false),
55 streamInterface(0),
56 mediaObjectPrivate(0),
57 errorType(NoError)
58 {
59 }
60
61 virtual void setStreamSize(qint64 newSize);
62 virtual void setStreamSeekable(bool s);
63 virtual void writeData(const QByteArray &data);
64 virtual void endOfData();
65 void phononObjectDestroyed(MediaNodePrivate *);
66
67 AbstractMediaStream *q_ptr;
68 qint64 streamSize;
69 bool streamSeekable;
70 bool ignoreWrites;
71 StreamInterface *streamInterface;
72 MediaObjectPrivate *mediaObjectPrivate;
73 Phonon::ErrorType errorType;
74 QString errorText;
75};
76} // namespace Phonon
77
78#endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM
79
80QT_END_NAMESPACE
81
82#endif // ABSTRACTMEDIASTREAM_P_H
83// vim: sw=4 sts=4 et tw=100
84