Revision: 201003 RCL_3 PDK_3.0.h
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 22:52:52 +0200
branchRCL_3
changeset 6 7d91903f795f
parent 2 dec420019252
child 8 ce5ada96ab30
Revision: 201003 Kit: 201007
videocollection/hgmyvideos/data/vcxhgmyvideos.rss
videocollection/hgmyvideos/group/vcxhgmyvideos.mmp
videocollection/hgmyvideos/inc/vcxhgmyvideos.hrh
videocollection/hgmyvideos/inc/vcxhgmyvideoscollectionclient.h
videocollection/hgmyvideos/inc/vcxhgmyvideosvideolistimpl.h
videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp
videocollection/hgmyvideos/src/vcxhgmyvideosmainview.cpp
videocollection/hgmyvideos/src/vcxhgmyvideosvideolistimpl.cpp
videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp
videoplayback/inc/mpxvideoplaybackcontrolscontroller.h
videoplayback/videohelix/inc/mpxvideodrmhelper.h
videoplayback/videohelix/inc/mpxvideofiledetails.h
videoplayback/videohelix/src/mpxvideodlmgrif.cpp
videoplayback/videohelix/src/mpxvideodrmhelper.cpp
videoplayback/videohelix/src/mpxvideofiledetails.cpp
videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp
videoplayback/videohelix/src/mpxvideoplaybackstate.cpp
videoplayback/videohelix/src/mpxvideoplayerutility.cpp
videoplayback/videohelix/tsrc/ut_videohelixtest/inc/mpxvideoplayerutility_stub.h
videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideodrmhelper_stub.cpp
videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideoplayerutility_stub.cpp
videoplayback/videoplaybackcontrols/inc/mpxvideoplaybackbutton.h
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackaspectratioicon.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbrandinganimation.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbutton.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbuttonbar.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrol.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackmediadetailsviewer.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp
videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp
videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/conf/ui_videoplaybackcontrolstest.cfg
videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/inc/mpxvpbc_stub.h
videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/mpxvpbc_stub.cpp
videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/mpxvpbuih_stub.cpp
videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/videoplaybackcontrolstestblocks.cpp
videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp
videoplayback/videoplaybackviews/src/mpxvideoplaybackdisplayhandler.cpp
videoplayerapp/mpxvideoplayer/src/mpxvideoplayerappuiengine.cpp
--- a/videocollection/hgmyvideos/data/vcxhgmyvideos.rss	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/data/vcxhgmyvideos.rss	Fri Feb 19 22:52:52 2010 +0200
@@ -30,8 +30,10 @@
 #include <avkon.mbg>
 #include <CommonDialogs.hrh>
 #include <CommonDialogs.rh>
+#ifdef RD_VIDEO_AS_RINGING_TONE
 #include <AiwCommon.hrh>
 #include <AiwCommon.rh>
+#endif
 
 #include <vcxhgmyvideos.mbg>
 
@@ -156,7 +158,8 @@
             cascade = r_vcxhgmyvideos_mark_submenu;
             txt = qtn_options_list;
             },
-        // AIW assign (Use video as)
+#ifdef RD_VIDEO_AS_RINGING_TONE
+            // AIW assign (Use video as)
         MENU_ITEM
             {
             command = EVcxHgMyVideosCmdAiwAssign;
@@ -164,6 +167,7 @@
             txt = qtn_vcx_hg_options_use_video_as;
             flags = EEikMenuItemSpecificListQuery;
             },
+#endif
         MENU_ITEM 
             { 
             command = EVcxHgMyVideosCmdHelp; 
@@ -480,6 +484,7 @@
     softkey_2 = text_softkey_cancel;
     }
 
+#ifdef RD_VIDEO_AS_RINGING_TONE
 //------------------------------------------------------------------------------
 //
 //      r_vcxhgmyvideos_aiw_assign_interest
@@ -518,6 +523,7 @@
             }
         };
     }
+#endif
 
 // -----------------------------------------------------------------------------
 // 
--- a/videocollection/hgmyvideos/group/vcxhgmyvideos.mmp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/group/vcxhgmyvideos.mmp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 */
 
 
-// Version : %version: TB92_24 %
+// Version : %version: TB92_24.1.1 %
 
 #include <platform_paths.hrh>
 #include <bldvariant.hrh>
@@ -54,7 +54,9 @@
 SOURCE                  vcxhgmyvideosvideocopier.cpp
 SOURCE                  vcxhgmyvideosupnpinterface.cpp
 SOURCE                  vcxhgtelephonyclient.cpp
+#ifdef RD_VIDEO_AS_RINGING_TONE 
 SOURCE                  vcxhgmyvideosaiwmenuhandler.cpp
+#endif
 
 USERINCLUDE             ../inc
 USERINCLUDE    ../../../inc
@@ -112,7 +114,6 @@
 LIBRARY                 commondialogs.lib         // Memory selection dialog
 LIBRARY                 drmhelper.lib             // DRM
 LIBRARY                 featmgr.lib               // Feature manager
-LIBRARY                 servicehandler.lib        // AIW Service Handler
 LIBRARY                 centralrepository.lib	  // Upnp
 LIBRARY                 thumbnailmanager.lib      // CThumbnailManager
 LIBRARY                 caf.lib                   // CAF
@@ -127,3 +128,6 @@
 LIBRARY                 upnpcommand.lib
 LIBRARY                 ganes.lib                 // for HgList
 LIBRARY                 ecom.lib
+#ifdef RD_VIDEO_AS_RINGING_TONE
+LIBRARY                 servicehandler.lib        // AIW Service Handler
+#endif
\ No newline at end of file
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideos.hrh	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideos.hrh	Fri Feb 19 22:52:52 2010 +0200
@@ -42,15 +42,19 @@
     EVcxHgMyVideosCmdUnmark,                 // Mark/Unmark submenu: Unmark video 
     EVcxHgMyVideosCmdMarkAll,                // Mark/Unmark submenu: Mark all videos
     EVcxHgMyVideosCmdUnmarkAll,              // Mark/Unmark submenu: Unmark all videos
+#ifdef RD_VIDEO_AS_RINGING_TONE    
     EVcxHgMyVideosCmdAiwAssign,              // Submenu: Placeholder for "Use video as"
+#endif
     EVcxHgMyVideosCmdHelp,                   // Help
     EVcxHgMyVideosCmdExit,                   // Exit Video Storage
     EVcxHgMyVideosCmdToggleMultipleMarking,  // Toggle marking mode state
     EVcxHgMyVideosCmdSend,                   // Send video
     EVcxHgMyVideosCmdNothing,                // Non-functional command
     EVcxHgMyVideosCmdStartMarking,           // Sets marking mode on
-    EVcxHgMyVideosCmdStopMarking,            // Sets marking mode off
-    EVcxHgMyVideosCmdAiwBase = 800           // Base number for AIW commands
+    EVcxHgMyVideosCmdStopMarking             // Sets marking mode off
+#ifdef RD_VIDEO_AS_RINGING_TONE
+    ,EVcxHgMyVideosCmdAiwBase = 800           // Base number for AIW commands
+#endif
     };
 
 enum TVcxHgMyVideosMarkButtonStates
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideoscollectionclient.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideoscollectionclient.h	Fri Feb 19 22:52:52 2010 +0200
@@ -409,11 +409,6 @@
          */
         void DebugPrintVideoListL( CMPXMediaArray* aVideoArray );
 #endif // _DEBUG && IPTV_LOGGING_METHOD        
-        
-        /**
-         * Variable for storing current MPX collection level.
-         */
-        TInt iCollectionLevel;
     };
 
 #endif // VCXHGMYVIDEOSCOLLECTIONCLIENT_H
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideosvideolistimpl.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideosvideolistimpl.h	Fri Feb 19 22:52:52 2010 +0200
@@ -37,8 +37,10 @@
 class CVcxHgTelephonyClient;
 class CHgScroller;
 class CSendUi;
+class CDRMHelper;
+#ifdef RD_VIDEO_AS_RINGING_TONE
 class CHgMyVideosAiwMenuHandler;
-class CDRMHelper;
+#endif
 
 namespace DRM
     {
@@ -266,13 +268,15 @@
          * Send video using SendUI
          */
         void HandleSendL();
-        
+
+#ifdef RD_VIDEO_AS_RINGING_TONE        
         /**
          * Handles command if aCommand is an Aiw command
          * 
          * @param aCommand Menu command ID
          */
         void TryHandleAiwCommandL( TInt aCommand );
+#endif
         
         /**
          * Checks if we are at marking mode and returns
@@ -392,6 +396,7 @@
          */
         CSendUi* SendUiL();
 
+#ifdef RD_VIDEO_AS_RINGING_TONE
         /**
          * Returns pointer to instance of CHgMyVideosAiwMenuHandler.
          * First call creates handler and attaches AIW menu.
@@ -399,6 +404,7 @@
          * @return Pointer to CHgMyVideosAiwMenuHandler
          */
         CHgMyVideosAiwMenuHandler* AiwMenuHandlerL();
+#endif
 
     protected:
     
@@ -454,11 +460,13 @@
          */
         CSendUi* iSendUi;
 
+#ifdef RD_VIDEO_AS_RINGING_TONE
         /** 
          * Aiw Menu Handler
          * Own
          */
         CHgMyVideosAiwMenuHandler* iAiwMenuHandler;
+#endif
 
     };
 
