summaryrefslogtreecommitdiff
path: root/library/sound.cpp
authorsandman <sandman>2002-06-09 23:37:26 (UTC)
committer sandman <sandman>2002-06-09 23:37:26 (UTC)
commit65b1a790493272a38b0ac44e219d5186168fabac (patch) (unidiff)
treeb26ebca8644af8e7af68690f13c45cebfd747e49 /library/sound.cpp
parentbb2f23307a6797c4b338b4504de39fdde3678893 (diff)
downloadopie-65b1a790493272a38b0ac44e219d5186168fabac.zip
opie-65b1a790493272a38b0ac44e219d5186168fabac.tar.gz
opie-65b1a790493272a38b0ac44e219d5186168fabac.tar.bz2
Fixed sound handling for iPAQs
New feature: raise volume while playing Alarm sound (confiureable via qpe.conf / Sound / AlarmPercent -- needs a GUI !)
Diffstat (limited to 'library/sound.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/sound.cpp40
1 files changed, 30 insertions, 10 deletions
diff --git a/library/sound.cpp b/library/sound.cpp
index 373fd4c..602fcf0 100644
--- a/library/sound.cpp
+++ b/library/sound.cpp
@@ -25,6 +25,13 @@
25#include <qsound.h> 25#include <qsound.h>
26#include <qfile.h> 26#include <qfile.h>
27 27
28#include <unistd.h>
29#include <fcntl.h>
30#include <sys/ioctl.h>
31#include <sys/soundcard.h>
32
33#include "config.h"
34#include <qmessagebox.h>
28#ifndef QT_NO_SOUND 35#ifndef QT_NO_SOUND
29static int WAVsoundDuration(const QString& filename) 36static int WAVsoundDuration(const QString& filename)
30{ 37{
@@ -99,11 +106,13 @@ public:
99 QSound(Resource::findSound(name)), 106 QSound(Resource::findSound(name)),
100 filename(Resource::findSound(name)) 107 filename(Resource::findSound(name))
101 { 108 {
109 loopsleft=0;
102 } 110 }
103 111
104 void playLoop() 112 void playLoop(int loopcnt = -1)
105 { 113 {
106 // needs server support 114 // needs server support
115 loopsleft = loopcnt;
107 116
108 int ms = WAVsoundDuration(filename); 117 int ms = WAVsoundDuration(filename);
109 if ( ms ) 118 if ( ms )
@@ -111,13 +120,24 @@ public:
111 play(); 120 play();
112 } 121 }
113 122
114 void timerEvent(QTimerEvent*) 123 void timerEvent ( QTimerEvent *e )
115 { 124 {
125 if (loopsleft >= 0) {
126 if (--loopsleft <= 0)
127 killTimer (e->timerId());
128 return;
129 }
116 play(); 130 play();
117 } 131 }
132
133 bool isFinished ( ) const
134 {
135 return ( loopsleft == 0 );
136 }
118 137
119private: 138private:
120 QString filename; 139 QString filename;
140 int loopsleft;
121}; 141};
122#endif 142#endif
123 143
@@ -139,7 +159,7 @@ void Sound::play()
139{ 159{
140#ifndef QT_NO_SOUND 160#ifndef QT_NO_SOUND
141 d->killTimers(); 161 d->killTimers();
142 d->play(); 162 d->playLoop(1);
143#endif 163#endif
144} 164}
145 165
@@ -158,16 +178,16 @@ void Sound::stop()
158#endif 178#endif
159} 179}
160 180
181bool Sound::isFinished() const
182{
183#ifndef QT_NO_SOUND
184 return d->isFinished();
185#endif
186}
161 187
162void Sound::soundAlarm() 188void Sound::soundAlarm()
163{ 189{
164#ifdef QT_QWS_CUSTOM 190#ifndef QT_NO_COP
165# ifndef QT_NO_COP
166 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" ); 191 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" );
167# endif
168#else
169# ifndef QT_NO_SOUND
170 QSound::play(Resource::findSound("alarm"));
171# endif
172#endif 192#endif
173} 193}