videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp
branchRCL_3
changeset 15 8f0df5c82986
parent 14 55fa1ec415c6
child 18 baf439b22ddd
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp	Tue May 11 16:15:40 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp	Tue May 25 12:44:54 2010 +0300
@@ -31,16 +31,16 @@
 #include <vcxmyvideosdefs.h>
 #include <MPFileDetailsDialog.h>
 #include <myvideosindicator.h>
+#include <centralrepository.h>
+
 #include "IptvDebug.h"
 
 #include "vcxhgmyvideosmodel.h"
 #include "vcxhgmyvideosmainview.h"
 #include "vcxhgmyvideoscollectionclient.h"
-#include "vcxhgmyvideosdownloadclient.h"
 #include "vcxhgmyvideosvideomodelhandler.h"
 #include "vcxhgmyvideosvideolistimpl.h"
 #include "vcxhgmyvideosvideodataupdater.h"
-#include "vcxhgmyvideosdownloadupdater.h"
 
 #include "vcxhgmyvideos.hrh"
 #include "vcxhgmyvideoslistbase.h"
@@ -129,8 +129,6 @@
                                                          iScroller,                                                        
                                                          *iVideoArray );
 
-    iDownloadUpdater = CVcxHgMyVideosDownloadUpdater::NewL( *this, *iVideoArray );
-    
     iVideoIndicator = CMyVideosIndicator::NewL();
     }
 
@@ -140,14 +138,13 @@
 //
 CVcxHgMyVideosVideoModelHandler::~CVcxHgMyVideosVideoModelHandler()
     {
-    iResumeArray.Close();
     iMarkedMediaList.Close();
     
     delete iVideoDetails;
     delete iVideoIndicator;
     delete iDataUpdater;
-    delete iDownloadUpdater;
     delete iVideoArray;
+	delete iRepository;
     }
 
 // -----------------------------------------------------------------------------
@@ -160,7 +157,6 @@
         "MPX My Videos UI # CVcxHgMyVideosVideoModelHandler::DoModelActivateL() - Enter" );
     
     iDataUpdater->SetPausedL( EFalse );
-    iDownloadUpdater->SetPausedL( EFalse );
     iModel.CollectionClient().SetVideoModelObserver( this );
 
     // Set scroller strip type
@@ -184,7 +180,6 @@
         "MPX My Videos UI # CVcxHgMyVideosVideoModelHandler::DoModelDeactivate() - Enter" );
     
     TRAP_IGNORE( iDataUpdater->SetPausedL( ETrue ) );
-    TRAP_IGNORE( iDownloadUpdater->SetPausedL( ETrue ) );
     iModel.CollectionClient().SetVideoModelObserver( NULL );
     iScroller.DisableScrollBuffer();
 
@@ -215,17 +210,24 @@
 
     CVcxHgMyVideosCollectionClient& collectionClient = iModel.CollectionClient();
 
-    // If we are re-opening the same video list again, then try 
-    // restore the highlight to previous position.
-    aCategoryIndex == iCurrentCategoryIndex ? iRestoreListPosition = ETrue :
-                                              iRestoreListPosition = EFalse;
-    // Removes videos from video list.
-    iVideoArray->RemoveVideoList();
-         
-    // Removes videos from scroller. After this command, list highlight 
-    // disappears, so don't forget to set highlight in NewVideoListL() 
-    // function.
-    iScroller.Reset();
+    if ( aCategoryIndex == iCurrentCategoryIndex )
+        {
+        // If we are re-opening the same video list again, then try 
+        // restore the highlight to previous position.
+        iRestoreListPosition = ETrue;
+        }
+    else
+        {
+        iRestoreListPosition = EFalse;
+        
+        // Removes videos from video list.
+        iVideoArray->RemoveVideoList();
+        
+        // Removes videos from scroller. After this command, list highlight 
+        // disappears, so don't forget to set highlight in NewVideoListL() 
+        // function.
+        iScroller.Reset();
+        }
         
     // Ask for video list from MPX collection.
     collectionClient.GetVideoListL( aCategoryIndex );
@@ -247,8 +249,6 @@
         	
     if ( iScroller.ItemCount() > 0 )
         {
-        iDownloadUpdater->SetPausedL( ETrue );
-    	
         TVcxMyVideosSortingOrder sortOrder = iModel.VideolistSortOrderL();
 
         if ( iVideoListImpl.IsMarking() )
@@ -271,9 +271,6 @@
             RestoreMarkingsL();
             }
 
