diff -r ce5ada96ab30 -r 5294c000a26d videoplayback/videoplaybackcontrols/src/mpxvideoplaybackmediadetailsviewer.cpp --- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackmediadetailsviewer.cpp Fri Mar 12 15:43:00 2010 +0200 +++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackmediadetailsviewer.cpp Mon Mar 15 12:40:47 2010 +0200 @@ -15,7 +15,8 @@ * */ -// Version : %version: e003sa33#14 % + +// Version : %version: e003sa33#16 % // INCLUDE FILES @@ -55,23 +56,16 @@ // UID of this interface const TUid KFileDetailsCntlPluginUid = {0x2002A59D}; -const TUid KFileDetailsInterfaceUid = {0x2002A5A0}; -// --------------------------------------------------------------------------- -// Local function to cleanup an array -// --------------------------------------------------------------------------- -// -static void CleanupEcomArray( TAny* aArray ) -{ - ( static_cast( aArray ) )->ResetAndDestroy(); - ( static_cast( aArray ) )->Close(); -} +const TUint32 KScrollTimerDelayTickCounts = 2000; // 2000 milliseconds +const TUint32 KInvalidTick = 0; // ============================ MEMBER FUNCTIONS =================================================== CMPXVideoPlaybackMediaDetailsViewer::CMPXVideoPlaybackMediaDetailsViewer( CMPXVideoPlaybackControlsController* aController ) : iController( aController ) + , iScrollTimerDelayBeginningTick( KInvalidTick ) { } @@ -83,26 +77,25 @@ void CMPXVideoPlaybackMediaDetailsViewer::ConstructL() { MPX_DEBUG(_L("CMPXVideoPlaybackMediaDetailsViewer::ConstructL()")); - + iViewerRect = CalculateViewerRectL(); SetRect( TRect(0, 0, iViewerRect.Width(), iViewerRect.Height()) ); - + CreateLabelsL(); SkinChangeL(); - + iBackgroundBitmap = new ( ELeave ) CFbsBitmap(); TSize bitmapSize = Rect().Size(); User::LeaveIfError( iBackgroundBitmap->Create( bitmapSize, EColor16MA ) ); - + iScrollPosition = 0; - iScrollingTextTimer = CPeriodic::NewL( CActive::EPriorityStandard ); - iScrollingTextTimer->Start( + iScrollingTextTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + iScrollingTextTimer->Start( 0, 175000, - TCallBack( CMPXVideoPlaybackMediaDetailsViewer::ScrollFilenameTimer, this ) ); - + TCallBack( CMPXVideoPlaybackMediaDetailsViewer::ScrollFilenameTimer, this ) ); + iShouldPauseScrolling = EFalse; - } // ------------------------------------------------------------------------------------------------- @@ -131,79 +124,79 @@ CMPXVideoPlaybackMediaDetailsViewer::~CMPXVideoPlaybackMediaDetailsViewer() { MPX_DEBUG(_L("CMPXVideoPlaybackMediaDetailsViewer::~CMPXVideoPlaybackMediaDetailsViewer()")); - + if ( iClipnameLabel ) { delete iClipnameLabel; iClipnameLabel = NULL; } - + if ( iTitleLabel ) { delete iTitleLabel; iTitleLabel = NULL; - } - + } + if ( iArtistLabel ) { delete iArtistLabel; iArtistLabel = NULL; - } - + } + if ( iFormatLabel ) { delete iFormatLabel; iFormatLabel = NULL; } - + if ( iResolutionLabel ) { delete iResolutionLabel; iResolutionLabel = NULL; - } - + } + if ( iDurationLabel ) { delete iDurationLabel; iDurationLabel = NULL; - } - + } + if ( iBitrateLabel ) { delete iBitrateLabel; iBitrateLabel = NULL; - } - + } + if ( iLicenseLabel ) { delete iLicenseLabel; iLicenseLabel = NULL; - } - + } + if ( iBackgroundBitmap ) { delete iBackgroundBitmap; iBackgroundBitmap = NULL; - } - + } + if ( iScrollingTextTimer ) { iScrollingTextTimer->Cancel(); delete iScrollingTextTimer; iScrollingTextTimer = NULL; - } - + } + if ( iAdditionalLabel ) { delete iAdditionalLabel; iAdditionalLabel = NULL; - } - + } + if ( iAdditionalString ) { delete iAdditionalString; iAdditionalString = NULL; - } + } } // ------------------------------------------------------------------------------------------------- @@ -223,12 +216,12 @@ case TPointerEvent::EButton1Up: { TRect expandedRect; //make it a bit easier to click the License label - + if ( iLicenseLabel ) { - expandedRect = TRect(iLicenseLabel->Rect().iTl, - TPoint(iLicenseLabel->Rect().iBr.iX, - iLicenseLabel->Rect().iBr.iY * 2 ) ); + expandedRect = TRect(iLicenseLabel->Rect().iTl, + TPoint(iLicenseLabel->Rect().iBr.iX, + iLicenseLabel->Rect().iBr.iY * 2 ) ); } if ( iLicenseLabel && expandedRect.Contains(aPointerEvent.iPosition) ) @@ -236,9 +229,9 @@ LaunchDRMDetailsL(); } else - { - iController->HandleEventL( EMPXControlCmdCloseFileDetailsViewer ); - } + { + iController->HandleEventL( EMPXControlCmdCloseFileDetailsViewer ); + } } } } @@ -248,7 +241,7 @@ // ------------------------------------------------------------------------------------------------- // void CMPXVideoPlaybackMediaDetailsViewer::LaunchDRMDetailsL() -{ +{ iController->iContainer->HandleCommandL(EMPXPbvLaunchDRMDetails); } @@ -257,10 +250,9 @@ // ------------------------------------------------------------------------------------------------- // void CMPXVideoPlaybackMediaDetailsViewer::SkinChangeL() -{ +{ } - // ------------------------------------------------------------------------------------------------- // CMPXVideoPlaybackMediaDetailsViewer::Draw() // ------------------------------------------------------------------------------------------------- @@ -271,16 +263,16 @@ CWindowGc& gc = SystemGc(); gc.SetClippingRect( aRect ); - + this->DrawableWindow()->SetCornerType(EWindowCorner5); - + TRAP_IGNORE( UpdateBackgroundBitmapL() ); gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); gc.BitBlt( Rect().iTl, iBackgroundBitmap ); - - TRAP_IGNORE( FormatLabelsL() ); - - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + + TRAP_IGNORE( FormatLabelsL() ); + + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); } // ------------------------------------------------------------------------------------------------- @@ -290,7 +282,7 @@ void CMPXVideoPlaybackMediaDetailsViewer::FormatLabelsL() const { // FORMAT LABELS - + TInt labelWidth = Rect().iBr.iX; TInt labelHeight = iController->iContainer->Rect().iBr.iY / KMediaDetailsViewerMaxItems; @@ -299,114 +291,114 @@ // License if ( iController->FileDetails()->iDrmProtected ) { - iLicenseLabel->SetExtent( - TPoint(Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded) ) , - TSize( labelWidth, labelHeight ) - ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_LICENSE_HEADING ); + iLicenseLabel->SetExtent( + TPoint(Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded) ) , + TSize( labelWidth, labelHeight ) + ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_LICENSE_HEADING ); CleanupStack::PushL( heading ); - + TBuf licenseField; licenseField.Append(KLeftMargin); licenseField.Append( *heading ); iLicenseLabel->OverrideColorL(EColorLabelText, KRgbDarkBlue); iLicenseLabel->SetTextL(licenseField); - iLicenseLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); + iLicenseLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); iLicenseLabel->SetLabelAlignment(ELayoutAlignCenter); iLicenseLabel->SetUnderlining(ETrue); iLicenseLabel->MakeVisible( ETrue ); rowsAdded++; - + CleanupStack::PopAndDestroy( heading ); - } + } // Filename HBufC* fileName = iController->FileDetails()->GenerateFileNameL(); + if ( fileName && fileName->Length() ) - { - // file name gets populated by HandleScrollFilenameTimer method - iClipnameLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + { + // file name gets populated by HandleScrollFilenameTimer method + iClipnameLabel->SetExtent( + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , TSize( labelWidth, labelHeight ) ); - iClipnameLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); + iClipnameLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); iClipnameLabel->MakeVisible( ETrue ); rowsAdded++; - + delete fileName; - } + } // Mime Type (Format) - if ( iController->FileDetails()->iMimeType - && iController->FileDetails()->iMimeType->Length() ) + if ( iController->FileDetails()->iMimeType && iController->FileDetails()->iMimeType->Length() ) { - iFormatLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + iFormatLabel->SetExtent( + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , TSize( labelWidth, labelHeight ) ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_FORMAT_HEADING ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_FORMAT_HEADING ); CleanupStack::PushL( heading ); - + TBuf formatField; formatField.Append(KLeftMargin); formatField.Append( *heading ); formatField.Append( KHeadingValueSeperator ); TInt allowLen = KMediaDetailsViewerMaxBufLen-formatField.Length(); - formatField.Append( (iController->FileDetails()->iMimeType)->Left(allowLen) ); + formatField.Append( (iController->FileDetails()->iMimeType)->Left(allowLen) ); iFormatLabel->SetTextL(formatField); iFormatLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); - iFormatLabel->MakeVisible( ETrue ); + iFormatLabel->MakeVisible( ETrue ); rowsAdded++; - + CleanupStack::PopAndDestroy( heading ); - } + } // Resolution - if ( iController->FileDetails()->iVideoHeight && - iController->FileDetails()->iVideoWidth ) + if ( iController->FileDetails()->iVideoHeight && iController->FileDetails()->iVideoWidth ) { - iResolutionLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + iResolutionLabel->SetExtent( + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , TSize( labelWidth, labelHeight ) ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_RESOLUTION_HEADING ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_RESOLUTION_HEADING ); CleanupStack::PushL( heading ); - + TBuf resolutionField; resolutionField.Append(KLeftMargin); resolutionField.Append( *heading ); resolutionField.Append( KHeadingValueSeperator ); - resolutionField.AppendNum( iController->FileDetails()->iVideoWidth ); + resolutionField.AppendNum( iController->FileDetails()->iVideoWidth ); resolutionField.Append( KWidthHeightSeparator ); resolutionField.AppendNum( iController->FileDetails()->iVideoHeight); AknTextUtils::DisplayTextLanguageSpecificNumberConversion( resolutionField ); - + iResolutionLabel->SetTextL(resolutionField); iResolutionLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); - iResolutionLabel->MakeVisible( ETrue ); + iResolutionLabel->MakeVisible( ETrue ); rowsAdded++; - + CleanupStack::PopAndDestroy( heading ); - } + } // Duration if ( iController->FileDetails()->iDuration > 0 ) { iDurationLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded) ) , + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded) ) , TSize( labelWidth, labelHeight ) ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_DURATION_HEADING ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_DURATION_HEADING ); CleanupStack::PushL( heading ); - + TBuf durationField; durationField.Append(KLeftMargin); durationField.Append( *heading ); durationField.Append( KHeadingValueSeperator ); - + TInt64 durationInSeconds = iController->FileDetails()->iDuration / 1000; - + HBufC* unitFormatString; + if ( durationInSeconds < 3600 ) // one hour { unitFormatString = StringLoader::LoadLC(R_QTN_TIME_DURAT_MIN_SEC); @@ -415,88 +407,84 @@ { unitFormatString = StringLoader::LoadLC(R_QTN_TIME_DURAT_LONG); } - + TBuf<64> dur; TTime durTime = TTime(durationInSeconds * 1000000); durTime.FormatL(dur, *unitFormatString); - AknTextUtils::DisplayTextLanguageSpecificNumberConversion( dur ); - + AknTextUtils::DisplayTextLanguageSpecificNumberConversion( dur ); + durationField.Append( dur ); iDurationLabel->SetTextL(durationField); iDurationLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); - iDurationLabel->MakeVisible( ETrue ); + iDurationLabel->MakeVisible( ETrue ); rowsAdded++; - + CleanupStack::PopAndDestroy( unitFormatString ); // unitFormatString CleanupStack::PopAndDestroy( heading ); - - } - + } // Bitrate if ( iController->FileDetails()->iBitRate > 0 ) { - iBitrateLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + iBitrateLabel->SetExtent( + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , TSize( labelWidth, labelHeight ) ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_BITRATE_HEADING ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_BITRATE_HEADING ); CleanupStack::PushL( heading ); - + TBuf bitrateField; bitrateField.Append(KLeftMargin); bitrateField.Append( *heading ); bitrateField.Append( KHeadingValueSeperator ); - - HBufC* formattedBitrate = + + HBufC* formattedBitrate = StringLoader::LoadLC(R_MPX_BITRATE_UNITS,iController->FileDetails()->iBitRate / 1000 ); - + bitrateField.Append( *formattedBitrate ); iBitrateLabel->SetTextL(bitrateField); iBitrateLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); - iBitrateLabel->MakeVisible( ETrue ); + iBitrateLabel->MakeVisible( ETrue ); rowsAdded++; CleanupStack::PopAndDestroy( formattedBitrate ); // formattedBitrate CleanupStack::PopAndDestroy( heading ); - } + } // Title - if ( iController->FileDetails()->iTitle - && iController->FileDetails()->iTitle->Length() ) + if ( iController->FileDetails()->iTitle && iController->FileDetails()->iTitle->Length() ) { - iTitleLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , - TSize( labelWidth, labelHeight ) + iTitleLabel->SetExtent( + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + TSize( labelWidth, labelHeight ) ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_TITLE_HEADING ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_TITLE_HEADING ); CleanupStack::PushL( heading ); - + TBuf titleField; titleField.Append(KLeftMargin); titleField.Append( *heading ); titleField.Append( KHeadingValueSeperator ); TInt allowLen = KMediaDetailsViewerMaxBufLen-titleField.Length(); - titleField.Append( (iController->FileDetails()->iTitle)->Left(allowLen) ); + titleField.Append( (iController->FileDetails()->iTitle)->Left(allowLen) ); iTitleLabel->SetTextL(titleField); iTitleLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); iTitleLabel->MakeVisible( ETrue ); rowsAdded++; - - CleanupStack::PopAndDestroy( heading ); - } + + CleanupStack::PopAndDestroy( heading ); + } // Artist - if ( iController->FileDetails()->iArtist - && iController->FileDetails()->iArtist->Length() ) + if ( iController->FileDetails()->iArtist && iController->FileDetails()->iArtist->Length() ) { - iArtistLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + iArtistLabel->SetExtent( + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , TSize( labelWidth, labelHeight ) ); - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_ARTIST_HEADING ); + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_ARTIST_HEADING ); CleanupStack::PushL( heading ); - + TBuf artistField; artistField.Append(KLeftMargin); artistField.Append( *heading ); @@ -507,19 +495,18 @@ iArtistLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin); iArtistLabel->MakeVisible( ETrue ); rowsAdded++; - - CleanupStack::PopAndDestroy( heading ); - } - - + + CleanupStack::PopAndDestroy( heading ); + } + // Additional Label - if ( iAdditionalString && iAdditionalString->Length() ) - { + if ( iAdditionalString && iAdditionalString->Length() ) + { iAdditionalLabel->SetExtent( - TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , + TPoint( Rect().iTl.iX, Rect().iTl.iY + ( labelHeight * rowsAdded ) ) , TSize( labelWidth, labelHeight ) - ); - + ); + TBuf titleField; titleField.Append(KLeftMargin); TInt allowLen = KMediaDetailsViewerMaxBufLen-titleField.Length(); @@ -545,9 +532,9 @@ // ------------------------------------------------------------------------------------------------- // CCoeControl* CMPXVideoPlaybackMediaDetailsViewer::ComponentControl(TInt aIndex) const -{ +{ CCoeControl* control = NULL; - + switch ( aIndex ) { case 0: @@ -580,7 +567,7 @@ default: break; } - + return control; } @@ -598,60 +585,59 @@ // void CMPXVideoPlaybackMediaDetailsViewer::CreateLabelsL() { - // Licence / DRM + // Licence / DRM iLicenseLabel = new (ELeave) CEikLabel; - iLicenseLabel->SetContainerWindowL( *this ); + iLicenseLabel->SetContainerWindowL( *this ); iLicenseLabel->SetTextL( KNullDesC ); // Filename iClipnameLabel = new (ELeave) CEikLabel; - iClipnameLabel->SetContainerWindowL( *this ); - iClipnameLabel->SetTextL( KNullDesC ); + iClipnameLabel->SetContainerWindowL( *this ); + iClipnameLabel->SetTextL( KNullDesC ); iClipnameLabel->SetLabelAlignment( ELayoutAlignBidi ); - + // Title iTitleLabel = new (ELeave) CEikLabel; - iTitleLabel->SetContainerWindowL( *this ); - iTitleLabel->SetTextL( KNullDesC ); + iTitleLabel->SetContainerWindowL( *this ); + iTitleLabel->SetTextL( KNullDesC ); iTitleLabel->SetLabelAlignment( ELayoutAlignBidi ); - + // Artist iArtistLabel = new (ELeave) CEikLabel; - iArtistLabel->SetContainerWindowL( *this ); - iArtistLabel->SetTextL( KNullDesC ); + iArtistLabel->SetContainerWindowL( *this ); + iArtistLabel->SetTextL( KNullDesC ); iArtistLabel->SetLabelAlignment( ELayoutAlignBidi ); - + // Format iFormatLabel = new (ELeave) CEikLabel; - iFormatLabel->SetContainerWindowL( *this ); + iFormatLabel->SetContainerWindowL( *this ); iFormatLabel->SetTextL( KNullDesC ); iFormatLabel->SetLabelAlignment( ELayoutAlignBidi ); - + // Resolution iResolutionLabel = new (ELeave) CEikLabel; - iResolutionLabel->SetContainerWindowL( *this ); - iResolutionLabel->SetTextL( KNullDesC ); + iResolutionLabel->SetContainerWindowL( *this ); + iResolutionLabel->SetTextL( KNullDesC ); iResolutionLabel->SetLabelAlignment( ELayoutAlignBidi ); - + // Duration iDurationLabel = new (ELeave) CEikLabel; - iDurationLabel->SetContainerWindowL( *this ); - iDurationLabel->SetTextL( KNullDesC ); + iDurationLabel->SetContainerWindowL( *this ); + iDurationLabel->SetTextL( KNullDesC ); iDurationLabel->SetLabelAlignment( ELayoutAlignBidi ); - + // Bitrate iBitrateLabel = new (ELeave) CEikLabel; - iBitrateLabel->SetContainerWindowL( *this ); - iBitrateLabel->SetTextL( KNullDesC ); + iBitrateLabel->SetContainerWindowL( *this ); + iBitrateLabel->SetTextL( KNullDesC ); iBitrateLabel->SetLabelAlignment( ELayoutAlignBidi ); // Additional Labels iAdditionalLabel = new (ELeave) CEikLabel; - iAdditionalLabel->SetContainerWindowL( *this ); - iAdditionalLabel->SetTextL( KNullDesC ); + iAdditionalLabel->SetContainerWindowL( *this ); + iAdditionalLabel->SetTextL( KNullDesC ); iAdditionalLabel->SetLabelAlignment( ELayoutAlignBidi ); - -} +} // ----------------------------------------------------------------------------- // CMPXVideoPlaybackMediaDetailsViewer::UpdateBackgroundBitmapL @@ -662,16 +648,15 @@ { TSize bitmapSize = Rect().Size(); - CFbsBitmapDevice* bgBitmapDevice = - CFbsBitmapDevice::NewL( iBackgroundBitmap ); + CFbsBitmapDevice* bgBitmapDevice = CFbsBitmapDevice::NewL( iBackgroundBitmap ); CleanupStack::PushL( bgBitmapDevice ); - + CFbsBitGc* bgBitGc( NULL ); User::LeaveIfError( bgBitmapDevice->CreateContext( bgBitGc ) ); CleanupStack::PushL( bgBitGc ); bgBitGc->SetBrushColor( TRgb(0x708090) ); // slate gray - bgBitGc->Clear(); + bgBitGc->Clear(); CleanupStack::PopAndDestroy( bgBitGc ); CleanupStack::PopAndDestroy( bgBitmapDevice ); @@ -680,22 +665,22 @@ // // Scan line length in 32-bit words TInt scanLineLengthWord = CFbsBitmap::ScanLineLength( bitmapSize.iWidth, EColor16MA) / 4; - + iBackgroundBitmap->LockHeap(); - TUint32* dataAddr = - reinterpret_cast( iBackgroundBitmap->DataAddress() ); + TUint32* dataAddr = reinterpret_cast( iBackgroundBitmap->DataAddress() ); + for ( TInt y = 0; y < bitmapSize.iHeight; y++ ) + { + for ( TInt x = 0; x < bitmapSize.iWidth; x++ ) + { + if ( ( y + x ) & 1 ) { - for ( TInt x = 0; x < bitmapSize.iWidth; x++ ) - { - if ( ( y + x ) & 1 ) - { - // Make this pixel transparent - dataAddr[y * scanLineLengthWord + x] = 0x00000000; - } - } + // Make this pixel transparent + dataAddr[y * scanLineLengthWord + x] = 0x00000000; } - + } + } + iBackgroundBitmap->UnlockHeap(); } @@ -705,9 +690,9 @@ // TInt CMPXVideoPlaybackMediaDetailsViewer::ScrollFilenameTimer( TAny* aPtr ) { - TRAP_IGNORE( - static_cast(aPtr)->HandleScrollFilenameTimerL() - ); + TRAP_IGNORE( + static_cast(aPtr)->HandleScrollFilenameTimerL() + ); return KErrNone; } @@ -716,55 +701,79 @@ // ------------------------------------------------------------------------------------------------- // void CMPXVideoPlaybackMediaDetailsViewer::HandleScrollFilenameTimerL() -{ - HBufC* fileName = iController->FileDetails()->GenerateFileNameL(); - - if ( fileName && fileName->Length() ) +{ + MPX_ENTER_EXIT( _L( "CMPXVideoPlaybackMediaDetailsViewer::HandleScrollFilenameTimerL" ) ); + + TBool skipForTimerDelay = EFalse; + + // add a delay after each complete scrolling + if ( iScrollTimerDelayBeginningTick != KInvalidTick ) { - CleanupStack::PushL( fileName ); - if ( iShouldPauseScrolling ) + if ( ( User::NTickCount() - iScrollTimerDelayBeginningTick ) >= KScrollTimerDelayTickCounts ) + { + iScrollTimerDelayBeginningTick = KInvalidTick; + } + else { - iShouldPauseScrolling = EFalse; - User::After( 2000000 ); // add a 2 second delay after each complete scrolling - } - - TInt length = fileName->Length(); - - HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_FILENAME_HEADING ); - CleanupStack::PushL( heading ); + skipForTimerDelay = ETrue; + } + } + + if ( !skipForTimerDelay && iShouldPauseScrolling ) + { + iShouldPauseScrolling = EFalse; + iScrollTimerDelayBeginningTick = User::NTickCount(); + skipForTimerDelay = ETrue; + } + + // skip the scrolling operation if the loop for delay is going on + if ( !skipForTimerDelay ) + { + HBufC* fileName = iController->FileDetails()->GenerateFileNameL(); + + + if ( fileName && fileName->Length() ) + { + CleanupStack::PushL( fileName ); - TBuf filenameField; - filenameField.Append(KLeftMargin); - filenameField.Append( *heading ); - filenameField.Append( KHeadingValueSeperator ); - - if ( length >= KMediaDetailsViewerVisibleCharacters ) - { - filenameField.Append( fileName->Mid( iScrollPosition, - KMediaDetailsViewerVisibleCharacters ) ); + TInt length = fileName->Length(); + + HBufC* heading = iEikonEnv->AllocReadResourceL( R_MPX_FILENAME_HEADING ); + CleanupStack::PushL( heading ); + + TBuf filenameField; + filenameField.Append(KLeftMargin); + filenameField.Append( *heading ); + filenameField.Append( KHeadingValueSeperator ); - if ( iScrollPosition == (length - KMediaDetailsViewerVisibleCharacters) ) + if ( length >= KMediaDetailsViewerVisibleCharacters ) { - iScrollPosition = 0; - iShouldPauseScrolling = ETrue; + filenameField.Append( fileName->Mid( iScrollPosition, + KMediaDetailsViewerVisibleCharacters ) ); + + if ( iScrollPosition == (length - KMediaDetailsViewerVisibleCharacters) ) + { + iScrollPosition = 0; + iShouldPauseScrolling = ETrue; + } + else + { + iScrollPosition++; + } } else { - iScrollPosition++; + filenameField.Append( *fileName ); + iScrollingTextTimer->Cancel(); // no need to keep the timer active } - } - else - { - filenameField.Append( *fileName ); - iScrollingTextTimer->Cancel(); // no need to keep the timer active + + iClipnameLabel->SetTextL(filenameField); + DrawNow(); + + CleanupStack::PopAndDestroy( heading ); + CleanupStack::PopAndDestroy( fileName ); } - - iClipnameLabel->SetTextL(filenameField); - DrawNow(); - - CleanupStack::PopAndDestroy( heading ); - CleanupStack::PopAndDestroy( fileName ); - } + } } @@ -775,43 +784,43 @@ TInt CMPXVideoPlaybackMediaDetailsViewer::NumOfItemsShownInViewerL() { TInt numOfItems = 0; - + if ( iController->FileDetails()->iDrmProtected ) { numOfItems++; } - + if ( iController->FileDetails()->iClipName ) { numOfItems++; } - + if ( iController->FileDetails()->iMimeType ) { numOfItems++; } - - if ( iController->FileDetails()->iVideoHeight && + + if ( iController->FileDetails()->iVideoHeight && iController->FileDetails()->iVideoWidth ) { numOfItems++; } - + if ( iController->FileDetails()->iDuration > 0 ) { - numOfItems++; + numOfItems++; } - + if ( iController->FileDetails()->iBitRate > 0 ) { - numOfItems++; + numOfItems++; } - + if ( iController->FileDetails()->iTitle ) { numOfItems++; } - + if ( iController->FileDetails()->iArtist ) { numOfItems++; @@ -819,27 +828,27 @@ // Additional File Details CMPXFileDetailsPlugin* addPlugin( NULL ); - + // Use the interface to load the ecom plugin TRAPD ( err, addPlugin = CMPXFileDetailsPlugin::NewL( KFileDetailsCntlPluginUid ) ); // If plugin loaded successfully - if (!err ) + if ( ! err ) { TPtrC addLabel; addLabel.Set( addPlugin->GetAdditionalLabelLC( iController->FileDetails()->iFourCCCode ) ); iAdditionalString = addLabel.AllocL(); - if ( iAdditionalString->Length() ) - { + if ( iAdditionalString->Length() ) + { numOfItems++; } CleanupStack::PopAndDestroy(); // addLabel } - + delete addPlugin; - + return numOfItems; } @@ -850,38 +859,38 @@ TRect CMPXVideoPlaybackMediaDetailsViewer::CalculateViewerRectL() { TInt numOfItems = NumOfItemsShownInViewerL(); - TRect viewerRect; - - // optimize viewer's width for the clipname + TRect viewerRect; + + // optimize viewer's width for the clipname TInt horizontalOffset = 0; TInt filenameLength = iController->FileDetails()->iClipName->Des().Length(); - if ( filenameLength <= KMediaDetailsViewerFilenameMedium ) + if ( filenameLength <= KMediaDetailsViewerFilenameMedium ) { - horizontalOffset = + horizontalOffset = iController->iContainer->Rect().iBr.iX / KMediaDetailsViewerOffsetDivisorMedium; - } + } else { - horizontalOffset = + horizontalOffset = iController->iContainer->Rect().iBr.iX / KMediaDetailsViewerOffsetDivisorMax; } - - TInt eachItemHeight = - iController->iContainer->Rect().iBr.iY / KMediaDetailsViewerMaxItems; - - TInt verticalHalf = iController->iContainer->Rect().iBr.iY / 2; - + + TInt eachItemHeight = iController->iContainer->Rect().iBr.iY / KMediaDetailsViewerMaxItems; + + TInt verticalHalf = iController->iContainer->Rect().iBr.iY / 2; + TInt tLX = (iController->iContainer->Rect().iTl.iX) + horizontalOffset; - TInt bRX = (iController->iContainer->Rect().iBr.iX) - horizontalOffset; - + TInt bRX = (iController->iContainer->Rect().iBr.iX) - horizontalOffset; + TInt tLY = verticalHalf - ( eachItemHeight * numOfItems/2 ); - - // pad for the margins on top and bottom of viewer - TInt bRY = verticalHalf + ( eachItemHeight * numOfItems/2 ) + (KMediaDetailsViewerItemMargin * 2); - + + // pad for the margins on top and bottom of viewer + TInt bRY = + verticalHalf + ( eachItemHeight * numOfItems/2 ) + ( KMediaDetailsViewerItemMargin * 2 ); + viewerRect = TRect( tLX, tLY, bRX, bRY ); - + return viewerRect; } @@ -895,5 +904,4 @@ } - // End of File