--- a/videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -60,8 +60,7 @@
 //
 CVcxHgMyVideosCollectionClient::CVcxHgMyVideosCollectionClient()
   : iCollectionOpenStatus( EVcxHgCollectionNotOpen ),
-    iPendingCommand( EVcxHgMyVideosCollectionCommandNone ),
-    iCollectionLevel( KErrNotFound )
+    iPendingCommand( EVcxHgMyVideosCollectionCommandNone )
     {
     }
 
@@ -158,15 +157,12 @@
 //
 TInt CVcxHgMyVideosCollectionClient::CollectionLevelL()
     {
-    if ( iCollectionLevel == KErrNotFound )
-        {
-        CMPXCollectionPath* path = iCollectionUtility->Collection().PathL();
-        CleanupStack::PushL( path );
-        iCollectionLevel = path->Levels();
-        CleanupStack::PopAndDestroy( path );
-        }
-		
-    return iCollectionLevel;
+    CMPXCollectionPath* path = iCollectionUtility->Collection().PathL();
+    CleanupStack::PushL( path );
+    TInt collectionLevel = path->Levels();
+    CleanupStack::PopAndDestroy( path );
+
+    return collectionLevel;
     }
 
 // -----------------------------------------------------------------------------
@@ -637,8 +633,6 @@
                     {
                     case TMPXCollectionMessage::EPathChanged:
                         {
-                        iCollectionLevel = KErrNotFound;
-                        
                         if ( data == EMcContainerOpened  )
                             {
                             if ( iCollectionOpenStatus == EVcxHgCollectionOpening )
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosmainview.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosmainview.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 */
 
 
-// Version : %version: TB92_33 %
+// Version : %version: TB92_33.1.1 %
 
 // INCLUDE FILES
 #include <bldvariant.hrh>
@@ -501,9 +501,11 @@
         case EVcxHgMyVideosCmdNothing:
         default:
             {
+#ifdef RD_VIDEO_AS_RINGING_TONE            
             // The command could be an AIW command,  offer it
             // to AIW command handler
             VideoListL()->TryHandleAiwCommandL( aCommand );
+#endif
             }
             break;
         }
@@ -603,7 +605,9 @@
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdVideoDetails, ETrue );
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdStopShowViaHomenet, ETrue );
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdShowViaHomenet, ETrue );
+#ifdef RD_VIDEO_AS_RINGING_TONE
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdAiwAssign, ETrue );
+#endif
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdOpen, ETrue );
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdPlay, ETrue );
         aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdMemoryStatus, ETrue );
@@ -665,7 +669,8 @@
                 break;
                 }
             }
-        }        
+        }   
+#ifdef RD_VIDEO_AS_RINGING_TONE
     else if ( aResourceId == R_VCXHGMYVIDEOS_USE_AS_SUBMENU )
         {
         if ( iModel->AppState() == CVcxHgMyVideosModel::EVcxMyVideosAppStateCategoryIdle )
@@ -676,6 +681,7 @@
         // Let video list handle AIW menu
         VideoListL()->DynInitMenuPaneL( aResourceId, aMenuPane );
         }
+#endif
     else if ( aResourceId == R_VCXHGMYVIDEOS_MARK_SUBMENU )
         {
         if ( iModel->AppState() == CVcxHgMyVideosModel::EVcxMyVideosAppStateCategoryIdle )
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideolistimpl.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideolistimpl.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -57,7 +57,9 @@
 #include "vcxhgmyvideospanics.h"
 #include "vcxhgmyvideosupnpinterface.h"
 #include "vcxhgtelephonyclient.h"
+#ifdef RD_VIDEO_AS_RINGING_TONE
 #include "vcxhgmyvideosaiwmenuhandler.h"
+#endif
 
 _LIT( KVcxHgMyVideosMifFile, "\\resource\\apps\\vcxhgmyvideosicons.mif" );
 
@@ -104,8 +106,10 @@
         CHgScroller& aScroller )
   : CVcxHgMyVideosListBase( aModel, aView, aScroller ),
     iCurrentlyPlayedVideo( KErrNotFound ),
-    iMultipleMarkingActive( EFalse ),
-    iAiwMenuHandler( NULL )
+    iMultipleMarkingActive( EFalse )
+#ifdef RD_VIDEO_AS_RINGING_TONE
+    , iAiwMenuHandler( NULL )
+#endif
     {
     }
 
@@ -184,7 +188,9 @@
     delete iVideoCopier;
     delete iVideoModel;
     delete iSendUi;
+#ifdef RD_VIDEO_AS_RINGING_TONE
     delete iAiwMenuHandler;
+#endif
     }
 
 // -----------------------------------------------------------------------------
@@ -709,11 +715,13 @@
 void CVcxHgMyVideosVideoListImpl::DynInitMenuPaneL( TInt aResourceId,
                                                     CEikMenuPane* aMenuPane )
     {
+#ifdef RD_VIDEO_AS_RINGING_TONE
     if ( AiwMenuHandlerL()->TryHandleSubmenuL( aMenuPane ) )
         {
         // Submenu was initialized by Aiw
         return;
         }
+#endif
 
     RArray<TInt> markedVideos;
     CleanupClosePushL( markedVideos );
@@ -817,7 +825,11 @@
                 {
                 // Place Send menu item on top of "Use as" (Assign) submenu
                 TInt sendItemIndex = 0;
+#ifdef RD_VIDEO_AS_RINGING_TONE                
                 aMenuPane->ItemAndPos( EVcxHgMyVideosCmdAiwAssign, sendItemIndex );
+#else
+                aMenuPane->ItemAndPos( EVcxHgMyVideosCmdSortSubMenu, sendItemIndex );
+#endif
                 // Add Send item to menu
                 TSendingCapabilities capabilities(
                     0,
@@ -837,6 +849,7 @@
             CleanupStack::PopAndDestroy( &operationTargets );
             }
 
+#ifdef RD_VIDEO_AS_RINGING_TONE
         // Assign (use as) menu item
         if ( ( markedVideos.Count() == 0 ) &&
                 ( highlight >= 0 ) && ( count > 0 ) &&
@@ -849,6 +862,7 @@
             // Hide Assign (use as) menu item
             aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdAiwAssign, ETrue );
             }
+#endif
 
         // Marking submenu
         if( count > 0 )
@@ -864,6 +878,7 @@
             aMenuPane->SetItemDimmed( EVcxHgMyVideosCmdSortSubMenu, ETrue );
             }
         }
+#ifdef RD_VIDEO_AS_RINGING_TONE
     else if ( aResourceId == R_VCXHGMYVIDEOS_USE_AS_SUBMENU )
         {
         RArray<TInt> operationTargets;
@@ -886,6 +901,7 @@
             }
         CleanupStack::PopAndDestroy( &operationTargets );
         }
+#endif
     CleanupStack::PopAndDestroy( &markedVideos );
     }
 
@@ -1121,6 +1137,7 @@
     return iSendUi;
     }
 
+#ifdef RD_VIDEO_AS_RINGING_TONE
 // ---------------------------------------------------------------------------
 // CVcxHgMyVideosVideoListImpl::TryHandleAiwCommandL()
 // ---------------------------------------------------------------------------
@@ -1149,6 +1166,7 @@
         CleanupStack::PopAndDestroy( &operationTargets );
         }
     }
+#endif
 
 // ---------------------------------------------------------------------------
 // CVcxHgMyVideosVideoListImpl::IsMarking()
@@ -1165,6 +1183,7 @@
     return ret;
     }
 
+#ifdef RD_VIDEO_AS_RINGING_TONE
 // ---------------------------------------------------------------------------
 // CVcxHgMyVideosVideoListImpl::AiwMenuHandlerL()
 // ---------------------------------------------------------------------------
@@ -1178,3 +1197,4 @@
         }
     return iAiwMenuHandler;
     }
+#endif
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -254,9 +254,8 @@
         
         TInt highlight = iScroller.SelectedIndex();
         
-        // It is enough to reset scroll buffer only, not whole scroller
-        iScroller.DisableScrollBuffer();
-        iScroller.EnableScrollBufferL( *this, KHgBufferSize, KHgBufferTreshold );
+        iScroller.Reset();
+        iScroller.ResizeL( iVideoArray->VideoCount() );
         
         iScroller.SetSelectedIndex( highlight );
         
@@ -1363,12 +1362,20 @@
         "MPX My Videos UI # NewVideoListL(count=%d) - Enter", aVideoList.Count() );
         
     ReplaceVideoArrayL( aVideoList );
