22 #include <kio/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 <kio/netaccess.h>
40 KPlayObjectFactory::KPlayObjectFactory(Arts::SoundServerV2 server)
43 m_allowStreaming =
true;
47 KPlayObjectFactory::KPlayObjectFactory(
KArtsServer* server)
49 m_server = server->
server();
50 m_allowStreaming =
true;
54 KPlayObjectFactory::~KPlayObjectFactory()
58 KPlayObject *KPlayObjectFactory::createPlayObject(
const KURL& url,
bool createBUS)
60 KMimeType::Ptr mimetype = KMimeType::findByURL(url);
61 return createPlayObject(url, mimetype->name(), createBUS);
65 KPlayObject *KPlayObjectFactory::createPlayObject(
const KURL& _url,
const TQString &mimetype,
bool createBUS)
72 KURL url = KIO::NetAccess::mostLocalURL(_url, 0);
74 if(!m_server.isNull())
76 if(mimetype ==
"application/octet-stream" && m_allowStreaming)
78 Arts::KIOInputStream 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();
103 d->allowStreaming =
true;
110 d->server = server->
server();
113 d->allowStreaming =
true;
117 KDE::PlayObjectFactory::~PlayObjectFactory()
125 d->amanPlay = amanPlay;
127 d->helper =
new POFHelper;
132 KMimeType::Ptr mimetype = KMimeType::findByURL(url);
133 return createPlayObject(url, mimetype->name(), createBUS);
143 KURL url = KIO::NetAccess::mostLocalURL(_url, 0);
146 if ( d->server.isNull() || url.
isEmpty() )
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 );
170 if( d->playObj->isNull() )
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, TQT_SIGNAL( playObjectCreated() ), d->helper, TQT_SLOT( connectAmanPlay() ) );
184 d->helper->connectAmanPlay();
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);
244 void 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"