--- a/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp Thu Apr 01 23:32:44 2010 +0300
+++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackbuttonbar.cpp Fri Apr 16 18:13:14 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: da1mmcf#21 %
+// Version : %version: da1mmcf#25 %
@@ -36,7 +36,10 @@
QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar(
QMPXVideoPlaybackControlsController* controller )
: mController( controller )
+ , mSeekingState( EMPXNotSeeking )
, mInitialized( false )
+ , mPosition( 0 )
+ , mDuration( 0 )
{
MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::QMPXVideoPlaybackButtonBar"));
}
@@ -72,8 +75,10 @@
//
QGraphicsWidget *widget = loader->findWidget( QString( "rwButton" ) );
HbPushButton *rwButton = qobject_cast<HbPushButton*>( widget );
- connect( rwButton, SIGNAL( pressed() ), this, SLOT( startRWSeeking() ) );
- connect( rwButton, SIGNAL( released() ), this, SLOT( endSeeking() ) );
+ connect( rwButton, SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
+ connect( rwButton, SIGNAL( longPress( QPointF ) ), this, SLOT( rwPressing() ) );
+ connect( rwButton, SIGNAL( released() ), this, SLOT( rwReleased() ) );
+
mButtons.append( rwButton );
//
@@ -101,8 +106,9 @@
//
widget = loader->findWidget( QString( "ffButton" ) );
HbPushButton *ffButton = qobject_cast<HbPushButton*>( widget );
- connect( ffButton, SIGNAL( pressed() ), this, SLOT( startFFSeeking() ) );
- connect( ffButton, SIGNAL( released() ), this, SLOT( endSeeking() ) );
+ connect( ffButton, SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
+ connect( ffButton, SIGNAL( longPress( QPointF ) ), this, SLOT( ffPressing() ) );
+ connect( ffButton, SIGNAL( released() ), this, SLOT( ffReleased() ) );
mButtons.append( ffButton );
//
@@ -135,10 +141,52 @@
connect( detailsButton, SIGNAL( released() ), this, SLOT( openDetailsView() ) );
mButtons.append( detailsButton );
+ //
+ // Attach button
+ //
+ widget = loader->findWidget( QString( "attachButton" ) );
+ HbPushButton *attachButton = qobject_cast<HbPushButton*>( widget );
+ connect( attachButton, SIGNAL( pressed() ), this, SLOT( handleButtonPressed() ) );
+ connect( attachButton, SIGNAL( released() ), mController, SLOT( attachVideo() ) );
+ mButtons.append( attachButton );
+
for ( int i = 0 ; i < EMPXButtonCount ; i++ )
{
mButtons[i]->setFlag( QGraphicsItem::ItemIsFocusable, false );
}
+
+ mDuration = (qreal)mController->fileDetails()->mDuration / (qreal)KPbMilliMultiplier;
+
+ //
+ // obtain layout for aspect ratio which contains all 3 aspect ratio buttons:
+ // natural, stretch, zoom
+ //
+ widget = loader->findWidget( QString( "aspectRatioButtons" ) );
+
+ if ( mController->isAttachOperation() )
+ {
+ //
+ // disable 3 aspect ratio buttons
+ //
+ widget->setVisible( false );
+
+ //
+ // enable "attach" button
+ //
+ mButtons[EMPXButtonAttach]->setVisible( true );
+ }
+ else
+ {
+ //
+ // enable 3 aspect ratio buttons
+ //
+ widget->setVisible( true );
+
+ //
+ // disable "attach" button
+ //
+ mButtons[EMPXButtonAttach]->setVisible( false );
+ }
}
}
@@ -155,46 +203,106 @@
}
// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::startFFSeeking()
+// QMPXVideoPlaybackButtonBar::ffPressing()
// -------------------------------------------------------------------------------------------------
//
-void QMPXVideoPlaybackButtonBar::startFFSeeking()
+void QMPXVideoPlaybackButtonBar::ffPressing()
{
- MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::startFFSeeking()"));
+ MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::ffPressing()"),
+ _L("mSeekingState = %d"), mSeekingState );
+
+ if ( mSeekingState == EMPXNotSeeking )
+ {
+ mSeekingState = EMPXFastForwarding;
+ mButtons[EMPXButtonFF]->setSelected( true );
+
+ mController->handleCommand( EMPXPbvCmdSeekForward );
+ }
+}
- mButtons[EMPXButtonFF]->setSelected( true );
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::rwPressing()
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::rwPressing()
+{
+ MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::rwPressing()"),
+ _L("mSeekingState = %d"), mSeekingState );
- mController->resetDisappearingTimers( EMPXTimerCancel );
- mController->handleCommand( EMPXPbvCmdSeekForward );
+
+ if ( mSeekingState == EMPXNotSeeking )
+ {
+ mSeekingState = EMPXRewinding;
+ mButtons[EMPXButtonRW]->setSelected( true );
+
+ mController->handleCommand( EMPXPbvCmdSeekBackward );
+ }
}
// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::startRWSeeking()
+// QMPXVideoPlaybackButtonBar::ffReleased()
// -------------------------------------------------------------------------------------------------
//
-void QMPXVideoPlaybackButtonBar::startRWSeeking()
+void QMPXVideoPlaybackButtonBar::ffReleased()
{
- MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::startRWSeeking()"));
+ MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::ffReleased()"),
+ _L("mSeekingState = %d"), mSeekingState );
- mButtons[EMPXButtonRW]->setSelected( true );
+ if ( mSeekingState == EMPXFastForwarding )
+ {
+ mSeekingState = EMPXNotSeeking;
+ mController->handleCommand( EMPXPbvCmdEndSeek );
+ mButtons[EMPXButtonFF]->setSelected( false );
+ }
+ else
+ {
+ int temp = mPosition + KMPXFastForward;
+ MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::ffReleased() temp position = %d"), temp);
- mController->resetDisappearingTimers( EMPXTimerCancel );
- mController->handleCommand( EMPXPbvCmdSeekBackward );
+ //
+ // If it has the playing time which is less than KMPXFastForward, ignore
+ //
+ if ( temp < mDuration )
+ {
+ mController->handleCommand( EMPXPbvCmdSetPosition, temp );
+ }
+ }
+
+ mController->resetDisappearingTimers( EMPXTimerReset );
}
// -------------------------------------------------------------------------------------------------
-// QMPXVideoPlaybackButtonBar::endSeeking()
+// QMPXVideoPlaybackButtonBar::rwReleased()
// -------------------------------------------------------------------------------------------------
//
-void QMPXVideoPlaybackButtonBar::endSeeking()
+void QMPXVideoPlaybackButtonBar::rwReleased()
{
- MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::endSeeking()"));
+ MPX_ENTER_EXIT(_L("QMPXVideoPlaybackButtonBar::rwReleased()"),
+ _L("mSeekingState = %d"), mSeekingState );
- mButtons[EMPXButtonFF]->setSelected( false );
- mButtons[EMPXButtonRW]->setSelected( false );
+ if ( mSeekingState == EMPXRewinding )
+ {
+ mSeekingState = EMPXNotSeeking;
+ mController->handleCommand( EMPXPbvCmdEndSeek );
+ mButtons[EMPXButtonRW]->setSelected( false );
+ }
+ else
+ {
+ int temp = mPosition + KMPXRewind;
+ MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::rwReleased() temp position = %d"), temp);
+
+ //
+ // If it played less than KMPXRewind, jump to 0
+ //
+ if ( temp < 0 )
+ {
+ temp = 0;
+ }
+
+ mController->handleCommand( EMPXPbvCmdSetPosition, temp );
+ }
mController->resetDisappearingTimers( EMPXTimerReset );
- mController->handleCommand( EMPXPbvCmdEndSeek );
}
// -------------------------------------------------------------------------------------------------
@@ -217,20 +325,23 @@
{
MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::changeAspectRatio()"));
- mController->resetDisappearingTimers( EMPXTimerReset );
-
- TMPXVideoPlaybackViewCommandIds cmd = EMPXPbvCmdNaturalAspectRatio;
-
- if ( mButtons[EMPXButtonStretch]->isVisible() )
- {
- cmd = EMPXPbvCmdStretchAspectRatio;
+ if ( ! mController->isAttachOperation() )
+ {
+ mController->resetDisappearingTimers( EMPXTimerReset );
+
+ TMPXVideoPlaybackViewCommandIds cmd = EMPXPbvCmdNaturalAspectRatio;
+
+ if ( mButtons[EMPXButtonStretch]->isVisible() )
+ {
+ cmd = EMPXPbvCmdStretchAspectRatio;
+ }
+ else if ( mButtons[EMPXButtonZoom]->isVisible() )
+ {
+ cmd = EMPXPbvCmdZoomAspectRatio;
+ }
+
+ mController->handleCommand( cmd );
}
- else if ( mButtons[EMPXButtonZoom]->isVisible() )
- {
- cmd = EMPXPbvCmdZoomAspectRatio;
- }
-
- mController->handleCommand( cmd );
}
// -------------------------------------------------------------------------------------------------
@@ -245,7 +356,10 @@
{
case EPbStatePlaying:
{
- setEnabled( true );
+ if ( ! isEnabled() )
+ {
+ setEnabled( true );
+ }
mButtons[EMPXButtonPlay]->setVisible( false );
mButtons[EMPXButtonPause]->setVisible( true );
@@ -253,7 +367,10 @@
}
case EPbStatePaused:
{
- setEnabled( true );
+ if ( ! isEnabled() )
+ {
+ setEnabled( true );
+ }
mButtons[EMPXButtonPause]->setVisible( false );
mButtons[EMPXButtonPlay]->setVisible( true );
@@ -263,7 +380,10 @@
case EPbStateInitialising:
case EPbStateBuffering:
{
- setEnabled( false );
+ if ( isEnabled() )
+ {
+ setEnabled( false );
+ }
break;
}
@@ -278,29 +398,32 @@
{
MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::aspectRatioChanged() aspectRatio = %d"), aspectRatio );
- switch( aspectRatio )
+ if ( ! mController->isAttachOperation() )
{
- case EMMFNatural:
- {
- mButtons[EMPXButtonNatural]->setVisible( false );
- mButtons[EMPXButtonStretch]->setVisible( true );
- mButtons[EMPXButtonZoom]->setVisible( false );
- break;
- }
- case EMMFStretch:
+ switch( aspectRatio )
{
- mButtons[EMPXButtonNatural]->setVisible( false );
- mButtons[EMPXButtonStretch]->setVisible( false );
- mButtons[EMPXButtonZoom]->setVisible( true );
- break;
- }
- default:
- {
- mButtons[EMPXButtonNatural]->setVisible( true );
- mButtons[EMPXButtonStretch]->setVisible( false );
- mButtons[EMPXButtonZoom]->setVisible( false );
- break;
- }
+ case EMMFNatural:
+ {
+ mButtons[EMPXButtonNatural]->setVisible( false );
+ mButtons[EMPXButtonStretch]->setVisible( true );
+ mButtons[EMPXButtonZoom]->setVisible( false );
+ break;
+ }
+ case EMMFStretch:
+ {
+ mButtons[EMPXButtonNatural]->setVisible( false );
+ mButtons[EMPXButtonStretch]->setVisible( false );
+ mButtons[EMPXButtonZoom]->setVisible( true );
+ break;
+ }
+ default:
+ {
+ mButtons[EMPXButtonNatural]->setVisible( true );
+ mButtons[EMPXButtonStretch]->setVisible( false );
+ mButtons[EMPXButtonZoom]->setVisible( false );
+ break;
+ }
+ }
}
}
@@ -324,20 +447,23 @@
{
MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::updateWithFileDetails()"));
- if ( ! details->mVideoEnabled ||
- details->mVideoHeight <= 0 ||
- details->mVideoWidth <= 0 ||
- details->mTvOutConnected )
- {
- mButtons[EMPXButtonNatural]->setEnabled( false );
- mButtons[EMPXButtonStretch]->setEnabled( false );
- mButtons[EMPXButtonZoom]->setEnabled( false );
- }
- else
- {
- mButtons[EMPXButtonNatural]->setEnabled( true );
- mButtons[EMPXButtonStretch]->setEnabled( true );
- mButtons[EMPXButtonZoom]->setEnabled( true );
+ if ( ! mController->isAttachOperation() )
+ {
+ if ( ! details->mVideoEnabled ||
+ details->mVideoHeight <= 0 ||
+ details->mVideoWidth <= 0 ||
+ details->mTvOutConnected )
+ {
+ mButtons[EMPXButtonNatural]->setEnabled( false );
+ mButtons[EMPXButtonStretch]->setEnabled( false );
+ mButtons[EMPXButtonZoom]->setEnabled( false );
+ }
+ else
+ {
+ mButtons[EMPXButtonNatural]->setEnabled( true );
+ mButtons[EMPXButtonStretch]->setEnabled( true );
+ mButtons[EMPXButtonZoom]->setEnabled( true );
+ }
}
//
@@ -395,7 +521,7 @@
for ( int i = 0 ; i < EMPXButtonCount ; i++ )
{
QGraphicsItem* widget = mButtons[i]->primitive( HbStyle::P_PushButton_background );
- widget->setVisible( backgrondVisible );
+ widget->setVisible( backgrondVisible );
}
}
@@ -415,4 +541,26 @@
}
}
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackProgressBar::positionChanged
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::positionChanged( int position )
+{
+ MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::positionChanged position = %d"), position );
+
+ mPosition = position;
+}
+
+// -------------------------------------------------------------------------------------------------
+// QMPXVideoPlaybackButtonBar::durationChanged
+// -------------------------------------------------------------------------------------------------
+//
+void QMPXVideoPlaybackButtonBar::durationChanged( int duration )
+{
+ MPX_DEBUG(_L("QMPXVideoPlaybackButtonBar::durationChanged duration = %d"), duration );
+
+ mDuration = duration;
+}
+
//End of file