-            
-    if ( iVideoArray->VideoCount() > 0 )
+    
+    TInt videoCount = iVideoArray->VideoCount();         
+    if (  videoCount > 0 )
         {
-        iScroller.Reset();
-        iScroller.ResizeL( iVideoArray->VideoCount() );               
-		
+        if ( videoCount == iScroller.ItemCount() )
+	        {
+            iScroller.DisableScrollBuffer();
+            iScroller.EnableScrollBufferL( *this, KHgBufferSize, KHgBufferTreshold );
+            }
+        else
+	        {
+            iScroller.ResizeL( videoCount );
+            }
+            		
         TInt highlight( KErrNotFound );
 		
         if ( iRestoreHighlightPosition )
@@ -1451,7 +1458,7 @@
                     {                    
                     // Re-fetch current list completely, MMC card has 
                     // removed or inserted.
-                    iModel.CollectionClient().GetVideoListL( KErrNotFound );
+                    iModel.CollectionClient().GetVideoListL( iCurrentCategoryIndex );
                     }
                 }
             else
--- a/videoplayback/inc/mpxvideoplaybackcontrolscontroller.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/inc/mpxvideoplaybackcontrolscontroller.h	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 7 %
+// Version : %version: 8 %
 
 
 #ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
@@ -133,6 +133,8 @@
 
         void SetRealOneBitmapVisibility( TBool aVisible );
 
+        TBool SetBackgroundBlack();
+
     private:
         /**
         * Create controls
@@ -350,6 +352,9 @@
         RFs                                     iFs;
         TFileName                               iBitmapFileName;
 
+        TBool                                   iSurfaceCreated;
+        TBool                                   iTvOutConnected;
+
 #ifdef RD_TACTILE_FEEDBACK
         MTouchFeedback*                         iFeedback;
 #endif //RD_TACTILE_FEEDBACK
--- a/videoplayback/videohelix/inc/mpxvideodrmhelper.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/inc/mpxvideodrmhelper.h	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 4 %
+// Version : %version: 5 %
 
 #ifndef __MPXVIDEODRMHELPER_H__
 #define __MPXVIDEODRMHELPER_H__
@@ -48,7 +48,7 @@
          */
         static CMpxVideoDrmHelper* NewL();
 
-        TBool IsProtected( RFile& aFile );
+        TBool IsProtectedL( RFile& aFile );
 
         TInt GetDrmRightsStatus( RFile& aFile );
 
@@ -56,7 +56,7 @@
 
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
-        TBool IsProtected64( RFile64& aFile );       
+        TBool IsProtected64L( RFile64& aFile );       
         TInt GetDrmRightsStatus64( RFile64& aFile );
         TBool IsTvOutAllowed64L( RFile64& aFile );
 
--- a/videoplayback/videohelix/inc/mpxvideofiledetails.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/inc/mpxvideofiledetails.h	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 7 %
+// Version : %version: 8 %
 
 
 
@@ -58,6 +58,11 @@
         HBufC*   iTitle;
         HBufC*   iArtist;
         HBufC*   iMimeType;
+        HBufC*   iDescription;
+        HBufC*   iLocation;
+        HBufC*   iCopyright;
+        HBufC*   iLanguage;
+        HBufC*   iKeywords;                
 
 
         TInt     iResolutionWidth;
--- a/videoplayback/videohelix/src/mpxvideodlmgrif.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/src/mpxvideodlmgrif.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 21 %
+// Version : %version: 23 %
 
 
 #include <MMFROPCustomCommandConstants.h>
@@ -160,7 +160,6 @@
 
         iCurrentDl->SetBoolAttribute( EDlAttrSilent, EFalse );
 
-        //a temp hack until dl manager has a fix for this
         TInt32 activeDownload( 0 );
         iCurrentDl->GetIntAttribute( EDlAttrActiveDownload, activeDownload );
         iCurrentDl->SetIntAttribute( EDlAttrActivePlayedDownload, activeDownload );
