homescreenplugins/videochplugin/src/videochlastwatchedupdater.cpp
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenplugins/videochplugin/src/videochlastwatchedupdater.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,248 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:    CVideoChLastWatchedUpdater class definition*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <e32def.h>
+#include <e32cmn.h>
+
+#include <videoplayercustommessage.h>
+
+#include <vcxmyvideosdefs.h>
+#include <vcxmyvideosuids.h>
+#include <mpxcommandgeneraldefs.h>
+
+#include "IptvDebug.h"
+// #include "iptvlastwatchedapi.h"
+// #include "iptvlastwatcheddata.h"
+#include "videochlastwatchedupdater.h"
+#include "videochpublishabledata.h"
+#include "videochpublisher.h"
+#include "vcxnsmediatorids.h" 
+#include "videochmcategorylistener.h"
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ----------------------------------------------------------------------------
+// Constructor
+// ----------------------------------------------------------------------------
+//
+CVcxNsChLastWatchedUpdater::CVcxNsChLastWatchedUpdater(  CVcxNsChPublishableData* aPublishableData,
+                                                         CVcxNsChPublisher* aPublisher ) :
+     iPublishableData( aPublishableData ),
+     iPublisher( aPublisher )
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CVcxNsChLastWatchedUpdater::ConstructL()
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CVcxNsChLastWatchedUpdater::ConstructL IN");
+    
+
+    TVersion mediatorVcxNsPlayerVersion = TVersion( KVcxNsMediatorPlayerVersion, 0, 0 );   
+    TUid domain = KVcxNsVideoCenterMediatorDomain;
+    TUid category = KVcxNsPlayerGeneralCategory;
+    iMPlayerCategoryListener = CVcxNsChMCategoryListener::NewL( this, 
+                                                                domain,
+                                                                category,
+                                                                mediatorVcxNsPlayerVersion );
+
+    iMPlayerCategoryListener->RegisterAndSubscribeL( KVcxNsMediatorEventPlayerLastWatch );
+    iMPlayerCategoryListener->RegisterAndSubscribeL( KVcxNsMediatorEventPreloadedLastWatch );
+    
+    domain = KVcxNsVideoCenterMediatorDomain;
+    category = KVcxNsIPTVGeneralCategory;
+    TVersion mediatorVcxNsIPTVVersion = TVersion( KVcxNsMediatorIPTVVersion, 0, 0 );
+    iMIPTVCategoryListener = CVcxNsChMCategoryListener::NewL( this, 
+                                                              domain,
+                                                              category,
+                                                              mediatorVcxNsIPTVVersion );
+    iMIPTVCategoryListener->RegisterAndSubscribeL( KVcxNsMediatorEventIPTVLastWatch );
+       
+    IPTVLOGSTRING_LOW_LEVEL("CVcxNsChLastWatchedUpdater::ConstructL OUT");
+    }
+
+// ----------------------------------------------------------------------------
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CVcxNsChLastWatchedUpdater* CVcxNsChLastWatchedUpdater::NewL( 
+                                     CVcxNsChPublishableData* aPublishableData,
+                                     CVcxNsChPublisher* aPublisher )
+    {
+    
+    CVcxNsChLastWatchedUpdater* self = new ( ELeave ) CVcxNsChLastWatchedUpdater( 
+                                                                     aPublishableData,
+                                                                     aPublisher  );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CVcxNsChLastWatchedUpdater::~CVcxNsChLastWatchedUpdater()
+    {   
+    delete iMPlayerCategoryListener;
+    delete iMIPTVCategoryListener;
+    }
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void CVcxNsChLastWatchedUpdater::MediatorEventL( TUid aDomain,
+                                                 TUid aCategory,
+                                                 TInt aEventId,
+                                                 const TDesC8& aData )
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CVcxNsChLastWatchedUpdater::MediatorEventL IN");
+    
+    if( aDomain == KVcxNsVideoCenterMediatorDomain )
+        {
+        
+        if( aCategory == KVcxNsPlayerGeneralCategory && 
+            aEventId  == KVcxNsMediatorEventPlayerLastWatch )
+            {       
+            // get data and publish to menu
+            TVideoPlayerCustomMessage* message = new (ELeave) TVideoPlayerCustomMessage;
+            CleanupStack::PushL( message );
+            TPckg< TVideoPlayerCustomMessage > paramsPckg( *message );
+                        
+            paramsPckg.Copy( aData );
+            
+            // save last watched name
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched, 
+                                        TPtrC8( KTvVideoName ),
+                                        message->iName );
+
+            // save last watched path
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched, 
+                                        TPtrC8( KTvVideoPath ),
+                                        message->iContent );
+            
+            // save possible icon
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched, 
+                                        TPtrC8( KTvVideoIconPath ),
+                                        message->iIcon );
+            
+            // save last watched content type, all other than IPTV
+            // can use "last watched" content type
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched, 
+                                        TPtrC8( KTvVideoLastWatchedType ),
+                                        EVCxNsCPContentLastWatched );
+            
+            CleanupStack::PopAndDestroy( message );
+            
+            }
+        else if( aCategory == KVcxNsPlayerGeneralCategory && 
+                 aEventId  == KVcxNsMediatorEventPreloadedLastWatch )
+            {
+            WritePreloadedToLastWatchedL();
+            
+            TPtrC name = 
+                    iPublishableData->GetDesCDataL( EVCxNsCPContentPreloaded,
+                                                    TPtrC8( KTvVideoName ) );
+            // save last watched name
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched,
+                                        TPtrC8( KTvVideoName ),
+                                        name );
+           
+            TPtrC iconPath =
+                    iPublishableData->GetDesCDataL( EVCxNsCPContentPreloaded,
+                                                    TPtrC8( KTvVideoIconPath ) );
+            // save possible icon
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched,
+                                        TPtrC8( KTvVideoIconPath ),
+                                        iconPath ); 
+            
+            // save last watched content type, all other than IPTV
+            // can use "last watched" content type
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched, 
+                                        TPtrC8( KTvVideoLastWatchedType ),
+                                        EVCxNsCPContentLastWatched );
+            }
+        else if( aCategory == KVcxNsIPTVGeneralCategory && 
+                 aEventId  == KVcxNsMediatorEventIPTVLastWatch )
+            {
+            TIPTVMediatorMsg message;
+            TPckg< TIPTVMediatorMsg > paramsPckg( message );
+            paramsPckg.Copy( aData );
+            
+            // save last watched name
+            iPublishableData->SetDataL( EVCxNsCPContentLastWatched,
+                                        TPtrC8( KTvVideoName ),
+                                        message.iChannelName );
+                       
+ 
+             // save possible icon
+             iPublishableData->SetDataL( EVCxNsCPContentLastWatched,
+                                         TPtrC8( KTvVideoIconPath ),
+                                         message.iIconPath ); 
+
+
+            // save last watched type 
+             iPublishableData->SetDataL( EVCxNsCPContentLastWatched, 
+                                         TPtrC8( KTvVideoLastWatchedType ),
+                                         EVCxNsCPContentIPTV );
+            }
+        // publish data
+        iPublisher->PublishContentL( EVCxNsCPContentLastWatched ); 
+        }
+    
+    IPTVLOGSTRING_LOW_LEVEL("CVcxNsChLastWatchedUpdater::MediatorEventL OUT");
+    }
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void CVcxNsChLastWatchedUpdater:: WritePreloadedToLastWatchedL()
+    {
+    /*
+    CIptvLastWatchedData* data =  CIptvLastWatchedData::NewL();
+    CleanupStack::PushL(data);
+    
+    TPtrC name =
+            iPublishableData->GetDesCDataL( EVCxNsCPContentPreloaded,
+                                            TPtrC8( KTvVideoName ) );
+    TPtrC path =
+            iPublishableData->GetDesCDataL( EVCxNsCPContentPreloaded,
+                                            TPtrC8( KTvVideoPath ) );
+    TPtrC iconPath = 
+            iPublishableData->GetDesCDataL( EVCxNsCPContentPreloaded,
+                                            TPtrC8( KTvVideoIconPath ) );
+    
+    data->SetIconPathL( iconPath );
+    data->SetNameL( name );
+    data->SetUriL( path ); 
+    data->SetContentType( KViaPlayerContentTypeFile );
+    data->SetMpxId( KIdUndefined );
+    
+    
+    iPublishableData->LastWatchedApi().SetLastWatchedDataL( *data );
+    CleanupStack::PopAndDestroy(data);
+    */
+    }