-        iDownloadUpdater->VideoArrayChangedL();
-        iDownloadUpdater->SetPausedL( EFalse );
-
         // Switch to appropriate scroller strip
         UpdateScrollbarTypeL( sortOrder );
         }
@@ -319,35 +316,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::OngoingDownloads()
-// -----------------------------------------------------------------------------
-//
-void CVcxHgMyVideosVideoModelHandler::OngoingDownloads(
-        RArray<TInt>& aDownloads )
-    {
-    iVideoArray->GetOngoingDownloads( aDownloads );
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::VideoDownloadState()
-// -----------------------------------------------------------------------------
-//
-TVcxMyVideosDownloadState CVcxHgMyVideosVideoModelHandler::VideoDownloadState( 
-        TInt aIndex )
-    {
-    return iVideoArray->VideoDownloadState( aIndex );
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::IsProgressivePlayPossible()
-// -----------------------------------------------------------------------------
-//
-TBool CVcxHgMyVideosVideoModelHandler::IsProgressivePlayPossible( TInt aIndex )
-    {
-    return iDownloadUpdater->IsPlayPossible( aIndex );
-    }
-
-// -----------------------------------------------------------------------------
 // CVcxHgMyVideosVideoModelHandler::HandleMarkCommandL()
 // -----------------------------------------------------------------------------
 //
@@ -631,51 +599,14 @@
         {
         // Playback should be tried always when single clicking a video in My Videos
         TMPXItemId mpxItemId = media->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
-        IPTVLOGSTRING3_LOW_LEVEL( "CVcxHgMyVideosVideoModelHandler::PlayVideoL() aIndex=%d mpxItemId=%d", aIndex, (TInt) mpxItemId );
+        SetVideoLastWatchedL( *media );
+        ClearNewVideoFlagL( *media );
+		IPTVLOGSTRING3_LOW_LEVEL( "CVcxHgMyVideosVideoModelHandler::PlayVideoL() aIndex=%d mpxItemId=%d", aIndex, (TInt) mpxItemId );
         iModel.CollectionClient().PlayVideoL( mpxItemId );        
         }
     }
 
 // -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::ResumeDownloadL()
-// -----------------------------------------------------------------------------
-//
-void CVcxHgMyVideosVideoModelHandler::ResumeDownloadL( TInt aIndex )
-    {
-    CMPXMedia* media = iVideoArray->MPXMedia( aIndex );
-
-    if ( media && media->IsSupported( KMPXMediaGeneralId ) )
-        {
-        TVcxMyVideosDownloadState dlState = VideoDownloadState( aIndex );
-        
-        if ( dlState == EVcxMyVideosDlStatePaused || dlState == EVcxMyVideosDlStateFailed )
-            {
-            iModel.DownloadClient().ResumeDownloadL( *media );
-            
-            TUint32 mpxId = media->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ).iId1;
-            if ( iResumeArray.Find( mpxId ) == KErrNotFound )
-                {
-                iResumeArray.AppendL( mpxId );
-                }
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::CancelDownloadL()
-// -----------------------------------------------------------------------------
-//
-void CVcxHgMyVideosVideoModelHandler::CancelDownloadL( TInt aIndex )
-    {
-    CMPXMedia* media = iVideoArray->MPXMedia( aIndex );
-
-    if ( media )
-        {            
-        iModel.DownloadClient().CancelDownloadL( *media );
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // CVcxHgMyVideosVideoModelHandler::Release()
 // -----------------------------------------------------------------------------
 //
@@ -739,31 +670,9 @@
 // CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowLC()
 // -----------------------------------------------------------------------------
 // 
-HBufC* CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowLC(
-            TInt aIndex,
-            CMPXMedia& aMedia,
-            TBool& aIsDownloading )
+HBufC* CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowLC( CMPXMedia& aMedia )
 
     {
-    if ( VideoDownloadState( aIndex ) == EVcxMyVideosDlStateNone )
-        {
-        aIsDownloading = EFalse;
-        return FormatVideoSecondRowCompletedLC( aMedia );
-        }
-    else
-        {
-        aIsDownloading = ETrue;
-        return FormatVideoSecondRowDownloadingLC( aIndex, aMedia );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowCompletedLC()
-// -----------------------------------------------------------------------------
-// 
-HBufC* CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowCompletedLC( 
-        CMPXMedia& aMedia )
-    {
     _LIT( KVcxSecondLineSeparator, "," );
 
     HBufC* details = NULL;
@@ -867,52 +776,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowDownloadingLC()
-// -----------------------------------------------------------------------------
-// 
-HBufC* CVcxHgMyVideosVideoModelHandler::FormatVideoSecondRowDownloadingLC(
-            TInt aIndex,
-            CMPXMedia& aMedia )
-    {
-    HBufC* details = NULL;
-    TInt progress = DownloadProgressL( aMedia );
-
-    switch ( VideoDownloadState( aIndex ) )
-        {
-        case EVcxMyVideosDlStateDownloading:
-            {
-            details = StringLoader::LoadLC( R_VCXHGMYVIDEOS_VIDEO_DOWNLOADING, progress );
-            break;
-            }
-        case EVcxMyVideosDlStateFailed:
-            {
-            details = StringLoader::LoadLC( R_VCXHGMYVIDEOS_DOWNLOAD_FAILED, progress );
-            break;
-            }
-        case EVcxMyVideosDlStatePaused:
-            {
-            details = StringLoader::LoadLC( R_VCXHGMYVIDEOS_DOWNLOAD_PAUSED, progress );
-            break;
-            }
-        case EVcxMyVideosDlStateNone:            
-        case EVcxMyVideosDlStateDownloaded:
-        default:
-            {
-            IPTVLOGSTRING2_LOW_LEVEL( 
-                "MPX My Videos UI # FormatVideoSecondRowDownloadingL() Unexpected state (%d)!",
-                VideoDownloadState( aIndex ) );
-            #ifdef _DEBUG
-            User::Panic( KVcxHgMyVideosPanic, EVcxHgMyVideosPanicLogicalVideo );
-            #else
-            User::Leave( KErrArgument );
-            #endif // _DEBUG
-            }
-        }
-
-    return details;
-    }
-
-// -----------------------------------------------------------------------------
 // CVcxHgMyVideosVideoModelHandler::ReplaceVideoArrayL()
 // -----------------------------------------------------------------------------
 // 
@@ -920,32 +783,6 @@
     {
     iVideoArray->ReplaceVideoListL( aVideoList );
     iDataUpdater->InfoArrayChanged();
-    iDownloadUpdater->VideoArrayChangedL();
-    }
-
-// -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::DownloadProgressL()
-// -----------------------------------------------------------------------------
-// 
-TInt CVcxHgMyVideosVideoModelHandler::DownloadProgressL( const CMPXMedia& aMpxMedia )
-    {
-    TInt progress = 0;
-
-    if ( aMpxMedia.IsSupported( KVcxMediaMyVideosDownloadProgress ) )
-        {
-        progress = static_cast<TInt>( 
-                       aMpxMedia.ValueTObjectL<TInt8>( KVcxMediaMyVideosDownloadProgress ) );
-        }
-
-    IPTVLOGSTRING3_LOW_LEVEL(
-        "MPX My Videos UI # DownloadProgressL() Id:%d Progress:%d",
-        static_cast<TInt>( aMpxMedia.ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ) ),
-        progress );
-
-    progress = ( progress >= 0 ? progress : 0 );
-    progress = ( progress < 100 ? progress : 99 );
-
-    return progress;
     }
 
 // -----------------------------------------------------------------------------
@@ -977,10 +814,10 @@
                     }
                 CleanupStack::PopAndDestroy( name );
                 }
-            TBool isDownloading( EFalse );
+
             HBufC* details( NULL );
             
-            details = FormatVideoSecondRowLC( aListIndex, *media, isDownloading );
+            details = FormatVideoSecondRowLC( *media );
             if ( details->Length() > 0 )
                 {
                 item.SetTextL( *details );
@@ -1038,9 +875,8 @@
 // 
 void CVcxHgMyVideosVideoModelHandler::DeleteItemL( TMPXItemId aMpxItemId )
     {
-    // Remove video from data and download updaters.
+    // Remove video from data updater.
     iDataUpdater->ReleaseData( aMpxItemId );
-    iDownloadUpdater->RemoveDownload( aMpxItemId );
 
     // Remove video from video array.
     TInt removedIndex = iVideoArray->RemoveVideo( aMpxItemId );
@@ -1083,14 +919,6 @@
         iScroller.DrawDeferred();
         iView.DynInitMskL();
         }
-    
-    TInt index( KErrNotFound );
-    index = iResumeArray.Find( aMpxItemId.iId1 );
-    
-    if ( index >= 0 && index < iResumeArray.Count() )
-        {
-        iResumeArray.Remove( index );
-        }
     }
 
 // -----------------------------------------------------------------------------
@@ -1133,8 +961,6 @@
                 iView.DynInitMskL();
                                                     
                 iDataUpdater->RequestDataL( itemId );    
-                iDownloadUpdater->VideoModifiedL( 
-                    EMPXItemInserted, itemId, EVcxMyVideosListNoInfo );
                 }
             }
          else
@@ -1208,12 +1034,19 @@
     IPTVLOGSTRING2_LOW_LEVEL( 
         "MPX My Videos UI # NewVideoListL(count=%d) - Enter", aVideoList.Count() );
         
-    ReplaceVideoArrayL( aVideoList );
+    TBool sameItems = iVideoArray->HasSameItemsL( aVideoList );
+    if ( !sameItems )
+        {
+        ReplaceVideoArrayL( aVideoList );
+        }
     
     TInt videoCount = iVideoArray->VideoCount();         
     if (  videoCount > 0 )
         {
-        ResizeScrollerL( videoCount );
+        if ( !sameItems )
+            {
+            ResizeScrollerL( videoCount );
+            }
 
         TInt firstItemIndex( KErrNotFound );
 
@@ -1312,7 +1145,6 @@
                 
                     if ( ! aSimulated )
                         {
-                        iDownloadUpdater->VideoModifiedL( aEventType, aMpxItemId, aExtraInfo );
                         iDataUpdater->RequestDataL( aMpxItemId );    
 					    }                      
                     iView.DynInitMskL();
@@ -1361,21 +1193,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::ResumeStartedFromBeginningL()
-// Download updater calls this when resume has started from beginning.
-// -----------------------------------------------------------------------------
-// 
-void CVcxHgMyVideosVideoModelHandler::ResumeStartedFromBeginningL( TUint32 aMpxId )
-    {
-    TInt index = iResumeArray.Find( aMpxId );
-    if ( index >= 0 )
-        {
-        iResumeArray.Remove( index );
-        iVideoListImpl.ShowResumeStartsFromBeginningNoteL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // CVcxHgMyVideosVideoModelHandler::VideoDeletionCompletedL()
 // MPX Collection calls this callback when deletion of multiple videos completes.
 // -----------------------------------------------------------------------------
@@ -1555,3 +1372,40 @@
 
     iMarkedMediaList.Reset();
     }
+// -----------------------------------------------------------------------------
+// CVcxHgMyVideosVideoModelHandler::SetVideoLastWatchedL()
+// -----------------------------------------------------------------------------
+//
+void CVcxHgMyVideosVideoModelHandler::SetVideoLastWatchedL( CMPXMedia& aMedia )
+    {    
+    if ( !iRepository )
+        {
+        iRepository = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) );
+        }
+    iRepository->Set( KVcxMyVideosCollectionCenrepKeyLastWatchedMpxId, 
+                      TInt( aMedia.ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ).iId1 ));
+
+    iRepository->Set( KVcxMyVideosCollectionCenrepKeyLastWatchedName,
+                       aMedia.ValueText( KMPXMediaGeneralTitle ));
+
+    iRepository->Set( KVcxMyVideosCollectionCenrepKeyLastWatchedPath,
+                       aMedia.ValueText( KMPXMediaGeneralUri ));
+
+    iRepository->Set( KVcxMyVideosCollectionCenrepKeyLastWatchedIndicator,
+                       TInt( VideoIndicator().IsIndicatorShown( aMedia )) );
+	}
+
+// -----------------------------------------------------------------------------
+// CVcxHgMyVideosVideoModelHandler::ClearNewVideoFlagL()
+// -----------------------------------------------------------------------------
+//
+void CVcxHgMyVideosVideoModelHandler::ClearNewVideoFlagL( CMPXMedia& aMedia )
+    {    
+    TUint32 flags = aMedia.ValueTObjectL<TUint32>( KMPXMediaGeneralFlags );
+    if( flags & EVcxMyVideosVideoNew )
+        {
+        flags &= ~EVcxMyVideosVideoNew;
+        iModel.CollectionClient().SetFlagsL( 
+		    aMedia.ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ), flags );   
+        }    
+    }