@@ -737,7 +736,7 @@
 {
     MPX_ENTER_EXIT(_L("CMPXVideoDlMgrIf::UpdateDownloadSizeL()"));
 
-    if ( iController->iDrmHelper->IsProtected( iController->iFileHandle ) )
+    if ( iController->iDrmHelper->IsProtectedL( iController->iFileHandle ) )
     {
         MPX_DEBUG(_L("CMPXVideoDlMgrIf::UpdateDownloadSizeL() download is DRM protected"));
 
--- a/videoplayback/videohelix/src/mpxvideodrmhelper.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/src/mpxvideodrmhelper.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 7 %
+// Version : %version: 8 %
 
 
 #include <caf/data.h>
@@ -55,19 +55,19 @@
 }
 
 //  ------------------------------------------------------------------------------------------------
-//    CMpxVideoDrmHelper::IsProtected()
+//    CMpxVideoDrmHelper::IsProtectedL()
 //  ------------------------------------------------------------------------------------------------
 //
-TBool CMpxVideoDrmHelper::IsProtected( RFile& aFile )
+TBool CMpxVideoDrmHelper::IsProtectedL( RFile& aFile )
 {
     TBool drmProtected = EFalse;
 
     if ( aFile.SubSessionHandle() )
     {
-        MPX_TRAPD( err, drmProtected = iDrmUtility->IsProtectedL( aFile ) );
+        drmProtected = iDrmUtility->IsProtectedL( aFile );
     }
 
-    MPX_DEBUG(_L("CMpxVideoDrmHelper::IsProtected(%d)"), drmProtected);
+    MPX_DEBUG(_L("CMpxVideoDrmHelper::IsProtectedL(%d)"), drmProtected);
 
     return drmProtected;
 }
@@ -81,8 +81,11 @@
     MPX_ENTER_EXIT(_L("CMpxVideoDrmHelper::GetDrmRightsStatus()"));
 
     TInt drmError = KErrNone;
+    TBool drmProtected = EFalse;
 
-    if ( IsProtected( aFile ) )
+    MPX_TRAP( drmError, drmProtected = IsProtectedL(aFile ) );
+
+    if ( drmProtected && (drmError == KErrNone) )
     {
         ContentAccess::CData* data = NULL;
 
@@ -111,7 +114,7 @@
 {
     TBool tvOutAllowed = ETrue;
 
-    if ( IsProtected( aFile ) )
+    if ( IsProtectedL( aFile ) )
     {
         ContentAccess::CContent* content = ContentAccess::CContent::NewLC( aFile );
 
@@ -145,19 +148,19 @@
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
 //  ------------------------------------------------------------------------------------------------
-//    CMpxVideoDrmHelper::IsProtected64()
+//    CMpxVideoDrmHelper::IsProtected64L()
 //  ------------------------------------------------------------------------------------------------
 //
-TBool CMpxVideoDrmHelper::IsProtected64( RFile64& aFile )
+TBool CMpxVideoDrmHelper::IsProtected64L( RFile64& aFile )
 {
     TBool drmProtected = EFalse;
 
     if ( aFile.SubSessionHandle() )
     {
-        MPX_TRAPD( err, drmProtected = iDrmUtility->IsProtectedL( aFile ) );
+       drmProtected = iDrmUtility->IsProtectedL( aFile );
     }
 
-    MPX_DEBUG(_L("CMpxVideoDrmHelper::IsProtected64(%d)"), drmProtected);
+    MPX_DEBUG(_L("CMpxVideoDrmHelper::IsProtected64L(%d)"), drmProtected);
 
     return drmProtected;
 }
@@ -171,8 +174,11 @@
     MPX_ENTER_EXIT(_L("CMpxVideoDrmHelper::GetDrmRightsStatus64()"));
 
     TInt drmError = KErrNone;
+    TBool drmProtected = EFalse;
 
-    if ( IsProtected64( aFile ) )
+    MPX_TRAP( drmError, drmProtected = IsProtected64L( aFile ) );
+
+    if ( drmProtected && (drmError == KErrNone) )
     {
         ContentAccess::CData* data = NULL;
 
@@ -205,7 +211,7 @@
 {
     TBool tvOutAllowed = ETrue;
 
-    if ( IsProtected64( aFile ) )
+    if ( IsProtected64L( aFile ) )
     {
         ContentAccess::CContent* content = ContentAccess::CContent::NewLC( aFile );
 
--- a/videoplayback/videohelix/src/mpxvideofiledetails.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/src/mpxvideofiledetails.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 9 %
+// Version : %version: 10 %
 
 
 
@@ -83,6 +83,36 @@
         iClipName = NULL;
     }
 
+    if ( iDescription )
+    {
+        delete iDescription;
+        iDescription = NULL;
+    }
+
+    if ( iLocation )
+    {
+        delete iLocation;
+        iLocation = NULL;
+    }
+
+    if ( iCopyright )
+    {
+        delete iCopyright;
+        iCopyright = NULL;
+    }
+
+    if ( iLanguage )
+    {
+        delete iLanguage;
+        iLanguage = NULL;
+    }
+    
+    if ( iKeywords )
+    {
+        delete iKeywords;
+        iKeywords = NULL;
+    }
+        
     iResolutionWidth = 0;
     iResolutionHeight = 0;
     iMaxVolume = 0;
--- a/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version: ou1cpsw#41 %
+// Version : %version: 43 %
 
 
 //
@@ -75,6 +75,12 @@
 _LIT( KTrue, "1" );
 _LIT( KFalse, "0" );
 _LIT (KMPStreamingPauseSupported, "StreamingPauseSupported");
+_LIT( KDescription, "Description" );
+_LIT( KAbstract, "Abstract" );
+_LIT( KLocation, "Location" );
+_LIT( KRightCopy, "Copyright" );
+_LIT( KLanguage, "Language" );
+_LIT( KKeywords, "Keywords" );
 
 
 // ============================ MEMBER FUNCTIONS ===================================================
@@ -1273,12 +1279,12 @@
     //
     if ( iFileHandle.SubSessionHandle() )
     {
-        iFileDetails->iDrmProtected = iDrmHelper->IsProtected( iFileHandle );
+        iFileDetails->iDrmProtected = iDrmHelper->IsProtectedL( iFileHandle );
     }
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
     else if ( iFileHandle64.SubSessionHandle() )
     {
-        iFileDetails->iDrmProtected = iDrmHelper->IsProtected64( iFileHandle64 );
+        iFileDetails->iDrmProtected = iDrmHelper->IsProtected64L( iFileHandle64 );
     }
 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
@@ -1364,7 +1370,13 @@
             else if ( ( ! metaData->Name().CompareF( KArtist ) ) ||
                       ( ! metaData->Name().CompareF( KAuthor ) ) )
             {
-                iFileDetails->iArtist = metaData->Value().AllocL();
+                //
+                //  Do not overwrite the artist
+                //
+                if ( ! iFileDetails->iArtist )
+                {
+                    iFileDetails->iArtist = metaData->Value().AllocL();
+                }
             }
             else if ( ! metaData->Name().CompareF( KFormat ) )
             {
@@ -1384,7 +1396,34 @@
                     iFileDetails->iPausableStream = EFalse;
                 }
             }
-
+            else if ( ( ! metaData->Name().CompareF( KDescription ) ) ||
+                      ( ! metaData->Name().CompareF( KAbstract ) ) )
+            {
+                //
+                //  Do not overwrite the description
+                //
+                if ( ! iFileDetails->iDescription )
+                {
+                    iFileDetails->iDescription = metaData->Value().AllocL();
+                }
+            }
+            else if ( !metaData->Name().CompareF( KLocation ) )
+            {
+                iFileDetails->iLocation = metaData->Value().AllocL();
+            }
+            else if ( !metaData->Name().CompareF( KRightCopy ) )
+            {
+                iFileDetails->iCopyright = metaData->Value().AllocL();
+            }
+            else if ( !metaData->Name().CompareF( KLanguage ) )
+            {
+                iFileDetails->iLanguage = metaData->Value().AllocL();
+            }
+            else if ( !metaData->Name().CompareF( KKeywords ) )
+            {
+                iFileDetails->iKeywords = metaData->Value().AllocL();
+            }
+            
             CleanupStack::PopAndDestroy( metaData );
         }
 
--- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 31 %
+// Version : %version: 33 %
 
 
 //
@@ -526,6 +526,61 @@
             TMPXAttribute( KMPXMediaVideoDrmProtected ),
             iVideoPlaybackCtlr->iFileDetails->iDrmProtected );
     }
+    
+    //
+    //  Description
+    //
+    if ( ( attrV & KMPXMediaVideoDescription.iAttributeId ) &&
+         ( iVideoPlaybackCtlr->iFileDetails->iDescription ) )
+    {
+        aMedia->SetTextValueL(
+            TMPXAttribute( KMPXMediaVideoDescription ),
+            *( iVideoPlaybackCtlr->iFileDetails->iDescription ) );
+    }
+    
+    //
+    //  Location
+    //
+    if ( ( attrV & KMPXMediaVideoLocation.iAttributeId ) &&
+         ( iVideoPlaybackCtlr->iFileDetails->iLocation ) )
+    {
+        aMedia->SetTextValueL(
+            TMPXAttribute( KMPXMediaVideoLocation ),
+            *( iVideoPlaybackCtlr->iFileDetails->iLocation ) );
+    }
+    
+    //
+    //  Copyright
+    //
+    if ( ( attrV & KMPXMediaVideoCopyright.iAttributeId ) &&
+         ( iVideoPlaybackCtlr->iFileDetails->iCopyright ) )
+    {
+        aMedia->SetTextValueL(
+            TMPXAttribute( KMPXMediaVideoCopyright ),
+            *( iVideoPlaybackCtlr->iFileDetails->iCopyright ) );
+    }
+ 
+    //
+    //  Language
+    //
+    if ( ( attrV & KMPXMediaVideoLanguage.iAttributeId ) &&
+         ( iVideoPlaybackCtlr->iFileDetails->iLanguage ) )
+    {
+        aMedia->SetTextValueL(
+            TMPXAttribute( KMPXMediaVideoLanguage ),
+            *( iVideoPlaybackCtlr->iFileDetails->iLanguage ) );
+    }
+     
+    //
+    //  Keywords
+    //
+    if ( ( attrV & KMPXMediaVideoKeywords.iAttributeId ) &&
+         ( iVideoPlaybackCtlr->iFileDetails->iKeywords ) )
+    {
+        aMedia->SetTextValueL(
+            TMPXAttribute( KMPXMediaVideoKeywords ),
+            *( iVideoPlaybackCtlr->iFileDetails->iKeywords ) );
+    }        
 }
 
 //  ------------------------------------------------------------------------------------------------
@@ -669,7 +724,7 @@
 //    CMPXVideoPlaybackState::IssuePlayCommand()
 //  ------------------------------------------------------------------------------------------------
 void CMPXVideoPlaybackState::IssuePlayCommand( TMPXVideoPlaybackState aState,
-                                               MMPXPlaybackPluginObserver::TEvent aEvent, 
+                                               MMPXPlaybackPluginObserver::TEvent aEvent,
                                                TBool aSendEvent )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::CMPXVideoPlaybackState::IssuePlayCommand()"),
@@ -680,7 +735,7 @@
     if ( err == KErrNone )
     {
         iVideoPlaybackCtlr->ChangeState( aState );
-    
+
         if ( aSendEvent )
         {
             iVideoPlaybackCtlr->iMPXPluginObs->HandlePluginEvent( aEvent, 0, KErrNone );
@@ -1130,7 +1185,7 @@
         //
         if ( pos != 0 )
         {
-        	iVideoPlaybackCtlr->iPlayer->SetPositionL( pos );
+            iVideoPlaybackCtlr->iPlayer->SetPositionL( pos );
         }
     }
     else
@@ -1506,6 +1561,10 @@
     {
         iVideoPlaybackCtlr->iState->HandlePlay();
     }
+    else
+    {
+        iVideoPlaybackCtlr->iPlayer->RefreshFrameL();
+    }
 }
 
 //  ------------------------------------------------------------------------------------------------
--- a/videoplayback/videohelix/src/mpxvideoplayerutility.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/src/mpxvideoplayerutility.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -12,10 +12,10 @@
 * Contributors:
 *
 * Description:  This class is the interface between the playback plugin and RMMFController
- *
+*
 */
 
-// Version : %version: 13 %
+// Version : %version: 15 %
 
 
 #include <AudioPreference.h>
@@ -66,8 +66,6 @@
     MPX_ENTER_EXIT(_L("CMpxVideoPlayerUtility::~CMpxVideoPlayerUtility()"));
 
     Close();
-
-    delete iControllerEventMonitor;
 }
 
 void CMpxVideoPlayerUtility::Close()
@@ -226,9 +224,9 @@
 
 TUint32 CMpxVideoPlayerUtility::FourCCCode() const
 {
-    TFourCC aFourCC( 0 ); 
+    TFourCC aFourCC( 0 );
     iVideoControllerCustomCommands.GetAudioCodec( aFourCC );
-    
+
     return aFourCC.FourCC();
 }
 
@@ -513,13 +511,6 @@
             error = iVideoPlaySurfaceSupportCustomCommands.SurfaceRemoved( oldSurfaceId );
         }
     }
-    else
-    {
-        if ( replaceSurface )
-        {
-            iVideoPlaySurfaceSupportCustomCommands.SurfaceRemoved( oldSurfaceId );
-        }
-    }
 
     return error;
 }
@@ -609,10 +600,10 @@
         CMPXMessage* msg = CMPXMessage::NewL();
         CleanupStack::PushL( msg );
 
-        msg->SetTObjectValueL<TInt>( KMPXMessageGeneralId, KMPXMediaIdVideoDisplayMessage );
+        msg->SetTObjectValueL<TInt>( KMPXMessageGeneralId, KMPXMediaIdVideoDisplaySyncMessage );
         msg->SetTObjectValueL<TInt>( KMPXMediaVideoDisplayCommand, aCmd );
 
