18 #include <Phonon/Path>
19 #include <phonon/audiooutput.h>
20 #include <phonon/abstractmediastream.h>
21 #include <phonon/mediaobject.h>
28 using namespace Okular;
35 : sound( s ), volume( 0.5 ), synchronous( false ), repeat( false ),
40 volume = ls->volume();
41 synchronous = ls->synchronous();
42 repeat = ls->repeat();
59 : m_mediaobject( 0 ), m_output( 0 ), m_buffer( 0 )
67 m_buffer->open( QIODevice::ReadOnly );
69 m_mediaobject->play();
74 m_mediaobject->stop();
80 Phonon::MediaObject * m_mediaobject;
81 Phonon::AudioOutput * m_output;
101 QHash< int, PlayData * >::const_iterator it;
102 QHash< int, PlayData * >::const_iterator itEnd =
m_playing.constEnd();
105 newid = KRandom::random();
107 }
while ( it != itEnd );
114 PlayData * data =
new PlayData();
115 data->m_output =
new Phonon::AudioOutput( Phonon::NotificationCategory );
116 data->m_output->setVolume( si.volume );
117 data->m_mediaobject =
new Phonon::MediaObject();
118 Phonon::createPath(data->m_mediaobject, data->m_output);
122 switch ( si.sound->soundType() )
126 QString url = si.sound->url();
128 if ( !url.isEmpty() )
131 m_mapper.setMapping( data->m_mediaobject, newid );
133 if ( KUrl::isRelativeUrl( url ) )
136 newurl.setFileName( url );
142 data->m_mediaobject->setCurrentSource( newurl );
150 QByteArray filedata = si.sound->data();
151 kDebug(
OkularDebug) <<
"Embedded," << filedata.length();
152 if ( !filedata.isEmpty() )
154 kDebug(
OkularDebug) <<
"Mediaobject:" << data->m_mediaobject;
156 m_mapper.setMapping( data->m_mediaobject, newid );
157 data->m_buffer =
new QBuffer();
158 data->m_buffer->setData( filedata );
159 data->m_mediaobject->setCurrentSource( Phonon::MediaSource( data->m_buffer ) );
173 QObject::connect( data->m_mediaobject, SIGNAL(
finished()), &
m_mapper, SLOT(map()) );
188 QHash< int, PlayData * >::iterator it =
m_playing.find(
id );
192 SoundInfo si = it.value()->m_info;
201 m_mapper.removeMappings( it.value()->m_mediaobject );
209 AudioPlayer::AudioPlayer()
236 SoundInfo si( sound, linksound );
251 #include "audioplayer.moc"
static AudioPlayer * instance()
Gets the instance of the audio player.
bool play(const SoundInfo &si)
Is stored embedded in the document.
Contains information about a sound object.
void playSound(const Sound *sound, const SoundAction *linksound=0)
Enqueue the specified sound for playing, optionally taking more information about the playing from th...
Is stored at external resource (e.g. url)
SoundType soundType() const
Returns the type of the sound object.
AudioPlayerPrivate(AudioPlayer *qq)
void stopPlaybacks()
Tell the AudioPlayer to stop all the playbacks.
QHash< int, PlayData * > m_playing
The Sound action plays a sound on activation.