summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/sound.cpp31
-rw-r--r--library/sound.h2
2 files changed, 33 insertions, 0 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:
@@ -140,2 +143,11 @@ public:
+ /*
+ * 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: