- Timestamp:
- Sep 21, 2006, 12:43:03 AM (19 years ago)
- Location:
- psi/trunk/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
psi/trunk/src/common.cpp
r54 r55 1599 1599 lock.unlock(); 1600 1600 } 1601 void add(ulong freq, ulong dur) {1601 void beginSequence() { 1602 1602 lock.lock(); 1603 queue.clear(); // stop the previous sequence 1604 } 1605 void addNote(ulong freq, ulong dur) { 1603 1606 queue.push_back(Beep(freq, dur)); 1607 } 1608 void endSequence() { 1604 1609 lock.unlock(); 1605 1610 if (!sem.available()) … … 1622 1627 }; 1623 1628 QMutex lock; 1624 QSemaphore sem; 1629 QSemaphore sem; // not QWaitCond cause we need level-triggered semantics 1625 1630 QValueList<Beep> queue; 1626 1631 bool terminate; … … 1640 1645 void soundPlay(const QString &str) 1641 1646 { 1642 if(str.startsWith("!beep")) { 1643 QStringList list = QStringList::split(':',str); 1644 if (list[0].length() == 5 /* strlen("!beep") */) { 1645 ulong freq = 0, dur = 0; 1646 if (list.count() == 3) { 1647 freq = list[1].toULong(); 1648 dur = list[2].toULong(); 1649 if (freq < 0x25 || freq > 0x7FFF || 1650 dur == 0 || dur > 3000 /* 3s is the reasonable maximum */) 1651 freq = dur = 0; 1652 } 1647 if (str.startsWith("!beep")) { 1648 QStringList seq = QStringList::split(':',str); 1649 if (seq[0].length() == 5 /* strlen("!beep") */) { 1653 1650 if (beepThread == 0) { 1654 1651 beepThread = new BeepThread(); … … 1658 1655 } 1659 1656 } 1660 if (beepThread) 1661 beepThread->add(freq, dur); 1657 Q_ASSERT(beepThread); 1658 if (beepThread) { 1659 beepThread->beginSequence(); 1660 #if defined(Q_WS_WIN) || defined(Q_WS_PM) 1661 ulong lastDur = 100; 1662 size_t i = 1; 1663 for (; i < seq.count(); ++i) { 1664 QStringList note = QStringList::split(',',seq[i]); 1665 if (note.count() < 1) break; 1666 ulong freq = note[0].toULong(); 1667 if (freq < 0x25 || freq > 0x7FFF) break; 1668 ulong dur = lastDur; 1669 if (note.count() > 2) break; 1670 if (note.count() == 2) { 1671 dur = note[1].toULong(); 1672 // 3s is the reasonable maximum for the duration 1673 if (dur == 0 || dur > 3000) break; 1674 lastDur = dur; 1675 } 1676 beepThread->addNote(freq, dur); 1677 } 1678 if (i == 1) // didn't find a single note 1679 #endif 1680 beepThread->addNote(0, 0); 1681 beepThread->endSequence(); 1682 } 1662 1683 return; 1663 1684 } -
psi/trunk/src/options/opt_sound-ui.ui
r54 r55 103 103 </property> 104 104 <property name="toolTip" stdset="0"> 105 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>105 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 106 106 </property> 107 107 </widget> … … 119 119 </property> 120 120 <property name="toolTip" stdset="0"> 121 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>121 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 122 122 </property> 123 123 </widget> … … 135 135 </property> 136 136 <property name="toolTip" stdset="0"> 137 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>137 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 138 138 </property> 139 139 </widget> … … 159 159 </property> 160 160 <property name="toolTip" stdset="0"> 161 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>161 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 162 162 </property> 163 163 </widget> … … 207 207 </property> 208 208 <property name="toolTip" stdset="0"> 209 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>209 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 210 210 </property> 211 211 </widget> … … 239 239 </property> 240 240 <property name="toolTip" stdset="0"> 241 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>241 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 242 242 </property> 243 243 </widget> … … 319 319 </property> 320 320 <property name="toolTip" stdset="0"> 321 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>321 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 322 322 </property> 323 323 </widget> … … 343 343 </property> 344 344 <property name="toolTip" stdset="0"> 345 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>345 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 346 346 </property> 347 347 </widget> … … 351 351 </property> 352 352 <property name="toolTip" stdset="0"> 353 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>353 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 354 354 </property> 355 355 </widget> … … 367 367 </property> 368 368 <property name="toolTip" stdset="0"> 369 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>369 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 370 370 </property> 371 371 </widget> -
psi/trunk/src/options/opt_sound_events.ui
r54 r55 68 68 </property> 69 69 <property name="toolTip" stdset="0"> 70 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>70 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 71 71 </property> 72 72 </widget> … … 84 84 </property> 85 85 <property name="toolTip" stdset="0"> 86 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>86 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 87 87 </property> 88 88 </widget> … … 140 140 </property> 141 141 <property name="toolTip" stdset="0"> 142 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>142 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 143 143 </property> 144 144 </widget> … … 164 164 </property> 165 165 <property name="toolTip" stdset="0"> 166 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>166 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 167 167 </property> 168 168 </widget> … … 212 212 </property> 213 213 <property name="toolTip" stdset="0"> 214 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>214 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 215 215 </property> 216 216 </widget> … … 244 244 </property> 245 245 <property name="toolTip" stdset="0"> 246 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>246 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 247 247 </property> 248 248 </widget> … … 252 252 </property> 253 253 <property name="toolTip" stdset="0"> 254 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>254 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 255 255 </property> 256 256 </widget> … … 268 268 </property> 269 269 <property name="toolTip" stdset="0"> 270 <string>Enter a filename or <tt>!beep[:freq :duration]</tt> for a system beep</string>270 <string>Enter a filename or <tt>!beep[:freq[,dur]]...</tt> for a system beep</string> 271 271 </property> 272 272 </widget>
Note:
See TracChangeset
for help on using the changeset viewer.