-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 | |||
@@ -341,15 +341,20 @@ bool ODevice::setDisplayBrightness ( int p) | |||
341 | { | 341 | { |
342 | Q_UNUSED( p ) | 342 | Q_UNUSED( p ) |
343 | return false; | 343 | return false; |
344 | } | 344 | } |
345 | 345 | ||
346 | /** | 346 | /** |
347 | * @return returns the number of steppings on the brightness slider | 347 | * |
348 | * in the Light-'n-Power settings. | 348 | * @return Returns the number of steppings on the brightness slider |
349 | */ | 349 | * in the Light-'n-Power settings. Values smaller zero and bigger |
350 | * than 255 do not make sense. | ||
351 | * | ||
352 | * \sa QSlider::setLineStep | ||
353 | * \sa QSlider::setPageStep | ||
354 | */ | ||
350 | int ODevice::displayBrightnessResolution() const | 355 | int ODevice::displayBrightnessResolution() const |
351 | { | 356 | { |
352 | return 16; | 357 | return 16; |
353 | } | 358 | } |
354 | 359 | ||
355 | /** | 360 | /** |
@@ -708,20 +713,30 @@ void ODevice::remapHeldAction ( int button, const OQCopMessage &action ) | |||
708 | buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction(). message()); | 713 | buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction(). message()); |
709 | 714 | ||
710 | // buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction(). data())); | 715 | // buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction(). data())); |
711 | 716 | ||
712 | QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); | 717 | QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); |
713 | } | 718 | } |
719 | |||
720 | /** | ||
721 | * @internal | ||
722 | */ | ||
714 | void ODevice::virtual_hook(int, void* ){ | 723 | void ODevice::virtual_hook(int, void* ){ |
715 | 724 | ||
716 | } | 725 | } |
717 | 726 | ||
718 | /** | 727 | /** |
728 | * \brief Send a QCOP Message before suspending | ||
729 | * | ||
719 | * Sends a QCOP message to channel QPE/System | 730 | * Sends a QCOP message to channel QPE/System |
720 | * with the message "aboutToSuspend()" if this | 731 | * with the message "aboutToSuspend()" if this |
721 | * is the windowing server | 732 | * is the windowing server. |
733 | * | ||
734 | * Call this in your custom \sa suspend() Method | ||
735 | * before going to suspend. | ||
736 | * | ||
722 | */ | 737 | */ |
723 | void ODevice::sendSuspendmsg() | 738 | void ODevice::sendSuspendmsg() |
724 | { | 739 | { |
725 | if ( isQWS() ) | 740 | if ( isQWS() ) |
726 | return; | 741 | return; |
727 | 742 | ||
@@ -755,22 +770,63 @@ void ODevice::addPreHandler(QWSServer::KeyboardFilter*aFilter) | |||
755 | */ | 770 | */ |
756 | void ODevice::remPreHandler(QWSServer::KeyboardFilter*aFilter) | 771 | void ODevice::remPreHandler(QWSServer::KeyboardFilter*aFilter) |
757 | { | 772 | { |
758 | Opie::Core::OKeyFilter::inst()->remPreHandler(aFilter); | 773 | Opie::Core::OKeyFilter::inst()->remPreHandler(aFilter); |
759 | } | 774 | } |
760 | 775 | ||
776 | |||
777 | /** | ||
778 | * @internal | ||
779 | * | ||
780 | * @see changeMixerForAlarm | ||
781 | */ | ||
761 | void ODevice::playingStopped() { | 782 | void ODevice::playingStopped() { |
762 | const_cast<QObject*>(sender())->disconnect( this ); | 783 | const_cast<QObject*>(sender())->disconnect( this ); |
763 | #ifndef QT_NO_SOUND | 784 | #ifndef QT_NO_SOUND |
764 | if ( d->m_sound >= 0 ) { | 785 | if ( d->m_sound >= 0 ) { |
765 | ::ioctl ( d->m_sound, MIXER_WRITE( d->m_mixer ), &d->m_vol ); | 786 | ::ioctl ( d->m_sound, MIXER_WRITE( d->m_mixer ), &d->m_vol ); |
766 | ::close ( d->m_sound ); | 787 | ::close ( d->m_sound ); |
767 | } | 788 | } |
768 | #endif | 789 | #endif |
769 | } | 790 | } |
770 | 791 | ||
792 | |||
793 | /** | ||
794 | * \brief Change the Volume for the Alarm and set it back after playing is finished | ||
795 | * | ||
796 | * If you play an Alarm Sound you might want to change the Mixer to | ||
797 | * full volume and ignore the user setting. After it \sa Sound::isFinished | ||
798 | * you would turn the volume back to the user preference. | ||
799 | * The problem is that we used to enter the event loop while waiting | ||
800 | * for the sound to be finished triggering all kind of reentrance | ||
801 | * problems what a library shouldn't introduce. | ||
802 | * Instead of manually waiting for the sound to be finished use | ||
803 | * this Method and it will automatically restore the Mixer to | ||
804 | * the user configuration after the sound finished playing. | ||
805 | * | ||
806 | * Note: The onwership of \param snd is not transfered and playing | ||
807 | * is not started in this method. If 'snd' gets deleted before | ||
808 | * playing is finished the volume doesn't get set back to | ||
809 | * the user preference! | ||
810 | * | ||
811 | * \code | ||
812 | * static Sound snd("alarm"); | ||
813 | * if(!snd.isFinished()) | ||
814 | * return; | ||
815 | * | ||
816 | * changeMixerForAlarm( my_channel, "/dev/mixer", &snd ); | ||
817 | * snd.play() | ||
818 | * \endcode | ||
819 | * | ||
820 | * | ||
821 | * | ||
822 | * @param mixer The mixer number/channel to use | ||
823 | * @param file The file name. If you convert from QString use QFile::encodeName | ||
824 | * @param snd The sound to wait for finishing | ||
825 | * | ||
826 | */ | ||
771 | void ODevice::changeMixerForAlarm( int mixer, const char* file, Sound *snd ) { | 827 | void ODevice::changeMixerForAlarm( int mixer, const char* file, Sound *snd ) { |
772 | #ifndef QT_NO_SOUND | 828 | #ifndef QT_NO_SOUND |
773 | if (( d->m_sound = ::open ( file, O_RDWR )) >= 0 ) { | 829 | if (( d->m_sound = ::open ( file, O_RDWR )) >= 0 ) { |
774 | if ( ::ioctl ( d->m_sound, MIXER_READ( mixer ), &d->m_vol ) >= 0 ) { | 830 | if ( ::ioctl ( d->m_sound, MIXER_READ( mixer ), &d->m_vol ) >= 0 ) { |
775 | Config cfg ( "qpe" ); | 831 | Config cfg ( "qpe" ); |
776 | cfg. setGroup ( "Volume" ); | 832 | cfg. setGroup ( "Volume" ); |