-        iVideoPlaybackController->iMPXPluginObs->HandlePlaybackMessage( msg, KErrNone );
+        iVideoPlaybackController->iMPXPluginObs->HandlePlaybackSyncMessage( *msg );
 
         CleanupStack::PopAndDestroy( msg );
     }
@@ -635,13 +626,13 @@
         CMPXMessage* msg = CMPXMessage::NewL();
         CleanupStack::PushL( msg );
 
-        msg->SetTObjectValueL<TInt>( KMPXMessageGeneralId, KMPXMediaIdVideoDisplayMessage );
+        msg->SetTObjectValueL<TInt>( KMPXMessageGeneralId, KMPXMediaIdVideoDisplaySyncMessage );
         msg->SetTObjectValueL<TInt>( KMPXMediaVideoDisplayCommand, aCmd );
         msg->SetTObjectValueL<TSurfaceId>( KMPXMediaVideoDisplayTSurfaceId, aSurfaceId );
         msg->SetTObjectValueL<TRect>( KMPXMediaVideoDisplayCropRect, aCropRect );
         msg->SetTObjectValueL<TVideoAspectRatio>( KMPXMediaVideoDisplayAspectRatio, aAspectRatio );
 
-        iVideoPlaybackController->iMPXPluginObs->HandlePlaybackMessage( msg, KErrNone );
+        iVideoPlaybackController->iMPXPluginObs->HandlePlaybackSyncMessage( *msg );
 
         CleanupStack::PopAndDestroy( msg );
     }
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/inc/mpxvideoplayerutility_stub.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/inc/mpxvideoplayerutility_stub.h	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
  *
 */
 
-// Version : %version: 9 %
+// Version : %version: 10 %
 
 
 #ifndef __MPXVIDEOPLAYERUTILITY__
@@ -157,6 +157,10 @@
         HBufC8*   iTitle;
         HBufC8*   iDescription;
         HBufC8*   iArtist;
+        HBufC8*   iLocation;
+        HBufC8*   iCopyright;
+        HBufC8*   iLanguage;
+        HBufC8*   iKeywords;
 
         TSize    iSize;
 
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideodrmhelper_stub.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideodrmhelper_stub.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 5 %
+// Version : %version: 6 %
 
 
 #include "mpxvideodrmhelper.h"
@@ -46,10 +46,10 @@
 }
 
 //  ------------------------------------------------------------------------------------------------
-//    CMpxVideoDrmHelper::IsProtected()
+//    CMpxVideoDrmHelper::IsProtectedL()
 //  ------------------------------------------------------------------------------------------------
 //
-TBool CMpxVideoDrmHelper::IsProtected( RFile& aFile )
+TBool CMpxVideoDrmHelper::IsProtectedL( RFile& aFile )
 {
     TBool drmProtected = EFalse;
 
@@ -118,10 +118,10 @@
 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 
 //  ------------------------------------------------------------------------------------------------
-//    CMpxVideoDrmHelper::IsProtected64()
+//    CMpxVideoDrmHelper::IsProtected64L()
 //  ------------------------------------------------------------------------------------------------
 //
-TBool CMpxVideoDrmHelper::IsProtected64( RFile64& aFile )
+TBool CMpxVideoDrmHelper::IsProtected64L( RFile64& aFile )
 {
     TBool drmProtected = EFalse;
 
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideoplayerutility_stub.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideoplayerutility_stub.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 11 %
+// Version : %version: 12 %
 
 #include <audiopreference.h>
 #include <mmf/server/mmffile.h>
@@ -657,11 +657,13 @@
 
         iTitle = value.AllocL();
     }
-    else if ( ! aItem.Compare(_L8("Description")) )
+    else if ( ! aItem.Compare(_L8("Description")) ||
+    	      ! aItem.Compare(_L8("Abstract")) )
     {
-        delete iDescription;
-
-        iDescription = value.AllocL();
+        if ( ! iDescription )
+        {
+            iDescription = value.AllocL();
+        }
     }
     else if ( ! aItem.Compare(_L8("Artist")) )
     {
@@ -669,6 +671,30 @@
 
         iArtist = value.AllocL();
     }
+    else if ( ! aItem.Compare(_L8("Location")) )
+    {
+        delete iLocation;
+
+        iLocation = value.AllocL();
+    }
+    else if ( ! aItem.Compare(_L8("Copyright")) )
+    {
+        delete iCopyright;
+
+        iCopyright = value.AllocL();
+    }
+    else if ( ! aItem.Compare(_L8("Language")) )
+    {
+        delete iLanguage;
+
+        iLanguage = value.AllocL();
+    }
+    else if ( ! aItem.Compare(_L8("Keywords")) )
+    {
+        delete iKeywords;
+
+        iKeywords = value.AllocL();
+    }
 
     HBufC* name = HBufC::NewL( aItem.Length() );
     TPtr namePtr( name->Des() );
--- a/videoplayback/videoplaybackcontrols/inc/mpxvideoplaybackbutton.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/inc/mpxvideoplaybackbutton.h	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 6 %
+// Version : %version: 7 %
 
 
 #ifndef MPXVIDEOPLAYBACKBUTTON_H
@@ -25,6 +25,7 @@
 #include <coecntrl.h>
 
 #include "mpxvideo_debug.h"
+#include "mpxvideoplaybackcontrolscontroller.h"
 
 // FORWARD DECLARATIONS
 
@@ -46,7 +47,8 @@
         /**
         * Two-phased constructor.
         */
-        static CMPXVideoPlaybackButton* NewL( TRect aRect, const TDesC &aIconPath );
+        static CMPXVideoPlaybackButton* NewL( CMPXVideoPlaybackControlsController* aController,
+                                              TRect aRect, const TDesC &aIconPath );
 
         /**
         * Destructor.
@@ -63,7 +65,8 @@
         /**
          * By default Symbian 2nd phase constructor is private.
          */
-        void ConstructL( TRect aRect, const TDesC &aIconPath );
+        void ConstructL( CMPXVideoPlaybackControlsController* aController,
+                         TRect aRect, const TDesC &aIconPath );
 
     private:
 
@@ -138,6 +141,8 @@
 
         TMPXButtonState         iState;
         HBufC*                  iIConPath;
+
+        CMPXVideoPlaybackControlsController* iController;
 };
 
 // INLINE METHODS
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackaspectratioicon.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackaspectratioicon.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 11 %
+// Version : %version: 12 %
 
 
 // INCLUDE FILES
@@ -218,17 +218,20 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-        gc.Clear( aRect );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
-        gc.Clear( aRect );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+            gc.Clear( aRect );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+            gc.Clear( aRect );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbrandinganimation.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbrandinganimation.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 7 %
+// Version : %version: 9 %
 
 
 // INCLUDE FILES
@@ -57,8 +57,8 @@
     //
     // set rect
     //
-    SetRect( TRect( 0, 0, aRect.Width(), aRect.Height() ) );
-    iBrandingRect = aRect;
+    iBrandingRect = TRect( 0, 0, aRect.Width(), aRect.Height() );
+    SetRect( iBrandingRect );
 
     //
     // construct branding timer
@@ -217,17 +217,20 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-        gc.Clear( aRect );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
-        gc.Clear( aRect );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+            gc.Clear( aRect );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+            gc.Clear( aRect );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbutton.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbutton.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 8 %
+// Version : %version: 9 %
 
 
 
@@ -39,11 +39,13 @@
 // Symbian 2nd phase constructor can leave.
 // -------------------------------------------------------------------------------------------------
 //
-void CMPXVideoPlaybackButton::ConstructL( TRect aRect, const TDesC &aIconPath )
+void CMPXVideoPlaybackButton::ConstructL( CMPXVideoPlaybackControlsController* aController, 
+                                          TRect aRect, const TDesC &aIconPath )
 {
     MPX_DEBUG(_L("CMPXVideoPlaybackButton::ConstructL()"));
 
     iIConPath = aIconPath.AllocL();
+    iController = aController;
 
     SetRect( aRect );
 }
@@ -53,14 +55,15 @@
 // Two-phased constructor.
 // -------------------------------------------------------------------------------------------------
 //
-CMPXVideoPlaybackButton* CMPXVideoPlaybackButton::NewL( TRect aRect, const TDesC &aIconPath)
+CMPXVideoPlaybackButton* CMPXVideoPlaybackButton::NewL( CMPXVideoPlaybackControlsController* aController, 
+                                                        TRect aRect, const TDesC &aIconPath)
 {
     MPX_DEBUG(_L("CMPXVideoPlaybackButton::NewL()"));
 
     CMPXVideoPlaybackButton* self = new ( ELeave ) CMPXVideoPlaybackButton();
 
     CleanupStack::PushL( self );
-    self->ConstructL( aRect, aIconPath );
+    self->ConstructL( aController, aRect, aIconPath );
     CleanupStack::Pop();
     return self;
 }
