22#include <tdeio/kmimetype.h>
23#include "kplayobject.h"
25#include "kplayobjectfactory.h"
26#include "kplayobjectfactory_p.h"
27#include "kplayobjectcreator.h"
28#include "kioinputstream_impl.h"
29#include "kartsdispatcher.h"
30#include "kartsserver.h"
34#include "kaudiomanagerplay.h"
35#include <flowsystem.h>
36#include <tdeio/netaccess.h>
40KPlayObjectFactory::KPlayObjectFactory(Arts::SoundServerV2 server)
43 m_allowStreaming =
true;
47KPlayObjectFactory::KPlayObjectFactory(
KArtsServer* server)
49 m_server = server->
server();
50 m_allowStreaming =
true;
54KPlayObjectFactory::~KPlayObjectFactory()
58KPlayObject *KPlayObjectFactory::createPlayObject(
const KURL& url,
bool createBUS)
60 KMimeType::Ptr mimetype = KMimeType::findByURL(url);
61 return createPlayObject(url, mimetype->name(), createBUS);
65KPlayObject *KPlayObjectFactory::createPlayObject(
const KURL& _url,
const TQString &mimetype,
bool createBUS)
72 KURL url = TDEIO::NetAccess::mostLocalURL(_url, 0);
74 if(!m_server.isNull())
76 if(mimetype ==
"application/octet-stream" && m_allowStreaming)
78 Arts::TDEIOInputStream instream;
79 instream.openURL(url.
url().latin1());
84 return new KPlayObject(m_server.createPlayObjectForStream(instream,
string(
"audio/x-mp3"), createBUS),
true);
87 return new KPlayObject(m_server.createPlayObjectForURL(
string(TQFile::encodeName(url.
path())),
string(mimetype.latin1()), createBUS),
false);
90 return new KPlayObject();
97KDE::PlayObjectFactory::PlayObjectFactory(Arts::SoundServerV2 server)
103 d->allowStreaming =
true;
107KDE::PlayObjectFactory::PlayObjectFactory(
KArtsServer* server)
110 d->server = server->
server();
113 d->allowStreaming =
true;
117KDE::PlayObjectFactory::~PlayObjectFactory()
125 d->amanPlay = amanPlay;
127 d->helper =
new POFHelper;
130KDE::PlayObject *KDE::PlayObjectFactory::createPlayObject(
const KURL& url,
bool createBUS)
132 KMimeType::Ptr mimetype = KMimeType::findByURL(url);
133 return createPlayObject(url, mimetype->name(), createBUS);
136KDE::PlayObject *KDE::PlayObjectFactory::createPlayObject(
const KURL& _url,
const TQString &mimetype,
bool createBUS)
143 KURL url = TDEIO::NetAccess::mostLocalURL(_url, 0);
146 if ( d->server.isNull() || url.
isEmpty() )
147 return new KDE::PlayObject();
151 if( d->amanPlay && createBUS )
153 kdWarning( 400 ) <<
"KDE::PlayObjectFactory was instructed to use a Synth_AMAN_PLAY for output but the program also asked for a Synth_BUS_UPLINK" <<
endl;
158 if ( url.
isLocalFile() || !d->allowStreaming || (url.
protocol() ==
"audiocd" && mimetype ==
"application/x-cda" && mimeTypes().contains(
"application/x-cda" ) ) )
161 d->playObj =
new KDE::PlayObject( d->server.createPlayObjectForURL(
string( TQFile::encodeName( url.
path() ) ),
string( mimetype.latin1() ), createBUS ),
false );
167 d->playObj =
new KDE::PlayObject( d->server, url,
true, createBUS );
170 if( d->playObj->isNull() )
174 return new KDE::PlayObject();
179 d->helper->po = d->playObj;
180 d->helper->ap = d->amanPlay;
181 if( d->playObj->object().isNull() && d->amanPlay )
182 TQObject::connect( d->playObj, TQ_SIGNAL( playObjectCreated() ), d->helper, TQ_SLOT( connectAmanPlay() ) );
184 d->helper->connectAmanPlay();
190TQStringList KDE::PlayObjectFactory::mimeTypes(
void)
193 Arts::TraderQuery query;
194 vector<Arts::TraderOffer> *offers = query.query();
196 TQStringList results;
197 for(vector<Arts::TraderOffer>::iterator offer = offers->begin();
198 offer != offers->end(); ++offer)
200 vector<string> *mimetypes = (*offer).getProperty(
"MimeType");
202 for(vector<string>::iterator mimetype = mimetypes->begin();
203 mimetype != mimetypes->end(); ++mimetype)
205 TQString
name = TQString(TQString::fromLocal8Bit((*mimetype).c_str())).stripWhiteSpace();
206 if(KMimeType::mimeType(name))
207 results.append(name);
216 for(TQStringList::iterator result = results.begin(); result != results.end(); )
218 TQStringList::iterator previous = result;
220 if(result != results.end() && *result == *previous)
222 results.remove(result);
244void KDE::POFHelper::connectAmanPlay()
247 if( po->object().isNull() )
251 po->object()._node()->start();
252 Arts::connect( po->object(),
"left" , ap->amanPlay(),
"left" );
253 Arts::connect( po->object(),
"right", ap->amanPlay(),
"right" );
256#include "kplayobjectfactory_p.moc"
KArtsDispatcher ensures that an instance of Arts::Dispatcher using an Arts::QIOManager exists.
KArtsServer is a wrapper to conveniently get a reference to a SoundServer, and restart artsd when nec...
Arts::SoundServerV2 server(void)
Get a verified reference to the SoundServerV2, (re)starting artsd using the kcontrol-specified settin...
KDE Wrapper for Arts::Synth_AMAN_PLAY.
TQString protocol() const
TQString url(int _trailing=0, int encoding_hint=0) const
kdbgstream kdWarning(int area=0)
kndbgstream & endl(kndbgstream &s)
kdbgstream kdDebug(int area=0)
TQString name(StdAccel id)