summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/sound.cpp35
-rw-r--r--library/sound.h2
2 files changed, 35 insertions, 2 deletions
diff --git a/library/sound.cpp b/library/sound.cpp
index ee2aabc..d1e2388 100644
--- a/library/sound.cpp
+++ b/library/sound.cpp
@@ -103,4 +103,7 @@ static int WAVsoundDuration(const QString& filename)
103 103
104class SoundData : public QSound { 104class SoundData : public QSound {
105 Q_OBJECT
106signals:
107 void stopped();
105public: 108public:
106 SoundData ( const QString& name ) : 109 SoundData ( const QString& name ) :
@@ -134,9 +137,18 @@ public:
134 } 137 }
135 138
136 bool isFinished ( ) const 139 bool isFinished ( ) const
137 { 140 {
138 return ( loopsleft == 0 ); 141 return ( loopsleft == 0 );
139 } 142 }
140 143
144 /*
145 * non virtual reimplementation
146 * @internal
147 */
148 void killTimers() {
149 QObject::killTimers();
150 emit stopped();
151 }
152
141private: 153private:
142 QString filename; 154 QString filename;
@@ -147,4 +159,19 @@ private:
147#endif 159#endif
148 160
161
162/*
163 * @internal
164 * Using sender() when the slot is called is unsafe!
165 *
166 * @param snd instance
167 * @param obj The QObject to be called
168 * @param slot connect SIGNAL(stopped()) to slot
169 */
170void register_qpe_sound_finished( Sound* snd, QObject* obj, const char* slot ) {
171#ifndef QT_NO_SOUND
172 QObject::connect(snd->d, SIGNAL(stopped()), obj, slot );
173#endif
174}
175
149/*! Opens a wave sound file \a name for playing 176/*! Opens a wave sound file \a name for playing
150 * Resource is used for finding the file 177 * Resource is used for finding the file
@@ -169,4 +196,5 @@ void Sound::play()
169{ 196{
170#ifndef QT_NO_SOUND 197#ifndef QT_NO_SOUND
198 d->killTimers();
171 d->playLoop(1); 199 d->playLoop(1);
172#endif 200#endif
@@ -221,2 +249,5 @@ void Sound::soundAlarm()
221 \ingroup qtopiaemb 249 \ingroup qtopiaemb
222*/ 250*/
251
252
253#include "sound.moc"
diff --git a/library/sound.h b/library/sound.h
index 9f35107..daef70f 100644
--- a/library/sound.h
+++ b/library/sound.h
@@ -23,6 +23,8 @@
23class QString; 23class QString;
24class SoundData; 24class SoundData;
25class QObject;
25 26
26class Sound { 27class Sound {
28 /*INTERNAL*/ friend void register_qpe_sound_finished( Sound*, QObject *obj, const char* slot);
27public: 29public:
28 Sound(const QString& name); 30 Sound(const QString& name);