@@ -193,17 +196,20 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-        gc.Clear( aRect );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
-        gc.Clear( aRect );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+            gc.Clear( aRect );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+            gc.Clear( aRect );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbuttonbar.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbuttonbar.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 14 %
+// Version : %version: 15 %
 
 
 
@@ -144,7 +144,7 @@
     for ( TInt i = 0 ; i < EMPXButtonCount -1 ; i++ )
     {
         CMPXVideoPlaybackButton* button =
-            CMPXVideoPlaybackButton::NewL(
+            CMPXVideoPlaybackButton::NewL( iController,
                     TRect( leftOffset, iconSize * i, leftOffset + iconSize, iconSize * ( i + 1 ) ),
                     iconsPath );
 
@@ -157,7 +157,7 @@
     // create pause button in same rect as paly button's
     //
     CMPXVideoPlaybackButton* button =
-        CMPXVideoPlaybackButton::NewL( iButtons[EMPXButtonPlay]->Rect(), iconsPath );
+        CMPXVideoPlaybackButton::NewL( iController, iButtons[EMPXButtonPlay]->Rect(), iconsPath );
 
     CleanupStack::PushL( button );
     iButtons.AppendL( button );
@@ -563,17 +563,20 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-        gc.Clear( aRect );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
-        gc.Clear( aRect );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+            gc.Clear( aRect );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+            gc.Clear( aRect );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrol.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrol.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 18 %
+// Version : %version: 19 %
 
 
 // INCLUDE FILES
@@ -174,15 +174,18 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 24 %
+// Version : %version: 27 %
 
 
 // INCLUDE FILES
@@ -65,6 +65,7 @@
 
 const TInt KMPXControlsTimeOut = 4000000;
 
+const TInt KMP4LayoutSet = 6;
 // ================= MEMBER FUNCTIONS ==============================================================
 
 // -------------------------------------------------------------------------------------------------
@@ -76,7 +77,8 @@
     CMPXVideoPlaybackContainer* aContainer, TRect aRect )
     : iControls( EMPXControlsCount ),
       iRect( aRect ),
-      iContainer( aContainer )
+      iContainer( aContainer ),
+      iSurfaceCreated(EFalse)
 {
 }
 
@@ -111,6 +113,7 @@
     iVideoResourceOffset = coeEnv->AddResourceFileL( resourceFile );
 
     iFileDetails = aDetails;
+    iTvOutConnected = iFileDetails->iTvOutConnected;
 
     iFileDetails->iRNFormat = IsRealFormatL( iFileDetails->iClipName->Des() );
 
@@ -316,12 +319,14 @@
         case EMPXControlCmdTvOutConnected:
         {
             MPX_DEBUG(_L("    [EMPXControlCmdTvOutConnected]"));
+            iTvOutConnected = ETrue;
             HandleTvOutEventL( ETrue, aEvent, aValue );
             break;
         }
         case EMPXControlCmdTvOutDisconnected:
         {
             MPX_DEBUG(_L("    [EMPXControlCmdTvOutDisConnected]"));
+            iTvOutConnected = EFalse;
             HandleTvOutEventL( EFalse, aEvent, aValue );
             break;
         }
@@ -376,6 +381,7 @@
 			//
 			//  When surface is created, remove the Real One Bitmap
 			//
+			iSurfaceCreated = ETrue;
 			SetRealOneBitmapVisibility( EFalse );
 			break;
 		}
@@ -675,7 +681,7 @@
         case EMPXProgressBar:
         {
             TAknLayoutRect progressPaneRect;
-            progressPaneRect.LayoutRect( iRect, mp4_progress_pane(0).LayoutLine() );
+            progressPaneRect.LayoutRect( iRect, mp4_progress_pane( KMP4LayoutSet ).LayoutLine() );
 
             TRect touchPaneRect( progressPaneRect.Rect().iTl.iX,
                                  progressPaneRect.Rect().iTl.iY,
@@ -714,7 +720,7 @@
             CreateTextLabelWithSpecificLayoutL( R_MPX_LOADING,
                                                 aControlIndex,
                                                 properties,
-                                                main_mp4_pane_t3(0) );
+                                                main_mp4_pane_t3( KMP4LayoutSet ) );
             break;
         }
         case EMPXTitleLabel:
@@ -800,12 +806,20 @@
 
             AknLayoutUtils::LayoutImage( dlPausedBitmap,
                                          iRect,
-                                         AknLayoutScalable_Apps::main_mp4_pane_g6(0) );
+                                         AknLayoutScalable_Apps::main_mp4_pane_g6( KMP4LayoutSet ) );
+
+            TRect ctrlRect = dlPausedBitmap->Rect();
 
+            // To make it aligned with AspectRatioIcon when touch is supported.
+            if ( AknLayoutUtils::PenEnabled() )
+            {
+                ctrlRect.iBr.iY += 10;
+                ctrlRect.iTl.iY += 10;
+            }
             CMPXVideoPlaybackControl* control =
                 CMPXVideoPlaybackControlPdl::NewL( this,
                                                    dlPausedBitmap,
-                                                   dlPausedBitmap->Rect(),
+                                                   ctrlRect,
                                                    aControlIndex,
                                                    properties );
 
@@ -822,7 +836,7 @@
 
             TAknLayoutRect aspectRatioPaneRect;
             aspectRatioPaneRect.LayoutRect( iRect,
-                                            main_mp4_pane_g5(0).LayoutLine() );
+                                            main_mp4_pane_g5( KMP4LayoutSet ).LayoutLine() );
 
             //
             // Set the touchable area for aspect ratio
@@ -855,11 +869,17 @@
         case EMPXBrandingAnimation:
         {
             TAknLayoutRect brandingPaneRect;
-            brandingPaneRect.LayoutRect( iRect, main_mp4_pane_g1(0).LayoutLine() );
+            brandingPaneRect.LayoutRect( iRect, main_mp4_pane_g3( KMP4LayoutSet ).LayoutLine() );
 
+            // Decrease the size of BrandingAnimation to make it look better.
+            TRect brandingLogoRect(
+                    brandingPaneRect.Rect().iTl.iX+20,
+                    brandingPaneRect.Rect().iTl.iY+50,
+                    brandingPaneRect.Rect().iBr.iX-20,
+                    brandingPaneRect.Rect().iBr.iY-50 );
             CMPXVideoPlaybackBrandingAnimation* brandingAnimation =
                 CMPXVideoPlaybackBrandingAnimation::NewL( this,
-                                                          brandingPaneRect.Rect(),
+                                                          brandingLogoRect,
                                                           iFileDetails->iRNFormat );
 
             CleanupStack::PushL( brandingAnimation );
@@ -867,7 +887,7 @@
             CMPXVideoPlaybackControl* control =
                 CMPXVideoPlaybackControl::NewL( this,
                                                 brandingAnimation,
-                                                brandingPaneRect.Rect(),
+                                                brandingLogoRect,
                                                 aControlIndex,
                                                 properties );
 
@@ -890,7 +910,7 @@
 
             AknLayoutUtils::LayoutImage( pausedBitmap,
                                          iRect,
-                                         AknLayoutScalable_Apps::main_mp4_pane_g4(0) );
+                                         AknLayoutScalable_Apps::main_mp4_pane_g4( KMP4LayoutSet ) );
 
             CMPXVideoPlaybackControl* control =
                 CMPXVideoPlaybackControl::NewL( this,
@@ -1031,19 +1051,11 @@
 
     if ( aTop )
     {
-        SKLayout = main_mp4_pane_t1(0);
-        skRect.iTl.iX = iRect.iBr.iX-iRect.iBr.iX/5;
-        skRect.iTl.iY = iRect.iTl.iY;
-        skRect.iBr.iX = iRect.iBr.iX;
-        skRect.iBr.iY = iRect.iBr.iY/5;
+        SKLayout = main_mp4_pane_t2( KMP4LayoutSet );
     }
     else
     {
-        SKLayout = main_mp4_pane_t2(0);
-        skRect.iTl.iX = iRect.iBr.iX-iRect.iBr.iX/5;
-        skRect.iTl.iY = iRect.iBr.iY-iRect.iBr.iY/5;
-        skRect.iBr.iX = iRect.iBr.iX;
-        skRect.iBr.iY = iRect.iBr.iY;
+        SKLayout = main_mp4_pane_t1( KMP4LayoutSet );
     }
 
     AknLayoutUtils::LayoutLabel( label,
@@ -1052,7 +1064,14 @@
 
     if ( AknLayoutUtils::PenEnabled() )
     {
-        label->SetAlignment( EHCenterVCenter );
+        if ( aTop )
+        {
+            label->SetAlignment( EHRightVCenter );
+        }
+        else
+        {
+            label->SetAlignment( EHLeftVCenter );
+        }
     }
     else
     {
@@ -1065,6 +1084,12 @@
             label->SetAlignment( EHRightVBottom );
         }
     }
+    
+    skRect = label->Rect();
+
+    // Enlarge the button region to make it easy to be touched.
+    skRect.iTl.iY -= 6;
+    skRect.iBr.iY += 6;
 
     CMPXVideoPlaybackControl* control = CMPXVideoPlaybackControl::NewL( this,
                                                                         label,
@@ -1900,5 +1925,13 @@
     }
 }
 
