# include "UBGraphicsAudioItemDelegate.h"
# include "domain/UBGraphicsAudioItem.h"
# include "domain/UBGraphicsDelegateFrame.h"
# include "UBGraphicsScene.h"
# include "core/memcheck.h"
UBGraphicsAudioItemDelegate : : UBGraphicsAudioItemDelegate ( UBGraphicsAudioItem * pDelegated , QObject * parent )
: UBGraphicsItemDelegate ( pDelegated , parent )
, mDelegated ( pDelegated )
{
//NOOP
}
UBGraphicsAudioItemDelegate : : ~ UBGraphicsAudioItemDelegate ( )
{
//NNOP
}
void UBGraphicsAudioItemDelegate : : buildButtons ( )
{
mPlayPauseButton = new DelegateButton ( " :/images/play.svg " , mDelegated , mFrame ) ;
mStopButton = new DelegateButton ( " :/images/stop.svg " , mDelegated , mFrame ) ;
mStopButton - > hide ( ) ;
if ( mDelegated - > isMuted ( ) )
mMuteButton = new DelegateButton ( " :/images/soundOff.svg " , mDelegated , mFrame ) ;
else
mMuteButton = new DelegateButton ( " :/images/soundOn.svg " , mDelegated , mFrame ) ;
mMuteButton - > hide ( ) ;
connect ( mPlayPauseButton , SIGNAL ( clicked ( bool ) ) , this , SLOT ( togglePlayPause ( ) ) ) ;
connect ( mStopButton , SIGNAL ( clicked ( bool ) ) , mDelegated - > mediaObject ( ) , SLOT ( stop ( ) ) ) ;
connect ( mMuteButton , SIGNAL ( clicked ( bool ) ) , mDelegated , SLOT ( toggleMute ( ) ) ) ;
connect ( mMuteButton , SIGNAL ( clicked ( bool ) ) , this , SLOT ( toggleMute ( ) ) ) ;
connect ( mDelegated - > mediaObject ( ) , SIGNAL ( stateChanged ( Phonon : : State , Phonon : : State ) ) , this , SLOT ( mediaStateChanged ( Phonon : : State , Phonon : : State ) ) ) ;
connect ( mDelegated - > mediaObject ( ) , SIGNAL ( finished ( ) ) , this , SLOT ( updatePlayPauseState ( ) ) ) ;
mButtons < < mPlayPauseButton < < mStopButton < < mMuteButton ;
}
void UBGraphicsAudioItemDelegate : : togglePlayPause ( )
{
if ( mDelegated & & mDelegated - > mediaObject ( ) )
{
Phonon : : MediaObject * media = mDelegated - > mediaObject ( ) ;
if ( media - > state ( ) = = Phonon : : StoppedState )
{
media - > play ( ) ;
}
else if ( media - > state ( ) = = Phonon : : PlayingState )
{
if ( media - > remainingTime ( ) < = 0 )
{
media - > stop ( ) ;
media - > play ( ) ;
}
else
{
media - > pause ( ) ;
if ( mDelegated - > scene ( ) )
mDelegated - > scene ( ) - > setModified ( true ) ;
}
}
else if ( media - > state ( ) = = Phonon : : PausedState )
{
if ( media - > remainingTime ( ) < = 0 )
{
media - > stop ( ) ;
}
media - > play ( ) ;
}
else if ( media - > state ( ) = = Phonon : : LoadingState ) {
mDelegated - > mediaObject ( ) - > setCurrentSource ( mDelegated - > mediaFileUrl ( ) ) ;
media - > play ( ) ;
}
else {
qDebug ( ) < < " Media state " < < media - > state ( ) < < " not supported " ;
}
}
}
void UBGraphicsAudioItemDelegate : : toggleMute ( )
{
if ( mDelegated - > isMuted ( ) )
mMuteButton - > setFileName ( " :/images/soundOff.svg " ) ;
else
mMuteButton - > setFileName ( " :/images/soundOn.svg " ) ;
}
void UBGraphicsAudioItemDelegate : : updatePlayPauseState ( )
{
Phonon : : MediaObject * media = mDelegated - > mediaObject ( ) ;
if ( media - > state ( ) = = Phonon : : PlayingState )
mPlayPauseButton - > setFileName ( " :/images/pause.svg " ) ;
else
mPlayPauseButton - > setFileName ( " :/images/play.svg " ) ;
}
void UBGraphicsAudioItemDelegate : : mediaStateChanged ( Phonon : : State newstate , Phonon : : State oldstate )
{
Q_UNUSED ( newstate ) ;
Q_UNUSED ( oldstate ) ;
updatePlayPauseState ( ) ;
}
void UBGraphicsAudioItemDelegate : : remove ( bool canUndo )
{
mDelegated - > mediaObject ( ) - > stop ( ) ;
UBGraphicsItemDelegate : : remove ( canUndo ) ;
}