-rw-r--r-- | library/sound.cpp | 35 | ||||
-rw-r--r-- | library/sound.h | 2 |
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 @@ -104,2 +104,5 @@ static int WAVsoundDuration(const QString& filename) class SoundData : public QSound { + Q_OBJECT +signals: + void stopped(); public: @@ -135,7 +138,16 @@ public: - bool isFinished ( ) const + bool isFinished ( ) const { - return ( loopsleft == 0 ); + return ( loopsleft == 0 ); } + /* + * non virtual reimplementation + * @internal + */ + void killTimers() { + QObject::killTimers(); + emit stopped(); + } + private: @@ -148,2 +160,17 @@ private: + +/* + * @internal + * Using sender() when the slot is called is unsafe! + * + * @param snd instance + * @param obj The QObject to be called + * @param slot connect SIGNAL(stopped()) to slot + */ +void register_qpe_sound_finished( Sound* snd, QObject* obj, const char* slot ) { +#ifndef QT_NO_SOUND + QObject::connect(snd->d, SIGNAL(stopped()), obj, slot ); +#endif +} + /*! Opens a wave sound file \a name for playing @@ -170,2 +197,3 @@ void Sound::play() #ifndef QT_NO_SOUND + d->killTimers(); d->playLoop(1); @@ -222 +250,4 @@ void Sound::soundAlarm() */ + + +#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 @@ -24,4 +24,6 @@ class QString; class SoundData; +class QObject; class Sound { + /*INTERNAL*/ friend void register_qpe_sound_finished( Sound*, QObject *obj, const char* slot); public: |