+TBool CMPXVideoPlaybackControlsController::SetBackgroundBlack()
+{
+    TBool backgroundBlack = iSurfaceCreated && !iTvOutConnected;
+
+    MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::SetBackgroundBlack(%d)"), backgroundBlack);
+    return backgroundBlack;
+}
+
 
 // End of File
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackmediadetailsviewer.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackmediadetailsviewer.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version:  e003sa33#11 %
+// Version : %version:  e003sa33#12 %
 
 
 // INCLUDE FILES
@@ -42,7 +42,7 @@
 
 // Constants
 _LIT(KHeadingValueSeperator, ": ");
-_LIT(KWidthHeightSeparator, " x ");
+_LIT(KWidthHeightSeparator, " \xd7 ");
 _LIT(KLeftMargin, " " );
 
 const TInt KMediaDetailsViewerMaxItems = 11;  // used to determine the height of each item
@@ -368,6 +368,7 @@
         resolutionField.AppendNum( iController->FileDetails()->iVideoWidth );   
         resolutionField.Append( KWidthHeightSeparator );
         resolutionField.AppendNum( iController->FileDetails()->iVideoHeight);
+        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( resolutionField );
         
         iResolutionLabel->SetTextL(resolutionField);
         iResolutionLabel->SetAllMarginsTo(KMediaDetailsViewerItemMargin);
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 15 %
+// Version : %version: 17 %
 
 
 // INCLUDE FILES
@@ -50,6 +50,8 @@
 const TInt64 KMPXMicroSeconds = 1000000;
 const TInt KMPXOneHourInSeconds = 3600;
 
