diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiouiengine.cpp --- a/radioapp/radiouiengine/src/radiouiengine.cpp Tue Oct 12 11:25:14 2010 +0300 +++ b/radioapp/radiouiengine/src/radiouiengine.cpp Fri Oct 15 16:26:27 2010 +0300 @@ -39,6 +39,7 @@ #include "radiosettings.h" #include "radioscannerengine.h" #include "radiogenrelocalizer.h" +#include "radiotimerpool.h" #include "radiologger.h" // Constants @@ -58,6 +59,8 @@ const QLatin1String RADIO_RANGE_USEURO( "useuro" ); const QLatin1String RADIO_RANGE_JAPAN( "japan" ); +enum TimerId { PowerOff }; + // ====== STATIC FUNCTIONS ======== /*! @@ -180,12 +183,7 @@ { setMute( false ); - Q_D( RadioUiEngine ); - if ( d->mPowerOffTimer ) { - d->mPowerOffTimer->stop(); - d->mPowerOffTimer->deleteLater(); - d->mPowerOffTimer = NULL; - } + cancelTimer( PowerOff, this ); } /*! @@ -193,20 +191,14 @@ */ void RadioUiEngine::setPowerOff( int delay ) { - Q_D( RadioUiEngine ); - d->mEngineWrapper->setMute( true, false ); - if ( delay > 0 ) { - if ( !d->mPowerOffTimer ) { - d->mPowerOffTimer = new QTimer( this ); - Radio::connect( d->mPowerOffTimer, SIGNAL(timeout()), - this, SIGNAL(powerOffRequested()) ); - } - - d->mPowerOffTimer->start( delay ); + startTimer( delay, PowerOff, this, SIGNAL(powerOffRequested()) ); } else { emit powerOffRequested(); } + + Q_D( RadioUiEngine ); + d->mEngineWrapper->setMute( true, false ); } /*! @@ -214,8 +206,7 @@ */ bool RadioUiEngine::isPoweringOff() const { - Q_D( const RadioUiEngine ); - return d->mPowerOffTimer && d->mPowerOffTimer->isActive(); + return isTimerActive( PowerOff, this ); } /*! @@ -476,6 +467,35 @@ } /*! + * + */ +void RadioUiEngine::startTimer( int msec, int id, QObject* receiver, const char* member, QVariant param ) +{ + Q_D( RadioUiEngine ); + d->mTimerPool->startTimer( msec, id, receiver, member, param ); +} + +/*! + * + */ +void RadioUiEngine::cancelTimer( int id, const QObject* receiver ) +{ + Q_D( RadioUiEngine ); + if ( d->mTimerPool ) { + d->mTimerPool->cancelTimer( id, receiver ); + } +} + +/*! + * + */ +bool RadioUiEngine::isTimerActive( int id, const QObject* receiver ) const +{ + Q_D( const RadioUiEngine ); + return d->mTimerPool->isTimerActive( id, receiver ); +} + +/*! * Public slot * volume update command slot for the engine */