-rw-r--r-- | libopie2/opiecore/device/odevice.cpp | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp index 2b10034..ec861ee 100644 --- a/libopie2/opiecore/device/odevice.cpp +++ b/libopie2/opiecore/device/odevice.cpp @@ -335,27 +335,32 @@ bool ODevice::setDisplayStatus ( bool on ) * This sets the display brightness * * @param p The brightness to be set on a scale from 0 to 255 * @return success or failure */ bool ODevice::setDisplayBrightness ( int p) { Q_UNUSED( p ) return false; } /** -* @return returns the number of steppings on the brightness slider -* in the Light-'n-Power settings. -*/ + * + * @return Returns the number of steppings on the brightness slider + * in the Light-'n-Power settings. Values smaller zero and bigger + * than 255 do not make sense. + * + * \sa QSlider::setLineStep + * \sa QSlider::setPageStep + */ int ODevice::displayBrightnessResolution() const { return 16; } /** * This sets the display contrast * @param p The contrast to be set on a scale from 0 to 255 * @return success or failure */ bool ODevice::setDisplayContrast ( int p) { @@ -702,32 +707,42 @@ void ODevice::remapHeldAction ( int button, const OQCopMessage &action ) ODeviceButton &b = ( *d->m_buttons ) [button]; b. setHeldAction ( action ); Config buttonFile ( "ButtonSettings" ); buttonFile. setGroup ( "Button" + QString::number ( button )); buttonFile. writeEntry ( "HeldActionChannel", (const char *) b. heldAction(). channel()); buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction(). message()); // buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction(). data())); QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); } + +/** + * @internal + */ void ODevice::virtual_hook(int, void* ){ } /** + * \brief Send a QCOP Message before suspending + * * Sends a QCOP message to channel QPE/System * with the message "aboutToSuspend()" if this - * is the windowing server + * is the windowing server. + * + * Call this in your custom \sa suspend() Method + * before going to suspend. + * */ void ODevice::sendSuspendmsg() { if ( isQWS() ) return; QCopEnvelope ( "QPE/System", "aboutToSuspend()" ); } /** * \brief Prepend the QWSServer::KeyboardFilter to the list of installed KeyFilters * @@ -749,34 +764,75 @@ void ODevice::addPreHandler(QWSServer::KeyboardFilter*aFilter) * * Remove the QWSServer::KeyboardFilter \par aFilter from the List * of Keyfilters. Call this when you delete the KeyFilter! * * @param aFilter The filter to be removed from the Opie::Core::OKeyFilter * @see Opie::Core::ODevice::addPreHandler */ void ODevice::remPreHandler(QWSServer::KeyboardFilter*aFilter) { Opie::Core::OKeyFilter::inst()->remPreHandler(aFilter); } + +/** + * @internal + * + * @see changeMixerForAlarm + */ void ODevice::playingStopped() { const_cast<QObject*>(sender())->disconnect( this ); #ifndef QT_NO_SOUND if ( d->m_sound >= 0 ) { ::ioctl ( d->m_sound, MIXER_WRITE( d->m_mixer ), &d->m_vol ); ::close ( d->m_sound ); } #endif } + +/** + * \brief Change the Volume for the Alarm and set it back after playing is finished + * + * If you play an Alarm Sound you might want to change the Mixer to + * full volume and ignore the user setting. After it \sa Sound::isFinished + * you would turn the volume back to the user preference. + * The problem is that we used to enter the event loop while waiting + * for the sound to be finished triggering all kind of reentrance + * problems what a library shouldn't introduce. + * Instead of manually waiting for the sound to be finished use + * this Method and it will automatically restore the Mixer to + * the user configuration after the sound finished playing. + * + * Note: The onwership of \param snd is not transfered and playing + * is not started in this method. If 'snd' gets deleted before + * playing is finished the volume doesn't get set back to + * the user preference! + * + * \code + * static Sound snd("alarm"); + * if(!snd.isFinished()) + * return; + * + * changeMixerForAlarm( my_channel, "/dev/mixer", &snd ); + * snd.play() + * \endcode + * + * + * + * @param mixer The mixer number/channel to use + * @param file The file name. If you convert from QString use QFile::encodeName + * @param snd The sound to wait for finishing + * + */ void ODevice::changeMixerForAlarm( int mixer, const char* file, Sound *snd ) { #ifndef QT_NO_SOUND if (( d->m_sound = ::open ( file, O_RDWR )) >= 0 ) { if ( ::ioctl ( d->m_sound, MIXER_READ( mixer ), &d->m_vol ) >= 0 ) { Config cfg ( "qpe" ); cfg. setGroup ( "Volume" ); int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); if ( volalarm < 0 ) volalarm = 0; else if ( volalarm > 100 ) volalarm = 100; |