+const TInt KMPXProgressBarHeight = 41;
+
 // ============================ MEMBER FUNCTIONS ===================================================
 
 CMPXVideoPlaybackProgressBar::CMPXVideoPlaybackProgressBar(
@@ -215,12 +217,11 @@
     //
     // Calculate icon rects
     //
-    TAknLayoutRect progressPaneRect;
-    progressPaneRect.LayoutRect( iEikonEnv->EikAppUi()->ApplicationRect(),
-                                 mp4_progress_pane(0).LayoutLine() );
 
     TRect progressRect = Rect();
-    progressRect.iBr.iY = progressPaneRect.Rect().Height();
+    TInt topMarginHeight = ( progressRect.iBr.iY - KMPXProgressBarHeight ) / 2;
+    progressRect.iTl.iY += topMarginHeight;
+    progressRect.iBr.iY = progressRect.iTl.iY + KMPXProgressBarHeight;
 
     TAknLayoutRect seekBarFrameRect;
     seekBarFrameRect.LayoutRect( progressRect, mup_progress_pane_cp04().LayoutLine() );
@@ -484,17 +485,20 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-        gc.Clear( aRect );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
-        gc.Clear( aRect );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+            gc.Clear( aRect );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+            gc.Clear( aRect );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 15 %
+// Version : %version: 16 %
 
 
 // INCLUDE FILES
@@ -808,17 +808,20 @@
     CWindowGc& gc = SystemGc();
     gc.SetClippingRect( aRect );
 
-    if ( Window().DisplayMode() == EColor16MAP )
+    if ( iController->SetBackgroundBlack() )
     {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
-        gc.Clear( aRect );
-    }
-    else if ( Window().DisplayMode() == EColor16MA )
-    {
-        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-        gc.SetBrushColor( TRgb::Color16MA( 0 ) );
-        gc.Clear( aRect );
+        if ( Window().DisplayMode() == EColor16MAP )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MAP( 255 ) );
+            gc.Clear( aRect );
+        }
+        else if ( Window().DisplayMode() == EColor16MA )
+        {
+            gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+            gc.SetBrushColor( TRgb::Color16MA( 0 ) );
+            gc.Clear( aRect );
+        }
     }
     else
     {
--- a/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/conf/ui_videoplaybackcontrolstest.cfg	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/conf/ui_videoplaybackcontrolstest.cfg	Fri Feb 19 22:52:52 2010 +0200
@@ -52,9 +52,9 @@
 pause 100
 ControlsTest ShowControls
 pause 1000
-ControlsTest PointerEvent eventtype=EButton1Down x=630 y=10
+ControlsTest PointerEvent eventtype=EButton1Down x=630 y=350
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Up x=630 y=10
+ControlsTest PointerEvent eventtype=EButton1Up x=630 y=350
 pause 100
 ControlsTest ExpectedResult EAknSoftkeyBack 0
 pause 100
@@ -76,9 +76,9 @@
 pause 100
 ControlsTest ToggleVisibility
 pause 1000
-ControlsTest PointerEvent eventtype=EButton1Down x=630 y=350
+ControlsTest PointerEvent eventtype=EButton1Down x=40 y=350
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Up x=630 y=350
+ControlsTest PointerEvent eventtype=EButton1Up x=40 y=350
 pause 100
 ControlsTest ExpectedResult EMPXPbvCmdShowFileDetails 0
 pause 100
@@ -101,9 +101,9 @@
 pause 100
 ControlsTest ShowControls
 pause 1000
-ControlsTest PointerEvent eventtype=EButton1Down x=50 y=50
+ControlsTest PointerEvent eventtype=EButton1Down x=70 y=50
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Up x=50 y=10
+ControlsTest PointerEvent eventtype=EButton1Up x=70 y=10
 pause 100
 ControlsTest ExpectedResult EMPXPbvCmdStretchAspectRatio 0
 pause 100
@@ -235,11 +235,11 @@
 pause 100
 ControlsTest SetDuration 100000
 pause 100 
-ControlsTest PointerEvent eventtype=EButton1Down x=251 y=350
+ControlsTest PointerEvent eventtype=EButton1Down x=310 y=350
 pause 100
-ControlsTest PointerEvent eventtype=EDrag x=251 y=350
+ControlsTest PointerEvent eventtype=EDrag x=310 y=350
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Up x=251 y=350
+ControlsTest PointerEvent eventtype=EButton1Up x=310 y=350
 pause 100
 ControlsTest ExpectedResult EMPXPbvCmdSetPosition 50
 pause 100
@@ -259,9 +259,9 @@
 pause 100
 ControlsTest SetState EPbStatePlaying
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Down x=630 y=10
+ControlsTest PointerEvent eventtype=EButton1Down x=630 y=350
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Up x=630 y=10
+ControlsTest PointerEvent eventtype=EButton1Up x=630 y=350
 pause 100
 ControlsTest ExpectedResult EAknSoftkeyBack 0
 pause 100
@@ -659,9 +659,9 @@
 pause 100
 ControlsTest SetState EPbStateBuffering
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Down x=630 y=10
+ControlsTest PointerEvent eventtype=EButton1Down x=630 y=350
 pause 100
-ControlsTest PointerEvent eventtype=EButton1Up x=630 y=10
+ControlsTest PointerEvent eventtype=EButton1Up x=630 y=350
 pause 100
 ControlsTest ExpectedResult EAknSoftkeyBack 0
 pause 100
@@ -701,6 +701,8 @@
 pause 100
 ControlsTest SetState EPbStatePlaying
 pause 100
+ControlsTest ShowControls
+pause 1000
 ControlsTest SetDuration 100000
 pause 100 
 ControlsTest PointerEvent eventtype=EButton1Down x=251 y=350
--- a/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/inc/mpxvpbc_stub.h	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/inc/mpxvpbc_stub.h	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 8 %
+// Version : %version: 9 %
 
 
 
@@ -46,6 +46,9 @@
         */
         virtual ~CMPXVideoPlaybackContainer();
 
+        void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+        
+
     private:
     
         /**
--- a/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/mpxvpbc_stub.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/mpxvpbc_stub.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 12 %
+// Version : %version: 13 %
 
 
 // INCLUDES
@@ -371,4 +371,13 @@
     iControlsController->AddFileDetailsL( iFileDetails );
 }
 
+
+void CMPXVideoPlaybackContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent )
+{
+    MPX_ENTER_EXIT(_L("CMPXVideoPlaybackContainer::HandlePointerEventL()"));
+
+    MPX_DEBUG(_L("   iType = %d, iPosition = (%d,%d)"), 
+       aPointerEvent.iType, aPointerEvent.iPosition.iX, aPointerEvent.iPosition.iY );
+}
+
 //  End of File
--- a/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/mpxvpbuih_stub.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/mpxvpbuih_stub.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: ou1cpsw#6 %
+// Version : %version: 7 %
 
 
 
@@ -60,7 +60,7 @@
 // -------------------------------------------------------------------------------------------------
 //
 CMPXVideoPlaybackUserInputHandler* CMPXVideoPlaybackUserInputHandler::NewL(
-																												CMPXVideoPlaybackContainer* aContainer)
+        CMPXVideoPlaybackContainer* aContainer)
 {
     MPX_DEBUG(_L("CMPXVideoPlaybackUserInputHandler::NewL()"));
 
@@ -101,6 +101,9 @@
 {
     MPX_DEBUG(_L("CMPXVideoPlaybackUserInputHandler::ProcessPointerEvent"));
 
+    MPX_DEBUG(_L("   iType = %d, iPosition = (%d,%d)"), 
+       aPointerEvent.iType, aPointerEvent.iPosition.iX, aPointerEvent.iPosition.iY );
+
     switch (iProcessingInputType)
     {
         case EMpxVideoNone:
--- a/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/videoplaybackcontrolstestblocks.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/src/videoplaybackcontrolstestblocks.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 9 %
+// Version : %version: 10 %
 
 
 // [INCLUDE FILES] - do not remove
@@ -541,18 +541,42 @@
 {
     MPX_DEBUG(_L("CVideoPlaybackControlsTest::TapOnScreen()"));
 
+    MPX_DEBUG(_L("   aType = %d, aPosition = (%d,%d)"), aType, aPosition.iX, aPosition.iY);
+
+    TPoint tapPoint( aPosition );
+
+#if !defined(__WINS__)
+
+    //
+    //  On the hardware, the window server is performing a rotation.
+    //  This calculation will adjust the points so the same touch point is received
+    //  on both the emulator and hardware
+    //
+    //  ix = ( ScreenWidth - 1 ) - oldPosition.iY - YOffset
+    //      I am not sure why they subtract 1 from the screen width, but they do
+    //      The YOffset can be read from the wsini.ini file
+    //
+    //  iy = oldPosition.iX
+    //  
+    tapPoint.iX = ( 360 - 1 ) - aPosition.iY - 12;
+    tapPoint.iY = aPosition.iX;
+
+#endif
+    
+    MPX_DEBUG(_L("   tapPosition = (%d,%d)"), tapPoint.iX, tapPoint.iY);
+
     TRawEvent pointer;
 
     if ( aType == TPointerEvent::EButton1Down )
     {
-        pointer.Set( TRawEvent::EButton1Down, aPosition.iX, aPosition.iY );
+        pointer.Set( TRawEvent::EButton1Down, tapPoint.iX, tapPoint.iY );
 
         iWsSession.SimulateRawEvent( pointer );
         iWsSession.Flush();
     }
     else if ( aType == TPointerEvent::EButton1Up )
     {
-        pointer.Set( TRawEvent::EButton1Up, aPosition.iX, aPosition.iY );
+        pointer.Set( TRawEvent::EButton1Up, tapPoint.iX, tapPoint.iY );
 
         iWsSession.SimulateRawEvent( pointer );
         iWsSession.Flush();
--- a/videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: e003sa33#58 %
+// Version : %version: 61 %
 
 
 //  Include Files
@@ -133,18 +133,18 @@
         iCloseAO = NULL;
     }
 
+    if ( iFileDetails )
+    {
+        delete iFileDetails;
+        iFileDetails = NULL;
+    }
+
     if ( iDisplayHandler )
     {
         delete iDisplayHandler;
         iDisplayHandler = NULL;
     }
 
-    if ( iFileDetails )
-    {
-        delete iFileDetails;
-        iFileDetails = NULL;
-    }
-
     if ( iPlaybackUtility )
     {
         TRAP_IGNORE( iPlaybackUtility->RemoveObserverL( *this ) );
@@ -223,6 +223,18 @@
         case EMPXPbvCmdClose:
         {
             MPX_DEBUG(_L("CMPXVideoBasePlaybackView::HandleCommandL() EMPXPbvCmdClose"));
+
+            //
+            //  The display window must be removed before closing the playback plugin
+            //
+            if ( iDisplayHandler )
+            {
+                //
+                //  Remove the display window so the surface can be released
+                //
+                iDisplayHandler->RemoveDisplayWindow();
+            }
+
             CreateGeneralPlaybackCommandL( EPbCmdClose );
             break;
         }
@@ -351,7 +363,19 @@
             LaunchDRMDetailsL();
             break;
         }
+        case EAknSoftkeyClose:
+        {
+            //
+            //  Close is in progress
+            //  Remove the display window so the surface can be released
+            //
+            if ( iDisplayHandler )
+            {
+                iDisplayHandler->RemoveDisplayWindow();
+            }
 
+            break;
+        }
     }
 }
 
@@ -402,6 +426,7 @@
     //
     iPlaybackUtility = MMPXPlaybackUtility::UtilityL( EMPXCategoryVideo, KPbModeDefault );
     iPlaybackUtility->AddObserverL( *this );
+    iPlaybackUtility->SetPrimaryClientL();
 
     //
     //  Initialize the playback state
@@ -473,10 +498,11 @@
     //
     //  Delete the display handler when the view is deactivated
     //
-    iDisplayHandler->RemoveDisplayWindow();
-
-    delete iDisplayHandler;
-    iDisplayHandler = NULL;
+    if ( iDisplayHandler )
+    {
+        delete iDisplayHandler;
+        iDisplayHandler = NULL;
+    }
 
     if ( iPlaybackUtility )
     {
@@ -737,23 +763,28 @@
     {
         HandleVideoPlaybackMessage( aMessage );
     }
-    else if ( KMPXMediaIdVideoDisplayMessage == id )
+    else if ( KMPXMediaIdVideoDisplaySyncMessage == id )
     {
         if ( iDisplayHandler )
         {
             TMPXVideoDisplayCommand cmdId = iDisplayHandler->HandleVideoDisplayMessageL( aMessage );
 
             if ( cmdId == EPbMsgVideoSurfaceCreated )
-			{
+            {
                 //
-            	//  Notify container that surface has been created to make window transparent
-            	//
+                //  Notify container that surface has been created to make window transparent
+                //
                 if ( iContainer )
                 {
                     iContainer->HandleCommandL( EMPXPbvSurfaceCreated );
                 }
-			}
+            }
         }
+
+        //
+        //  Signal Sync Message handling is complete
+        //
+        iPlaybackUtility->CommandL( EPbCmdSyncMsgComplete );
     }
 }
 
@@ -868,11 +899,18 @@
 //
 void CMPXVideoBasePlaybackView::HandleClosePlaybackViewL()
 {
-    MPX_DEBUG(
-      _L("CMPXVideoBasePlaybackView::HandleClosePlaybackViewL()") );
+    MPX_ENTER_EXIT(_L("CMPXVideoBasePlaybackView::HandleClosePlaybackViewL()"));
 
     if ( IsMultiItemPlaylist() )
     {
+        if ( iDisplayHandler )
+        {
+            //
+            //  Remove the display window so the surface can be released
+            //
+            iDisplayHandler->RemoveDisplayWindow();
+        }
+
         iPlaybackUtility->CommandL( EPbCmdNext );
     }
     else
@@ -1541,7 +1579,6 @@
 void CMPXVideoBasePlaybackView::DoClosePlayerL()
 {
     MPX_ENTER_EXIT(_L("CMPXVideoBasePlaybackView::DoClosePlayerL()"));
-
     AppUi()->HandleCommandL( EAknSoftkeyBack );
 }
 
@@ -2018,6 +2055,7 @@
         if ( openError == KErrNone )
         {
             MPX_TRAPD( err, drmUiHandling->ShowDetailsViewL( fileHandle ) );
+
             if ( KLeaveExit == err )
             {
                 User::Leave( err );
@@ -2033,6 +2071,7 @@
             if ( err == KErrNone && openError == KErrNone )
             {
                 MPX_TRAPD( err, drmUiHandling->ShowDetailsViewL( fileHandle64 ) );
+
                 if ( KLeaveExit == err )
                 {
                     User::Leave( err );
--- a/videoplayback/videoplaybackviews/src/mpxvideoplaybackdisplayhandler.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayback/videoplaybackviews/src/mpxvideoplaybackdisplayhandler.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: 7 %
+// Version : %version: 9 %
 
 #include <sysutil.h>
 #include <s32file.h>
--- a/videoplayerapp/mpxvideoplayer/src/mpxvideoplayerappuiengine.cpp	Tue Feb 02 00:12:10 2010 +0200
+++ b/videoplayerapp/mpxvideoplayer/src/mpxvideoplayerappuiengine.cpp	Fri Feb 19 22:52:52 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-// Version : %version: da1mmcf#59 %
+// Version : %version: da1mmcf#61 %
 
 
 #include <eikon.hrh>
@@ -525,7 +525,7 @@
     if ( iPlaybackUtility )
     {
         ClosePlaybackPluginL();
-        
+
         MMPXPlayerManager& manager = iPlaybackUtility->PlayerManager();
         TRAP_IGNORE( manager.ClearSelectPlayersL() );
     }