From ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- arts/kde/kplayobjectfactory.h | 156 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 arts/kde/kplayobjectfactory.h (limited to 'arts/kde/kplayobjectfactory.h') diff --git a/arts/kde/kplayobjectfactory.h b/arts/kde/kplayobjectfactory.h new file mode 100644 index 000000000..2f9c096fc --- /dev/null +++ b/arts/kde/kplayobjectfactory.h @@ -0,0 +1,156 @@ + /* + + Copyright (C) 2001 Nikolas Zimmermann + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + */ + +#ifndef KPLAYOBJECTFACTORY_H +#define KPLAYOBJECTFACTORY_H + +#include +#include + +#include "soundserver.h" +#include "kplayobject.h" + +class KArtsServer; + +class KDE_EXPORT KPlayObjectFactory +{ +public: + /** + * Constructs a new Factory for creating aRts playobjects on the + * soundserver. + */ + KPlayObjectFactory(Arts::SoundServerV2 server); + + /** + * Convenience constructor to pass a KArtsServer instead of an + * Arts::SoundServerV2. This equivalent to calling + * KPlayObjectFactory( server.server() ). + * + * @since 3.2 + */ + KPlayObjectFactory(KArtsServer* server); + + ~KPlayObjectFactory(); + + KPlayObject *createPlayObject(const KURL& url, bool createBUS); + KPlayObject *createPlayObject(const KURL& url, const QString &mimetype, bool createBUS); + + void setAllowStreaming(bool s) { m_allowStreaming = s; } + bool allowStreaming() { return m_allowStreaming; } + + bool isAStream() { return m_stream; } + +private: + Arts::SoundServerV2 m_server; + bool m_allowStreaming; + bool m_stream; +}; + +class KAudioManagerPlay; + +namespace KDE { + +class POFHelper; + + /** + * This class implements a factory to create KDE::PlayObjects for + * a given URL and mimetype. A detailed description about how to + * use the KDE multimedia framework can be found in the documentation + * for KDE::PlayObject. + */ +class KDE_EXPORT PlayObjectFactory// : public QObject ### for KDE4 make it a QObject to be able to receive signals +{ +public: + /** + * Creates a KDE::PlayObjectFactory. @p server is an + * Arts::SoundServerV2 + */ + PlayObjectFactory(Arts::SoundServerV2 server); + /** + * Convenience constructor to pass a KArtsServer instead of an + * Arts::SoundServerV2. This equivalent to calling + * KDE::PlayObjectFactory( server.server() ). + * + * @since 3.2 + */ + PlayObjectFactory( KArtsServer* server ); + ~PlayObjectFactory(); + + /** + * If this is set the PlayObject doesn't create a Synth_BUS_UPLINK at all + * but always uses the Synth_AMAN_PLAY that you passed. + */ + void setAudioManagerPlay( KAudioManagerPlay * amanplay ); + + /** + * Creates a KDE::PlayObject to play back the file or stream + * @p url points to. Set @p createBUS to "true", if you want the + * PlayObject to be connected to a SYNTH_BUS_UPLINK on creation. + * This is usually the case. You only need to set this to "false" + * if you want to attach your own sound effects to the PlayObject. + * + * You don't need to know the mimetype of the file or stream, it + * will be detected automatically. + */ + KDE::PlayObject *createPlayObject(const KURL& url, bool createBUS); + + /** + * This method also creates a KDE::PlayObject, but does no automatic + * mimetype detection. Use this method with care. + */ + KDE::PlayObject *createPlayObject(const KURL& url, const QString &mimetype, bool createBUS); + + /** + * setAllowStreaming( true ) allows the factory to create a + * streaming PlayObject for a non-local URL. This is also the default. + * Usually, you should not need to set this to false. + */ + void setAllowStreaming(bool s) { d->allowStreaming = s; } + + /** + * returns "true" if the factory is allowed to create streaming + * PlayObjects. + */ + bool allowStreaming() { return d->allowStreaming; } + + /** + * Return the mimetypes that are playable + */ + static QStringList mimeTypes(void); + +/*private slots: ### KDE4 and remove Helper class + void connectAmanPlay();*/ + +private: + struct PrivateData { + Arts::SoundServerV2 server; + KDE::PlayObject* playObj; + KAudioManagerPlay* amanPlay; + POFHelper* helper; + bool allowStreaming; + bool isStream; + }; + PrivateData* d; +}; + +} +#endif +// vim: sw=4 ts=4 noet -- cgit v1.2.1