-rw-r--r-- | library/sound.cpp | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/library/sound.cpp b/library/sound.cpp index 602fcf0..1ff3b3f 100644 --- a/library/sound.cpp +++ b/library/sound.cpp @@ -99,49 +99,53 @@ static int WAVsoundDuration(const QString& filename) //qDebug("%dms",total); return total; } class SoundData : public QSound { public: - SoundData(const QString& name) : - QSound(Resource::findSound(name)), - filename(Resource::findSound(name)) - { - loopsleft=0; - } + SoundData ( const QString& name ) : + QSound ( Resource::findSound ( name )), + filename ( Resource::findSound ( name )) + { + loopsleft=0; + ms = WAVsoundDuration(filename); + } - void playLoop(int loopcnt = -1) - { - // needs server support - loopsleft = loopcnt; + void playLoop ( int loopcnt = -1 ) + { + // needs server support + loopsleft = loopcnt; - int ms = WAVsoundDuration(filename); - if ( ms ) - startTimer(ms > 50 ? ms-50 : 0); // 50 for latency - play(); - } + if ( ms ) + startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency + play ( ); + } void timerEvent ( QTimerEvent *e ) { - if (loopsleft >= 0) { - if (--loopsleft <= 0) - killTimer (e->timerId()); - return; - } - play(); - } + if ( loopsleft >= 0 ) { + if ( --loopsleft <= 0 ) { + killTimer ( e-> timerId ( )); + loopsleft = 0; + return; + } + } + play(); + } - bool isFinished ( ) const - { - return ( loopsleft == 0 ); - } + bool isFinished ( ) const + { + return ( loopsleft == 0 ); + } private: - QString filename; - int loopsleft; + QString filename; + int loopsleft; + int ms; }; + #endif Sound::Sound(const QString& name) { #ifndef QT_NO_SOUND d = new SoundData(name); @@ -155,13 +159,12 @@ Sound::~Sound() #endif } void Sound::play() { #ifndef QT_NO_SOUND - d->killTimers(); d->playLoop(1); #endif } void Sound::playLoop() { @@ -179,12 +182,14 @@ void Sound::stop() } bool Sound::isFinished() const { #ifndef QT_NO_SOUND return d->isFinished(); +#else + return true; #endif } void Sound::soundAlarm() { #ifndef QT_NO_COP |